Fix webdav prevent immediate upload when webdavAutoSync toggle (#221)

This commit is contained in:
buste
2025-02-21 16:46:22 +08:00
committed by GitHub
parent 4eff50dbed
commit 3efc4794d0
4 changed files with 42 additions and 19 deletions

View File

@@ -190,6 +190,7 @@
"Operation": "操作",
"Upload": "上传",
"Saved": "已保存",
"Saved Failed": "保存失败",
"Sync Data": "同步数据",
"Syncing Data": "正在同步数据",
"Data Sync": "数据同步",
@@ -553,6 +554,7 @@
"Operation": "操作",
"Upload": "上傳",
"Saved": "已保存",
"Saved Failed": "保存失敗",
"Sync Data": "同步數據",
"Syncing Data": "正在同步數據",
"Data Sync": "數據同步",

View File

@@ -56,6 +56,18 @@ void _checkOldConfigs() {
.map((e) => e.key)
.toList();
}
if (appdata.implicitData['webdavAutoSync'] == null) {
var webdavConfig = appdata.settings['webdav'];
if (webdavConfig is List &&
webdavConfig.length == 3 &&
webdavConfig.whereType<String>().length == 3) {
appdata.implicitData['webdavAutoSync'] = true;
} else {
appdata.implicitData['webdavAutoSync'] = false;
}
appdata.writeImplicitData();
}
}
Future<void> _checkAppUpdates() async {

View File

@@ -350,7 +350,15 @@ class _WebdavSettingState extends State<_WebdavSetting> {
user = configs[1];
pass = configs[2];
isEnabled = true;
autoSync = appdata.settings['webdavAutoSync'] ?? false;
autoSync = appdata.implicitData['webdavAutoSync'] ?? false;
}
void onAutoSyncChanged(bool value) {
setState(() {
autoSync = value;
appdata.implicitData['webdavAutoSync'] = value;
appdata.writeImplicitData();
});
}
@override
@@ -364,13 +372,7 @@ class _WebdavSettingState extends State<_WebdavSetting> {
SwitchListTile(
title: Text("WebDAV Auto Sync".tl),
value: autoSync,
onChanged: (value) {
setState(() {
autoSync = value;
appdata.settings['webdavAutoSync'] = value;
appdata.saveData();
});
},
onChanged: onAutoSyncChanged,
),
const SizedBox(height: 12),
TextField(
@@ -448,11 +450,14 @@ class _WebdavSettingState extends State<_WebdavSetting> {
isLoading: isTesting,
onPressed: () async {
var oldConfig = appdata.settings['webdav'];
var oldAutoSync = appdata.settings['webdavAutoSync'];
if (url.trim().isEmpty && user.trim().isEmpty && pass.trim().isEmpty) {
var oldAutoSync = appdata.implicitData['webdavAutoSync'];
if (url.trim().isEmpty &&
user.trim().isEmpty &&
pass.trim().isEmpty) {
appdata.settings['webdav'] = [];
appdata.settings['webdavAutoSync'] = false;
appdata.implicitData['webdavAutoSync'] = false;
appdata.writeImplicitData();
appdata.saveData();
context.showMessage(message: "Saved".tl);
App.rootPop();
@@ -460,7 +465,8 @@ class _WebdavSettingState extends State<_WebdavSetting> {
}
appdata.settings['webdav'] = [url, user, pass];
appdata.settings['webdavAutoSync'] = autoSync;
appdata.implicitData['webdavAutoSync'] = autoSync;
appdata.writeImplicitData();
if (!autoSync) {
appdata.saveData();
@@ -480,13 +486,16 @@ class _WebdavSettingState extends State<_WebdavSetting> {
isTesting = false;
});
appdata.settings['webdav'] = oldConfig;
appdata.settings['webdavAutoSync'] = oldAutoSync;
appdata.implicitData['webdavAutoSync'] = oldAutoSync;
appdata.writeImplicitData();
appdata.saveData();
context.showMessage(message: testResult.errorMessage!);
return;
context.showMessage(message: "Saved Failed".tl);
} else {
appdata.saveData();
context.showMessage(message: "Saved".tl);
App.rootPop();
}
appdata.saveData();
context.showMessage(message: "Saved".tl);
App.rootPop();
},
child: Text("Continue".tl),
),

View File

@@ -44,7 +44,7 @@ class DataSync with ChangeNotifier {
bool get isEnabled {
var config = appdata.settings['webdav'];
var autoSync = appdata.settings['webdavAutoSync'] ?? false;
var autoSync = appdata.implicitData['webdavAutoSync'] ?? false;
return autoSync && config is List && config.isNotEmpty;
}