import 'package:cw_core/monero_amount_format.dart'; import 'package:mobx/mobx.dart'; import 'package:cw_core/account.dart'; import 'package:cw_nano/api/account_list.dart' as account_list; part 'nano_account_list.g.dart'; class NanoAccountList = NanoAccountListBase with _$NanoAccountList; abstract class NanoAccountListBase with Store { NanoAccountListBase() : accounts = ObservableList(), _isRefreshing = false, _isUpdating = false { // refresh(); } @observable ObservableList accounts; bool _isRefreshing; bool _isUpdating; void update() async { if (_isUpdating) { return; } try { _isUpdating = true; refresh(); final accounts = getAll(); if (accounts.isNotEmpty) { this.accounts.clear(); this.accounts.addAll(accounts); } _isUpdating = false; } catch (e) { _isUpdating = false; rethrow; } } List getAll() => account_list.getAllAccount().map((accountRow) { final accountIndex = accountRow.getId(); return Account( id: accountRow.getId(), label: accountRow.getLabel(), balance: "01", ); }).toList(); Future addAccount({required String label}) async { await account_list.addAccount(label: label); update(); } Future setLabelAccount({required int accountIndex, required String label}) async { await account_list.setLabelForAccount(accountIndex: accountIndex, label: label); update(); } void refresh() { if (_isRefreshing) { return; } try { _isRefreshing = true; account_list.refreshAccounts(); _isRefreshing = false; } catch (e) { _isRefreshing = false; print(e); rethrow; } } }