dev
dart 60 lines 1.47 KB
Raw
1 import 'package:cake_wallet/generated/i18n.dart';
2 import 'package:cake_wallet/store/app_store.dart';
3 import 'package:mobx/mobx.dart';
4 import 'package:cw_core/wallet_type.dart';
5 import 'package:cake_wallet/core/execution_state.dart';
6 import 'package:cake_wallet/view_model/wallet_unlock_view_model.dart';
7
8 part 'wallet_unlock_verifiable_view_model.g.dart';
9
10 class WalletUnlockVerifiableViewModel = WalletUnlockVerifiableViewModelBase
11 with _$WalletUnlockVerifiableViewModel;
12
13 abstract class WalletUnlockVerifiableViewModelBase extends WalletUnlockViewModel with Store {
14 WalletUnlockVerifiableViewModelBase(this.appStore,
15 {required this.walletName, required this.walletType})
16 : password = '',
17 state = InitialExecutionState();
18
19 final String walletName;
20
21 final WalletType walletType;
22
23 final AppStore appStore;
24
25 @override
26 @observable
27 String password;
28
29 @override
30 @observable
31 ExecutionState state;
32
33 @override
34 @action
35 void setPassword(String password) => this.password = password;
36
37 @override
38 @action
39 Future<void> unlock() async {
40 try {
41 state = appStore.wallet!.password == password
42 ? ExecutedSuccessfullyState()
43 : FailureState(S.current.invalid_password);
44 } catch (e) {
45 failure('${S.current.invalid_password}\n${e.toString()}');
46 }
47 }
48
49 @override
50 @action
51 void success() {
52 state = ExecutedSuccessfullyState();
53 }
54
55 @override
56 @action
57 void failure(e) {
58 state = FailureState(e.toString());
59 }
60 }