fix: backup merge

This commit is contained in:
lollipopkit
2024-01-27 21:11:40 +08:00
parent dacf8f0864
commit b08265221f
13 changed files with 115 additions and 130 deletions

View File

@@ -183,29 +183,22 @@ abstract final class ICloud {
}
static Future<void> sync() async {
var dlSuccess = false;
try {
final result = await download(relativePath: Paths.bakName);
if (result != null) {
throw result;
}
dlSuccess = true;
} catch (e, s) {
_logger.warning('Download backup failed', e, s);
}
if (!dlSuccess) {
await Backup.backup();
final uploadResult = await upload(relativePath: Paths.bakName);
if (uploadResult != null) {
_logger.warning('Upload backup failed: $uploadResult');
} else {
_logger.info('Upload backup success');
}
final result = await download(relativePath: Paths.bakName);
if (result != null) {
_logger.warning('Download backup failed: $result');
await backup();
return;
}
final dlFile = await File(await Paths.bak).readAsString();
final dlBak = await Computer.shared.start(Backup.fromJsonString, dlFile);
await dlBak.restore();
final dlFile = await File(await Paths.bak).readAsString();
final dlBak = await Computer.shared.start(Backup.fromJsonString, dlFile);
await dlBak.restore();
await backup();
}
static Future<void> backup() async {
await Backup.backup();
final uploadResult = await upload(relativePath: Paths.bakName);
if (uploadResult != null) {

View File

@@ -98,26 +98,19 @@ abstract final class Webdav {
static Future<void> sync() async {
final result = await download(relativePath: Paths.bakName);
if (result != null) {
_logger.warning('Download failed: $result');
await backup();
return;
}
final dlFile = await Computer.shared.start(
(message) async {
try {
final file = await File(message).readAsString();
final bak = Backup.fromJsonString(file);
return bak;
} catch (_) {
return null;
}
},
await Paths.bak,
);
if (dlFile == null) {
await backup();
return;
try {
final dlFile = await File(await Paths.bak).readAsString();
final dlBak = await Computer.shared.start(Backup.fromJsonString, dlFile);
await dlBak.restore();
} catch (e) {
_logger.warning('Restore failed: $e');
}
await dlFile.restore();
await backup();
}