dev
dart 49 lines 1.32 KB
Raw
1 import 'package:cake_wallet/bitcoin/bitcoin.dart';
2 import 'package:cw_core/wallet_base.dart';
3 import 'package:cw_core/wallet_type.dart';
4 import 'package:mobx/mobx.dart';
5
6 part 'rescan_view_model.g.dart';
7
8 class RescanViewModel = RescanViewModelBase with _$RescanViewModel;
9
10 enum RescanWalletState { rescaning, none }
11
12 abstract class RescanViewModelBase with Store {
13 RescanViewModelBase(this.wallet)
14 : state = RescanWalletState.none,
15 isButtonEnabled = false,
16 doSingleScan = false;
17
18 final WalletBase wallet;
19
20 @observable
21 RescanWalletState state;
22
23 @observable
24 bool isButtonEnabled;
25
26 @observable
27 bool doSingleScan;
28
29 @computed
30 bool get isSilentPaymentsScan => wallet.type == WalletType.bitcoin;
31
32 @computed
33 bool get isMwebScan => wallet.type == WalletType.litecoin;
34
35 Future<bool> get isBitcoinMempoolAPIEnabled async =>
36 wallet.type == WalletType.bitcoin && await bitcoin!.checkIfMempoolAPIIsEnabled(wallet);
37
38 @action
39 Future<void> rescanCurrentWallet({required int restoreHeight}) async {
40 state = RescanWalletState.rescaning;
41 if (wallet.type != WalletType.bitcoin) {
42 wallet.rescan(height: restoreHeight);
43 wallet.transactionHistory.clear();
44 } else {
45 bitcoin!.rescan(wallet, height: restoreHeight, doSingleScan: doSingleScan);
46 }
47 state = RescanWalletState.none;
48 }
49 }