feat: better backup errors (#2290)

Instead of creating error reports show the error to user
use BackupVersion.unknown
This commit is contained in:
cyan
2025-05-26 11:38:36 +03:00
committed by GitHub
parent d342173239
commit e03dcc7fe9
3 changed files with 18 additions and 8 deletions
+2 -2
View File
@@ -177,7 +177,7 @@ class BackupServiceV3 extends $BackupService {
final archive = ZipDecoder().decodeStream(inputStream);
final metadataFile = archive.findFile('metadata.json');
if (metadataFile == null) {
throw Exception('Invalid v3 backup: missing metadata.json');
return BackupVersion.unknown;
}
final metadataBytes = metadataFile.rawContent!.readBytes();
final metadataString = utf8.decode(metadataBytes);
@@ -188,7 +188,7 @@ class BackupServiceV3 extends $BackupService {
}
}
throw Exception('Invalid backup file: unknown version');
return BackupVersion.unknown;
} finally {
raf.closeSync();
}
@@ -173,8 +173,19 @@ class RestoreFromBackupPage extends BasePage {
return;
}
await restoreFromBackupViewModel.import(textEditingController.text);
try {
await restoreFromBackupViewModel.import(textEditingController.text);
} catch (e) {
await showPopUp<void>(
context: context,
builder: (_) {
return AlertWithOneAction(
alertTitle: S.current.error,
alertContent: e.toString(),
buttonText: S.of(context).ok,
buttonAction: () => Navigator.of(context).pop());
});
}
textEditingController.text = '';
}
}
@@ -45,12 +45,11 @@ abstract class RestoreFromBackupViewModelBase with Store {
try {
await backupService.importBackupFile(file, password);
} catch (e, s) {
} catch (e) {
if (e.toString().contains("unknown_backup_version")) {
state = FailureState('This is not a valid backup file, please make sure you selected the correct backup file');
state = FailureState('This is not a valid backup file, please make sure you have selected the correct one');
} else {
state = FailureState('Failed to restore backup, please try again');
ExceptionHandler.onError(FlutterErrorDetails(exception: e, stack: s));
state = FailureState(e.toString());
}
}