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

View File

@@ -56,6 +56,18 @@ void _checkOldConfigs() {
.map((e) => e.key) .map((e) => e.key)
.toList(); .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 { Future<void> _checkAppUpdates() async {

View File

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

View File

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