CAKE-158 | made account tile slidable; added onEdit function to account tile; added ability to edit wallet account name; added isFirstAddress parameter to wallet_address_list_view_model.dart and made first address in the address list not editable (receive page); wrapped wallet account name in the wallet menu title by observer; added _moneroTransactionsChangeReaction to dashboard_view_model.dart

This commit is contained in:
OleksandrSobol
2020-11-17 20:16:58 +02:00
parent f704bdc864
commit 23abacd252
11 changed files with 97 additions and 11 deletions
@@ -1,6 +1,8 @@
import 'package:cake_wallet/bitcoin/bitcoin_transaction_info.dart';
import 'package:cake_wallet/bitcoin/bitcoin_wallet.dart';
import 'package:cake_wallet/entities/transaction_history.dart';
import 'package:cake_wallet/monero/account.dart';
import 'package:cake_wallet/monero/monero_transaction_history.dart';
import 'package:cake_wallet/monero/monero_wallet.dart';
import 'package:cake_wallet/entities/balance_display_mode.dart';
import 'package:cake_wallet/entities/crypto_currency.dart';
@@ -85,6 +87,10 @@ abstract class DashboardViewModelBase with Store {
_onMoneroAccountChangeReaction = reaction((_) => _wallet.account,
(Account account) => _onMoneroAccountChange(_wallet));
_onMoneroTransactionsChangeReaction = reaction((_) => _wallet.transactionHistory,
(MoneroTransactionHistory transactionHistory) =>
_onMoneroTransactionsChange(_wallet));
final _accountTransactions = _wallet
.transactionHistory.transactions.values
.where((tx) => tx.accountIndex == _wallet.account.id).toList();
@@ -187,6 +193,8 @@ abstract class DashboardViewModelBase with Store {
ReactionDisposer _onMoneroAccountChangeReaction;
ReactionDisposer _onMoneroTransactionsChangeReaction;
Future<void> reconnect() async {
final node = appStore.settingsStore.getCurrentNode(wallet.type);
await wallet.connectToNode(node: node);
@@ -199,6 +207,18 @@ abstract class DashboardViewModelBase with Store {
transactions.clear();
if (wallet is MoneroWallet) {
subname = wallet.account?.label;
_onMoneroAccountChangeReaction?.reaction?.dispose();
_onMoneroTransactionsChangeReaction?.reaction?.dispose();
_onMoneroAccountChangeReaction = reaction((_) => wallet.account,
(Account account) => _onMoneroAccountChange(wallet));
_onMoneroTransactionsChangeReaction = reaction((_) => wallet.transactionHistory,
(MoneroTransactionHistory transactionHistory) =>
_onMoneroTransactionsChange(wallet));
final _accountTransactions = wallet
.transactionHistory.transactions.values
.where((tx) => tx.accountIndex == wallet.account.id).toList();
@@ -219,6 +239,22 @@ abstract class DashboardViewModelBase with Store {
@action
void _onMoneroAccountChange(MoneroWallet wallet) {
subname = wallet.account?.label;
transactions.clear();
final _accountTransactions = wallet
.transactionHistory.transactions.values
.where((tx) => tx.accountIndex == wallet.account.id).toList();
transactions.addAll(_accountTransactions
.map((transaction) => TransactionListItem(
transaction: transaction,
balanceViewModel: balanceViewModel,
settingsStore: appStore.settingsStore)));
}
@action
void _onMoneroTransactionsChange(MoneroWallet wallet) {
transactions.clear();
final _accountTransactions = wallet
@@ -13,6 +13,7 @@ abstract class MoneroAccountEditOrCreateViewModelBase with Store {
{AccountListItem accountListItem})
: state = InitialExecutionState(),
isEdit = accountListItem != null,
label = accountListItem?.label??'',
_accountListItem = accountListItem;
final bool isEdit;
@@ -67,6 +67,9 @@ abstract class WalletAddressListViewModelBase with Store {
@observable
String amount;
@observable
bool isFirstAddress;
@computed
WalletType get type => _wallet.type;
@@ -97,6 +100,7 @@ abstract class WalletAddressListViewModelBase with Store {
final addressList = ObservableList<ListItem>();
if (wallet is MoneroWallet) {
isFirstAddress = true;
addressList.addAll(wallet.subaddressList.subaddresses.map((subaddress) =>
WalletAddressListItem(
id: subaddress.id,