From e829f567e574ad375eccfab9fe71bc0e6f91c19e Mon Sep 17 00:00:00 2001 From: nyne <67669799+wgh136@users.noreply.github.com> Date: Fri, 21 Feb 2025 10:25:06 +0800 Subject: [PATCH] Revert "Improve WebDAV data sync version handling and force sync (#207)" (#218) This reverts commit a630771f0bdf611deea69b29e54c86559ad560be. --- assets/translation.json | 2 -- lib/init.dart | 12 -------- lib/pages/settings/app.dart | 13 ++++---- lib/utils/data_sync.dart | 60 +++++++++++++++---------------------- 4 files changed, 30 insertions(+), 57 deletions(-) diff --git a/assets/translation.json b/assets/translation.json index 8d4f849..7f27d3d 100644 --- a/assets/translation.json +++ b/assets/translation.json @@ -190,7 +190,6 @@ "Operation": "操作", "Upload": "上传", "Saved": "已保存", - "Saved Failed": "保存失败", "Sync Data": "同步数据", "Syncing Data": "正在同步数据", "Data Sync": "数据同步", @@ -554,7 +553,6 @@ "Operation": "操作", "Upload": "上傳", "Saved": "已保存", - "Saved Failed": "保存失敗", "Sync Data": "同步數據", "Syncing Data": "正在同步數據", "Data Sync": "數據同步", diff --git a/lib/init.dart b/lib/init.dart index ad18abd..6f8bcda 100644 --- a/lib/init.dart +++ b/lib/init.dart @@ -56,18 +56,6 @@ void _checkOldConfigs() { .map((e) => e.key) .toList(); } - - if (appdata.settings['webdavAutoSync'] == null) { - var webdavConfig = appdata.settings['webdav']; - if (webdavConfig is List && - webdavConfig.length == 3 && - webdavConfig.whereType().length == 3) { - appdata.settings['webdavAutoSync'] = true; - } else { - appdata.settings['webdavAutoSync'] = false; - } - appdata.saveData(); - } } Future _checkAppUpdates() async { diff --git a/lib/pages/settings/app.dart b/lib/pages/settings/app.dart index cc7202d..9dbd3ee 100644 --- a/lib/pages/settings/app.dart +++ b/lib/pages/settings/app.dart @@ -473,8 +473,8 @@ class _WebdavSettingState extends State<_WebdavSetting> { isTesting = true; }); var testResult = upload - ? await DataSync().uploadData(forceSync: true) - : await DataSync().downloadData(forceSync: true); + ? await DataSync().uploadData() + : await DataSync().downloadData(); if (testResult.error) { setState(() { isTesting = false; @@ -482,12 +482,11 @@ class _WebdavSettingState extends State<_WebdavSetting> { appdata.settings['webdav'] = oldConfig; appdata.settings['webdavAutoSync'] = oldAutoSync; context.showMessage(message: testResult.errorMessage!); - context.showMessage(message: "Saved Failed".tl); - } else { - appdata.saveData(); - context.showMessage(message: "Saved".tl); - App.rootPop(); + return; } + appdata.saveData(); + context.showMessage(message: "Saved".tl); + App.rootPop(); }, child: Text("Continue".tl), ), diff --git a/lib/utils/data_sync.dart b/lib/utils/data_sync.dart index f644385..3cd9937 100644 --- a/lib/utils/data_sync.dart +++ b/lib/utils/data_sync.dart @@ -58,7 +58,7 @@ class DataSync with ChangeNotifier { return List.from(config); } - Future> uploadData({bool forceSync = false}) async { + Future> uploadData() async { if (isDownloading) return const Res(true); if (haveWaitingTask) return const Res(true); while (isUploading) { @@ -102,32 +102,20 @@ class DataSync with ChangeNotifier { } try { - var files = await client.readDir('/'); - files = files.where((e) => e.name!.endsWith('.venera')).toList(); - files.sort((a, b) => b.name!.compareTo(a.name!)); - var remoteFile = files.firstWhereOrNull((e) => e.name!.endsWith('.venera')); - var remoteVersion = 0; - if (remoteFile != null) { - remoteVersion = int.tryParse(remoteFile.name!.split('-').elementAtOrNull(1)?.split('.').first ?? '0') ?? 0; - } - var localVersion = appdata.settings['dataVersion'] ?? 0; - - if (!forceSync && remoteVersion >= localVersion) { - Log.info("Data Sync", 'Local: $localVersion Remote: $remoteVersion Skip upload ForceSync: $forceSync'); - return const Res(true); - } - - appdata.settings['dataVersion'] = forceSync ? remoteVersion + 1 : localVersion + 1; + appdata.settings['dataVersion']++; await appdata.saveData(false); var data = await exportAppData(); - var time = (DateTime.now().millisecondsSinceEpoch ~/ 86400000).toString(); - var filename = '$time-${appdata.settings['dataVersion']}.venera'; - - if (!forceSync) { - var old = files.firstWhereOrNull((e) => e.name!.startsWith("$time-")); - if (old != null) { - await client.remove(old.name!); - } + var time = + (DateTime.now().millisecondsSinceEpoch ~/ 86400000).toString(); + var filename = time; + filename += '-'; + filename += appdata.settings['dataVersion'].toString(); + filename += '.venera'; + var files = await client.readDir('/'); + files = files.where((e) => e.name!.endsWith('.venera')).toList(); + var old = files.firstWhereOrNull((e) => e.name!.startsWith("$time-")); + if (old != null) { + await client.remove(old.name!); } if (files.length >= 10) { files.sort((a, b) => a.name!.compareTo(b.name!)); @@ -135,7 +123,7 @@ class DataSync with ChangeNotifier { } await client.write(filename, await data.readAsBytes()); data.deleteIgnoreError(); - Log.info("Data Sync", "Local: ${appdata.settings['dataVersion']} Remote: $remoteVersion Data uploaded successfully ForceSync: $forceSync"); + Log.info("Upload Data", "Data uploaded successfully"); return const Res(true); } catch (e, s) { Log.error("Upload Data", e, s); @@ -147,7 +135,7 @@ class DataSync with ChangeNotifier { } } - Future> downloadData({bool forceSync = false}) async { + Future> downloadData() async { if (haveWaitingTask) return const Res(true); while (isDownloading || isUploading) { haveWaitingTask = true; @@ -196,16 +184,16 @@ class DataSync with ChangeNotifier { if (file == null) { throw 'No data file found'; } - var version = file.name!.split('-').elementAtOrNull(1)?.split('.').first; - var remoteVersion = int.tryParse(version ?? '') ?? 0; - var localVersion = appdata.settings['dataVersion'] ?? 0; - - if (!forceSync && remoteVersion <= localVersion) { - Log.info("Data Sync", 'Local: $localVersion Remote: $remoteVersion Skip download ForceSync: $forceSync'); - return const Res(true); + var version = + file.name!.split('-').elementAtOrNull(1)?.split('.').first; + if (version != null && int.tryParse(version) != null) { + var currentVersion = appdata.settings['dataVersion']; + if (currentVersion != null && int.parse(version) <= currentVersion) { + Log.info("Data Sync", 'No new data to download'); + return const Res(true); + } } - - Log.info("Data Sync", "Local: $localVersion Remote: $remoteVersion Downloading data ForceSync: $forceSync"); + Log.info("Data Sync", "Downloading data from WebDAV server"); var localFile = File(FilePath.join(App.cachePath, file.name!)); await client.read2File(file.name!, localFile.path); await importAppData(localFile, true);