CAKE-208 | changed MoneroBalance to Balance property and handled BitcoinBalance case in the balance_view_model.dart

OleksandrSobol committed Dec 24, 2020 at 22:57 UTC d93c706997031ac9b18a3be4ccc0c00bb77e5664
1 file changed +39 -21
lib/view_model/dashboard/balance_view_model.dart
+39 -21
@@ -1,5 +1,7 @@
1 +import 'package:cake_wallet/bitcoin/bitcoin_balance.dart';
2 import 'package:cake_wallet/bitcoin/bitcoin_wallet.dart';
3 import 'package:cake_wallet/core/wallet_base.dart';
4 +import 'package:cake_wallet/entities/balance.dart';
5 import 'package:cake_wallet/entities/crypto_currency.dart';
6 import 'package:cake_wallet/monero/monero_balance.dart';
7 import 'package:cake_wallet/monero/monero_wallet.dart';
@@ -31,10 +33,17 @@ abstract class BalanceViewModelBase with Store {
33 final _wallet = wallet;
34
35 if (_wallet is MoneroWallet) {
34 - moneroBalance = _wallet.balance;
36 + balance = _wallet.balance;
37
38 _onMoneroBalanceChangeReaction = reaction((_) => _wallet.balance,
37 - (MoneroBalance balance) => moneroBalance = balance);
39 + (MoneroBalance moneroBalance) => balance = moneroBalance);
40 + }
41 +
42 + if (_wallet is BitcoinWallet) {
43 + balance = _wallet.balance;
44 +
45 + _onBitcoinBalanceChangeReaction = reaction((_) => _wallet.balance,
46 + (BitcoinBalance bitcoinBalance) => balance = bitcoinBalance);
47 }
48 }
49
@@ -49,7 +58,7 @@ abstract class BalanceViewModelBase with Store {
58 bool isReversing;
59
60 @observable
52 - MoneroBalance moneroBalance;
61 + Balance balance;
62
63 @observable
64 WalletBase wallet;
@@ -70,24 +79,24 @@ abstract class BalanceViewModelBase with Store {
79 @computed
80 String get cryptoBalance {
81 final walletBalance = _walletBalance;
73 - var balance = '---';
82 + var _balance = '---';
83
84 if (displayMode == BalanceDisplayMode.availableBalance) {
76 - balance = walletBalance.unlockedBalance ?? '0.0';
85 + _balance = walletBalance.unlockedBalance ?? '0.0';
86 }
87
88 if (displayMode == BalanceDisplayMode.fullBalance) {
80 - balance = walletBalance.totalBalance ?? '0.0';
89 + _balance = walletBalance.totalBalance ?? '0.0';
90 }
91
83 - return balance;
92 + return _balance;
93 }
94
95 @computed
96 String get fiatBalance {
97 final walletBalance = _walletBalance;
98 final fiatCurrency = settingsStore.fiatCurrency;
90 - var balance = '---';
99 + var _balance = '---';
100
101 final totalBalance =
102 _getFiatBalance(price: price, cryptoAmount: walletBalance.totalBalance);
@@ -96,30 +105,30 @@ abstract class BalanceViewModelBase with Store {
105 price: price, cryptoAmount: walletBalance.unlockedBalance);
106
107 if (displayMode == BalanceDisplayMode.availableBalance) {
99 - balance = fiatCurrency.toString() + ' ' + unlockedBalance ?? '0.00';
108 + _balance = fiatCurrency.toString() + ' ' + unlockedBalance ?? '0.00';
109 }
110
111 if (displayMode == BalanceDisplayMode.fullBalance) {
103 - balance = fiatCurrency.toString() + ' ' + totalBalance ?? '0.00';
112 + _balance = fiatCurrency.toString() + ' ' + totalBalance ?? '0.00';
113 }
114
106 - return balance;
115 + return _balance;
116 }
117
118 @computed
119 WalletBalance get _walletBalance {
111 - final _wallet = wallet;
120 + final _balance = balance;
121
113 - if (_wallet is MoneroWallet) {
122 + if (_balance is MoneroBalance) {
123 return WalletBalance(
115 - unlockedBalance: moneroBalance.formattedUnlockedBalance,
116 - totalBalance: moneroBalance.formattedFullBalance);
124 + unlockedBalance: _balance.formattedUnlockedBalance,
125 + totalBalance: _balance.formattedFullBalance);
126 }
127
119 - if (_wallet is BitcoinWallet) {
128 + if (_balance is BitcoinBalance) {
129 return WalletBalance(
121 - unlockedBalance: _wallet.balance.availableBalanceFormatted,
122 - totalBalance: _wallet.balance.totalFormatted);
130 + unlockedBalance: _balance.availableBalanceFormatted,
131 + totalBalance: _balance.totalFormatted);
132 }
133
134 return null;
@@ -133,17 +142,26 @@ abstract class BalanceViewModelBase with Store {
142 this.wallet = wallet;
143
144 if (wallet is MoneroWallet) {
136 - moneroBalance = wallet.balance;
145 + balance = wallet.balance;
146
147 _onMoneroBalanceChangeReaction?.reaction?.dispose();
148
149 _onMoneroBalanceChangeReaction = reaction((_) => wallet.balance,
141 - (MoneroBalance balance) => moneroBalance = balance);
150 + (MoneroBalance moneroBalance) => balance = moneroBalance);
151 + }
152 +
153 + if (wallet is BitcoinWallet) {
154 + balance = wallet.balance;
155 +
156 + _onBitcoinBalanceChangeReaction?.reaction?.dispose();
157 +
158 + _onBitcoinBalanceChangeReaction = reaction((_) => wallet.balance,
159 + (BitcoinBalance bitcoinBalance) => balance = bitcoinBalance);
160 }
161 }
162
163 ReactionDisposer _onMoneroBalanceChangeReaction;
146 -
164 + ReactionDisposer _onBitcoinBalanceChangeReaction;
165 ReactionDisposer _reaction;
166
167 String _getFiatBalance({double price, String cryptoAmount}) {