dev
dart 47 lines 1.29 KB
Raw
1 import 'package:cake_wallet/core/secure_storage.dart';
2 import 'package:cake_wallet/entities/default_settings_migration.dart' show generateBackupPassword;
3 import 'package:mobx/mobx.dart';
4 import 'package:cake_wallet/entities/secret_store_key.dart';
5
6 part 'edit_backup_password_view_model.g.dart';
7
8 class EditBackupPasswordViewModel = EditBackupPasswordViewModelBase
9 with _$EditBackupPasswordViewModel;
10
11 abstract class EditBackupPasswordViewModelBase with Store {
12 EditBackupPasswordViewModelBase(
13 this.secureStorage,
14 ) : backupPassword = "",
15 _originalPassword = '' {
16 init();
17 }
18
19 final SecureStorage secureStorage;
20
21 @observable
22 String backupPassword;
23
24 @computed
25 bool get canSave {
26 return !(_originalPassword == backupPassword);
27 }
28
29 String _originalPassword;
30
31 @action
32 Future<void> init() async {
33 final key = generateStoreKeyFor(key: SecretStoreKey.backupPassword);
34 final password = (await secureStorage.read(key: key)) ?? '';
35 if (backupPassword.isEmpty) {
36 generateBackupPassword(secureStorage);
37 }
38 _originalPassword = password;
39 backupPassword = password;
40 }
41
42 @action
43 Future<void> save() async {
44 final key = generateStoreKeyFor(key: SecretStoreKey.backupPassword);
45 await secureStorage.write(key: key, value: backupPassword);
46 }
47 }