mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2024-12-23 12:09:43 +00:00
99 lines
No EOL
2.9 KiB
Dart
99 lines
No EOL
2.9 KiB
Dart
import 'package:cake_wallet/bitcoin/bitcoin_wallet.dart';
|
|
import 'package:cake_wallet/core/wallet_base.dart';
|
|
import 'package:cake_wallet/monero/monero_wallet.dart';
|
|
import 'package:cake_wallet/src/domain/common/balance_display_mode.dart';
|
|
import 'package:cake_wallet/src/domain/common/calculate_fiat_amount.dart';
|
|
import 'package:cake_wallet/view_model/dashboard/wallet_balance.dart';
|
|
import 'package:cake_wallet/store/settings_store.dart';
|
|
import 'package:cake_wallet/store/dashboard/fiat_convertation_store.dart';
|
|
import 'package:flutter/cupertino.dart';
|
|
import 'package:mobx/mobx.dart';
|
|
|
|
part 'balance_view_model.g.dart';
|
|
|
|
class BalanceViewModel = BalanceViewModelBase with _$BalanceViewModel;
|
|
|
|
abstract class BalanceViewModelBase with Store {
|
|
BalanceViewModelBase({
|
|
@required this.wallet,
|
|
@required this.settingsStore,
|
|
@required this.fiatConvertationStore
|
|
});
|
|
|
|
final WalletBase wallet;
|
|
final SettingsStore settingsStore;
|
|
final FiatConvertationStore fiatConvertationStore;
|
|
|
|
WalletBalance _getWalletBalance() {
|
|
final _wallet = wallet;
|
|
|
|
if (_wallet is MoneroWallet) {
|
|
return WalletBalance(
|
|
unlockedBalance: _wallet.balance.formattedUnlockedBalance,
|
|
totalBalance: _wallet.balance.formattedFullBalance);
|
|
}
|
|
|
|
if (_wallet is BitcoinWallet) {
|
|
return WalletBalance(
|
|
unlockedBalance: _wallet.balance.confirmedFormatted,
|
|
totalBalance: _wallet.balance.unconfirmedFormatted);
|
|
}
|
|
}
|
|
|
|
String _getFiatBalance({double price, String cryptoAmount}) {
|
|
if (cryptoAmount == null) {
|
|
return '0.00';
|
|
}
|
|
|
|
return calculateFiatAmount(price: price, cryptoAmount: cryptoAmount);
|
|
}
|
|
|
|
@computed
|
|
double get price => fiatConvertationStore.price;
|
|
|
|
@computed
|
|
String get cryptoBalance {
|
|
final walletBalance = _getWalletBalance();
|
|
final displayMode = settingsStore.balanceDisplayMode;
|
|
var balance = '---';
|
|
|
|
if (displayMode == BalanceDisplayMode.availableBalance) {
|
|
balance = walletBalance.unlockedBalance ?? '0.0';
|
|
}
|
|
|
|
if (displayMode == BalanceDisplayMode.fullBalance) {
|
|
balance = walletBalance.totalBalance ?? '0.0';
|
|
}
|
|
|
|
return balance;
|
|
}
|
|
|
|
@computed
|
|
String get fiatBalance {
|
|
final walletBalance = _getWalletBalance();
|
|
final displayMode = settingsStore.balanceDisplayMode;
|
|
final fiatCurrency = settingsStore.fiatCurrency;
|
|
var balance = '---';
|
|
|
|
final totalBalance = _getFiatBalance(
|
|
price: price,
|
|
cryptoAmount: walletBalance.totalBalance
|
|
);
|
|
|
|
final unlockedBalance = _getFiatBalance(
|
|
price: price,
|
|
cryptoAmount: walletBalance.unlockedBalance
|
|
);
|
|
|
|
if (displayMode == BalanceDisplayMode.availableBalance) {
|
|
balance = fiatCurrency.toString() + ' ' + unlockedBalance ?? '0.00';
|
|
}
|
|
|
|
if (displayMode == BalanceDisplayMode.fullBalance) {
|
|
balance = fiatCurrency.toString() + ' ' + totalBalance ?? '0.00';
|
|
}
|
|
|
|
return balance;
|
|
}
|
|
|
|
} |