Better handle backup errors (#2132)
Omar Hatem committed
Mar 28, 2025 at 16:17 UTC
b1e5d1503e40effe58b5cf92b38d6fa7b18f2200
2 files changed
+13
-5
lib/core/backup_service_v3.dart
+1
-1
@@ -198,7 +198,7 @@ class BackupServiceV3 extends $BackupService {
198
final version = getVersionFile(file);
199
switch (version) {
200
case BackupVersion.unknown:
201
- throw Exception('Invalid backup file: unknown version');
201
+ throw Exception('unknown_backup_version');
202
case BackupVersion.v1:
203
final data = file.readAsBytesSync();
204
final backupBytes = data.toList()..removeAt(0);
lib/view_model/restore_from_backup_view_model.dart
+12
-4
@@ -7,7 +7,6 @@ import 'package:hive/hive.dart';
7
import 'package:mobx/mobx.dart';
8
import 'package:cake_wallet/main.dart';
9
import 'package:cake_wallet/di.dart';
10
-import 'package:cake_wallet/core/backup_service.dart';
10
import 'package:cw_core/node.dart';
11
import 'package:cake_wallet/store/app_store.dart';
12
import 'package:cake_wallet/store/authentication_store.dart';
@@ -44,13 +43,22 @@ abstract class RestoreFromBackupViewModelBase with Store {
43
44
final file = File(filePath);
45
47
-
48
- await backupService.importBackupFile(file, password);
46
+ try {
47
+ await backupService.importBackupFile(file, password);
48
+ } catch (e, s) {
49
+ if (e.toString().contains("unknown_backup_version")) {
50
+ state = FailureState('This is not a valid backup file, please make sure you selected the correct backup file');
51
+ } else {
52
+ state = FailureState('Failed to restore backup, please try again');
53
+ ExceptionHandler.onError(FlutterErrorDetails(exception: e, stack: s, silent: true));
54
+ }
55
+ }
56
57
try {
58
await initializeAppAtRoot(reInitializing: true);
59
} catch (e, s) {
53
- throw Exception('failed_app_initialization: $e $s');
60
+ state = FailureState('Failed app initialization, please try again');
61
+ ExceptionHandler.onError(FlutterErrorDetails(exception: e, stack: s, silent: true));
62
}
63
64
final store = getIt.get<AppStore>();