mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2025-01-24 11:36:21 +00:00
Merge pull request #155 from cake-tech/CAKE-208-bug-after-balance-changing
CAKE-208 | added current balance display mode saving to shared prefer…
This commit is contained in:
commit
43fc4032f4
2 changed files with 83 additions and 19 deletions
|
@ -85,6 +85,11 @@ abstract class SettingsStoreBase with Store {
|
||||||
(String languageCode) => sharedPreferences.setString(
|
(String languageCode) => sharedPreferences.setString(
|
||||||
PreferencesKey.currentLanguageCode, languageCode));
|
PreferencesKey.currentLanguageCode, languageCode));
|
||||||
|
|
||||||
|
reaction((_) => balanceDisplayMode,
|
||||||
|
(BalanceDisplayMode mode) => sharedPreferences.setInt(
|
||||||
|
PreferencesKey.currentBalanceDisplayModeKey,
|
||||||
|
mode.serialize()));
|
||||||
|
|
||||||
this
|
this
|
||||||
.nodes
|
.nodes
|
||||||
.observe((change) => _saveCurrentNode(change.newValue, change.key));
|
.observe((change) => _saveCurrentNode(change.newValue, change.key));
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
|
import 'package:cake_wallet/bitcoin/bitcoin_balance.dart';
|
||||||
import 'package:cake_wallet/bitcoin/bitcoin_wallet.dart';
|
import 'package:cake_wallet/bitcoin/bitcoin_wallet.dart';
|
||||||
|
import 'package:cake_wallet/core/wallet_base.dart';
|
||||||
|
import 'package:cake_wallet/entities/balance.dart';
|
||||||
import 'package:cake_wallet/entities/crypto_currency.dart';
|
import 'package:cake_wallet/entities/crypto_currency.dart';
|
||||||
|
import 'package:cake_wallet/monero/monero_balance.dart';
|
||||||
import 'package:cake_wallet/monero/monero_wallet.dart';
|
import 'package:cake_wallet/monero/monero_wallet.dart';
|
||||||
import 'package:cake_wallet/entities/balance_display_mode.dart';
|
import 'package:cake_wallet/entities/balance_display_mode.dart';
|
||||||
import 'package:cake_wallet/entities/calculate_fiat_amount.dart';
|
import 'package:cake_wallet/entities/calculate_fiat_amount.dart';
|
||||||
|
@ -18,8 +22,30 @@ abstract class BalanceViewModelBase with Store {
|
||||||
BalanceViewModelBase(
|
BalanceViewModelBase(
|
||||||
{@required this.appStore,
|
{@required this.appStore,
|
||||||
@required this.settingsStore,
|
@required this.settingsStore,
|
||||||
@required this.fiatConvertationStore})
|
@required this.fiatConvertationStore
|
||||||
: isReversing = false;
|
}){
|
||||||
|
isReversing = false;
|
||||||
|
|
||||||
|
wallet ??= appStore.wallet;
|
||||||
|
|
||||||
|
_reaction = reaction((_) => appStore.wallet, _onWalletChange);
|
||||||
|
|
||||||
|
final _wallet = wallet;
|
||||||
|
|
||||||
|
if (_wallet is MoneroWallet) {
|
||||||
|
balance = _wallet.balance;
|
||||||
|
|
||||||
|
_onMoneroBalanceChangeReaction = reaction((_) => _wallet.balance,
|
||||||
|
(MoneroBalance moneroBalance) => balance = moneroBalance);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_wallet is BitcoinWallet) {
|
||||||
|
balance = _wallet.balance;
|
||||||
|
|
||||||
|
_onBitcoinBalanceChangeReaction = reaction((_) => _wallet.balance,
|
||||||
|
(BitcoinBalance bitcoinBalance) => balance = bitcoinBalance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
final AppStore appStore;
|
final AppStore appStore;
|
||||||
final SettingsStore settingsStore;
|
final SettingsStore settingsStore;
|
||||||
|
@ -31,6 +57,12 @@ abstract class BalanceViewModelBase with Store {
|
||||||
@observable
|
@observable
|
||||||
bool isReversing;
|
bool isReversing;
|
||||||
|
|
||||||
|
@observable
|
||||||
|
Balance balance;
|
||||||
|
|
||||||
|
@observable
|
||||||
|
WalletBase wallet;
|
||||||
|
|
||||||
@computed
|
@computed
|
||||||
double get price => fiatConvertationStore.prices[appStore.wallet.currency];
|
double get price => fiatConvertationStore.prices[appStore.wallet.currency];
|
||||||
|
|
||||||
|
@ -47,24 +79,24 @@ abstract class BalanceViewModelBase with Store {
|
||||||
@computed
|
@computed
|
||||||
String get cryptoBalance {
|
String get cryptoBalance {
|
||||||
final walletBalance = _walletBalance;
|
final walletBalance = _walletBalance;
|
||||||
var balance = '---';
|
var _balance = '---';
|
||||||
|
|
||||||
if (displayMode == BalanceDisplayMode.availableBalance) {
|
if (displayMode == BalanceDisplayMode.availableBalance) {
|
||||||
balance = walletBalance.unlockedBalance ?? '0.0';
|
_balance = walletBalance.unlockedBalance ?? '0.0';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (displayMode == BalanceDisplayMode.fullBalance) {
|
if (displayMode == BalanceDisplayMode.fullBalance) {
|
||||||
balance = walletBalance.totalBalance ?? '0.0';
|
_balance = walletBalance.totalBalance ?? '0.0';
|
||||||
}
|
}
|
||||||
|
|
||||||
return balance;
|
return _balance;
|
||||||
}
|
}
|
||||||
|
|
||||||
@computed
|
@computed
|
||||||
String get fiatBalance {
|
String get fiatBalance {
|
||||||
final walletBalance = _walletBalance;
|
final walletBalance = _walletBalance;
|
||||||
final fiatCurrency = settingsStore.fiatCurrency;
|
final fiatCurrency = settingsStore.fiatCurrency;
|
||||||
var balance = '---';
|
var _balance = '---';
|
||||||
|
|
||||||
final totalBalance =
|
final totalBalance =
|
||||||
_getFiatBalance(price: price, cryptoAmount: walletBalance.totalBalance);
|
_getFiatBalance(price: price, cryptoAmount: walletBalance.totalBalance);
|
||||||
|
@ -73,30 +105,30 @@ abstract class BalanceViewModelBase with Store {
|
||||||
price: price, cryptoAmount: walletBalance.unlockedBalance);
|
price: price, cryptoAmount: walletBalance.unlockedBalance);
|
||||||
|
|
||||||
if (displayMode == BalanceDisplayMode.availableBalance) {
|
if (displayMode == BalanceDisplayMode.availableBalance) {
|
||||||
balance = fiatCurrency.toString() + ' ' + unlockedBalance ?? '0.00';
|
_balance = fiatCurrency.toString() + ' ' + unlockedBalance ?? '0.00';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (displayMode == BalanceDisplayMode.fullBalance) {
|
if (displayMode == BalanceDisplayMode.fullBalance) {
|
||||||
balance = fiatCurrency.toString() + ' ' + totalBalance ?? '0.00';
|
_balance = fiatCurrency.toString() + ' ' + totalBalance ?? '0.00';
|
||||||
}
|
}
|
||||||
|
|
||||||
return balance;
|
return _balance;
|
||||||
}
|
}
|
||||||
|
|
||||||
@computed
|
@computed
|
||||||
WalletBalance get _walletBalance {
|
WalletBalance get _walletBalance {
|
||||||
final _wallet = appStore.wallet;
|
final _balance = balance;
|
||||||
|
|
||||||
if (_wallet is MoneroWallet) {
|
if (_balance is MoneroBalance) {
|
||||||
return WalletBalance(
|
return WalletBalance(
|
||||||
unlockedBalance: _wallet.balance.formattedUnlockedBalance,
|
unlockedBalance: _balance.formattedUnlockedBalance,
|
||||||
totalBalance: _wallet.balance.formattedFullBalance);
|
totalBalance: _balance.formattedFullBalance);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_wallet is BitcoinWallet) {
|
if (_balance is BitcoinBalance) {
|
||||||
return WalletBalance(
|
return WalletBalance(
|
||||||
unlockedBalance: _wallet.balance.availableBalanceFormatted,
|
unlockedBalance: _balance.availableBalanceFormatted,
|
||||||
totalBalance: _wallet.balance.totalFormatted);
|
totalBalance: _balance.totalFormatted);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
@ -105,6 +137,33 @@ abstract class BalanceViewModelBase with Store {
|
||||||
@computed
|
@computed
|
||||||
CryptoCurrency get currency => appStore.wallet.currency;
|
CryptoCurrency get currency => appStore.wallet.currency;
|
||||||
|
|
||||||
|
@action
|
||||||
|
void _onWalletChange(WalletBase wallet) {
|
||||||
|
this.wallet = wallet;
|
||||||
|
|
||||||
|
if (wallet is MoneroWallet) {
|
||||||
|
balance = wallet.balance;
|
||||||
|
|
||||||
|
_onMoneroBalanceChangeReaction?.reaction?.dispose();
|
||||||
|
|
||||||
|
_onMoneroBalanceChangeReaction = reaction((_) => wallet.balance,
|
||||||
|
(MoneroBalance moneroBalance) => balance = moneroBalance);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wallet is BitcoinWallet) {
|
||||||
|
balance = wallet.balance;
|
||||||
|
|
||||||
|
_onBitcoinBalanceChangeReaction?.reaction?.dispose();
|
||||||
|
|
||||||
|
_onBitcoinBalanceChangeReaction = reaction((_) => wallet.balance,
|
||||||
|
(BitcoinBalance bitcoinBalance) => balance = bitcoinBalance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ReactionDisposer _onMoneroBalanceChangeReaction;
|
||||||
|
ReactionDisposer _onBitcoinBalanceChangeReaction;
|
||||||
|
ReactionDisposer _reaction;
|
||||||
|
|
||||||
String _getFiatBalance({double price, String cryptoAmount}) {
|
String _getFiatBalance({double price, String cryptoAmount}) {
|
||||||
if (cryptoAmount == null) {
|
if (cryptoAmount == null) {
|
||||||
return '0.00';
|
return '0.00';
|
||||||
|
@ -112,4 +171,4 @@ abstract class BalanceViewModelBase with Store {
|
||||||
|
|
||||||
return calculateFiatAmount(price: price, cryptoAmount: cryptoAmount);
|
return calculateFiatAmount(price: price, cryptoAmount: cryptoAmount);
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue