dev
dart 59 lines 1.54 KB
Raw
1 import 'package:cw_core/cake_hive.dart';
2 import 'package:cw_core/payment_uris.dart';
3 import 'package:cw_core/utils/print_verbose.dart';
4 import 'package:cw_core/wallet_addresses.dart';
5 import 'package:cw_core/wallet_info.dart';
6 import 'package:cw_core/nano_account.dart';
7 import 'package:cw_nano/nano_account_list.dart';
8 import 'package:mobx/mobx.dart';
9
10 part 'nano_wallet_addresses.g.dart';
11
12 class NanoWalletAddresses = NanoWalletAddressesBase with _$NanoWalletAddresses;
13
14 abstract class NanoWalletAddressesBase extends WalletAddresses with Store {
15 NanoWalletAddressesBase(WalletInfo walletInfo)
16 : accountList = NanoAccountList(walletInfo.address),
17 address = '',
18 super(walletInfo);
19
20 @override
21 @observable
22 String address;
23
24 @override
25 String get primaryAddress => address;
26
27 @observable
28 NanoAccount? account;
29
30 NanoAccountList accountList;
31
32 @override
33 Future<void> init() async {
34 var box = await CakeHive.openBox<NanoAccount>(walletInfo.address);
35 try {
36 box.getAt(0);
37 } catch (e) {
38 box.add(NanoAccount(id: 0, label: "Primary Account", balance: "0.00"));
39 }
40
41 await accountList.update(walletInfo.address);
42 account = accountList.accounts.first;
43 address = walletInfo.address;
44 }
45
46 @override
47 Future<void> updateAddressesInBox() async {
48 try {
49 addressesMap.clear();
50 addressesMap[address] = '';
51 await saveAddressesInBox();
52 } catch (e) {
53 printV(e.toString());
54 }
55 }
56
57 @override
58 PaymentURI getPaymentUri(String amount) => NanoURI(amount: amount, address: address);
59 }