mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-21 06:18:42 +02:00
* initial commit * creating and restoring a wallet * [skip ci] add transaction priority * fix send and unspent screen * fix transaction priority type * replace Unspend with BitcoinUnspent * add transaction creation * fix transaction details screen * minor fix * fix create side wallet * basic transaction creation flow * fix fiat amount calculation * edit wallet * minor fix * fix address book parsing * merge commit fixes * minor fixes * Update gradle.properties * fix bch unspent coins * minor fix * fix BitcoinCashTransactionPriority * Fetch tags first before switching to one of them * Update build_haven.sh * Update build_haven.sh * Update build_haven.sh * Update build_haven.sh * update transaction build function * Update build_haven.sh * add ability to rename and delete * fix address format * Update pubspec.lock * Revert "fix address format" This reverts commit 1549bf4d8c3bdb0addbd6e3c5f049ebc3799ff8f. * fix address format for exange * restore from qr * Update configure.dart * [skip ci] minor fix * fix default fee rate * Update onramper_buy_provider.dart * Update wallet_address_list_view_model.dart * PR comments fixes * Update exchange_view_model.dart * fix merge conflict * Update address_validator.dart * merge fixes * update initialMigrationVersion * move cw_bitbox to Cake tech * PR fixes * PR fixes * Fix configure.dart brackets * update the new version text after macos * dummy change to run workflow * Fix Nano restore from QR issue Fix Conflicts with main * PR fixes * Update app_config.sh --------- Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
139 lines
4.8 KiB
Dart
139 lines
4.8 KiB
Dart
import 'package:intl/intl.dart';
|
|
import 'package:cw_core/crypto_currency.dart';
|
|
|
|
class AmountConverter {
|
|
static const _moneroAmountLength = 12;
|
|
static const _moneroAmountDivider = 1000000000000;
|
|
static const _litecoinAmountDivider = 100000000;
|
|
static const _ethereumAmountDivider = 1000000000000000000;
|
|
static const _dashAmountDivider = 100000000;
|
|
static const _bitcoinCashAmountDivider = 100000000;
|
|
static const _bitcoinAmountDivider = 100000000;
|
|
static const _bitcoinAmountLength = 8;
|
|
static final _bitcoinAmountFormat = NumberFormat()
|
|
..maximumFractionDigits = _bitcoinAmountLength
|
|
..minimumFractionDigits = 1;
|
|
static final _moneroAmountFormat = NumberFormat()
|
|
..maximumFractionDigits = _moneroAmountLength
|
|
..minimumFractionDigits = 1;
|
|
|
|
static double amountIntToDouble(CryptoCurrency cryptoCurrency, int amount) {
|
|
switch (cryptoCurrency) {
|
|
case CryptoCurrency.xmr:
|
|
return _moneroAmountToDouble(amount);
|
|
case CryptoCurrency.btc:
|
|
return _bitcoinAmountToDouble(amount);
|
|
case CryptoCurrency.bch:
|
|
return _bitcoinCashAmountToDouble(amount);
|
|
case CryptoCurrency.dash:
|
|
return _dashAmountToDouble(amount);
|
|
case CryptoCurrency.eth:
|
|
return _ethereumAmountToDouble(amount);
|
|
case CryptoCurrency.ltc:
|
|
return _litecoinAmountToDouble(amount);
|
|
case CryptoCurrency.xhv:
|
|
case CryptoCurrency.xag:
|
|
case CryptoCurrency.xau:
|
|
case CryptoCurrency.xaud:
|
|
case CryptoCurrency.xbtc:
|
|
case CryptoCurrency.xcad:
|
|
case CryptoCurrency.xchf:
|
|
case CryptoCurrency.xcny:
|
|
case CryptoCurrency.xeur:
|
|
case CryptoCurrency.xgbp:
|
|
case CryptoCurrency.xjpy:
|
|
case CryptoCurrency.xnok:
|
|
case CryptoCurrency.xnzd:
|
|
case CryptoCurrency.xusd:
|
|
return _moneroAmountToDouble(amount);
|
|
default:
|
|
return 0.0;
|
|
}
|
|
}
|
|
|
|
static int amountStringToInt(CryptoCurrency cryptoCurrency, String amount) {
|
|
switch (cryptoCurrency) {
|
|
case CryptoCurrency.xmr:
|
|
return _moneroParseAmount(amount);
|
|
case CryptoCurrency.xhv:
|
|
case CryptoCurrency.xag:
|
|
case CryptoCurrency.xau:
|
|
case CryptoCurrency.xaud:
|
|
case CryptoCurrency.xbtc:
|
|
case CryptoCurrency.xcad:
|
|
case CryptoCurrency.xchf:
|
|
case CryptoCurrency.xcny:
|
|
case CryptoCurrency.xeur:
|
|
case CryptoCurrency.xgbp:
|
|
case CryptoCurrency.xjpy:
|
|
case CryptoCurrency.xnok:
|
|
case CryptoCurrency.xnzd:
|
|
case CryptoCurrency.xusd:
|
|
return _moneroParseAmount(amount);
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
static String amountIntToString(CryptoCurrency cryptoCurrency, int amount) {
|
|
switch (cryptoCurrency) {
|
|
case CryptoCurrency.xmr:
|
|
return _moneroAmountToString(amount);
|
|
case CryptoCurrency.btc:
|
|
case CryptoCurrency.bch:
|
|
return _bitcoinAmountToString(amount);
|
|
case CryptoCurrency.xhv:
|
|
case CryptoCurrency.xag:
|
|
case CryptoCurrency.xau:
|
|
case CryptoCurrency.xaud:
|
|
case CryptoCurrency.xbtc:
|
|
case CryptoCurrency.xcad:
|
|
case CryptoCurrency.xchf:
|
|
case CryptoCurrency.xcny:
|
|
case CryptoCurrency.xeur:
|
|
case CryptoCurrency.xgbp:
|
|
case CryptoCurrency.xjpy:
|
|
case CryptoCurrency.xnok:
|
|
case CryptoCurrency.xnzd:
|
|
case CryptoCurrency.xusd:
|
|
return _moneroAmountToString(amount);
|
|
default:
|
|
return '';
|
|
}
|
|
}
|
|
|
|
static double cryptoAmountToDouble({required num amount, required num divider}) =>
|
|
amount / divider;
|
|
|
|
static String _moneroAmountToString(int amount) => _moneroAmountFormat.format(
|
|
cryptoAmountToDouble(amount: amount, divider: _moneroAmountDivider));
|
|
|
|
static double _moneroAmountToDouble(int amount) =>
|
|
cryptoAmountToDouble(amount: amount, divider: _moneroAmountDivider);
|
|
|
|
static int _moneroParseAmount(String amount) =>
|
|
_moneroAmountFormat.parse(amount).toInt();
|
|
|
|
static String _bitcoinAmountToString(int amount) =>
|
|
_bitcoinAmountFormat.format(
|
|
cryptoAmountToDouble(amount: amount, divider: _bitcoinAmountDivider));
|
|
|
|
static double _bitcoinAmountToDouble(int amount) =>
|
|
cryptoAmountToDouble(amount: amount, divider: _bitcoinAmountDivider);
|
|
|
|
static int _doubleToBitcoinAmount(double amount) =>
|
|
(amount * _bitcoinAmountDivider).toInt();
|
|
|
|
static double _bitcoinCashAmountToDouble(int amount) =>
|
|
cryptoAmountToDouble(amount: amount, divider: _bitcoinCashAmountDivider);
|
|
|
|
static double _dashAmountToDouble(int amount) =>
|
|
cryptoAmountToDouble(amount: amount, divider: _dashAmountDivider);
|
|
|
|
static double _ethereumAmountToDouble(num amount) =>
|
|
cryptoAmountToDouble(amount: amount, divider: _ethereumAmountDivider);
|
|
|
|
static double _litecoinAmountToDouble(int amount) =>
|
|
cryptoAmountToDouble(amount: amount, divider: _litecoinAmountDivider);
|
|
}
|