mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-23 06:38:35 +02:00
@@ -11,5 +11,16 @@ String calculateFiatAmount({double price, String cryptoAmount}) {
|
||||
return '0.00';
|
||||
}
|
||||
|
||||
return result > 0.01 ? result.toStringAsFixed(2) : '< 0.01';
|
||||
var formatted = '';
|
||||
final parts = result.toString().split('.');
|
||||
|
||||
if (parts.length >= 2) {
|
||||
if (parts[1].length > 2) {
|
||||
formatted = parts[0] + '.' + parts[1].substring(0, 2);
|
||||
} else {
|
||||
formatted = parts[0] + '.' + parts[1];
|
||||
}
|
||||
}
|
||||
|
||||
return result > 0.01 ? formatted : '< 0.01';
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ import 'package:encrypt/encrypt.dart' as encrypt;
|
||||
const newCakeWalletMoneroUri = 'xmr-node.cakewallet.com:18081';
|
||||
const cakeWalletBitcoinElectrumUri = 'electrum.cakewallet.com:50002';
|
||||
const cakeWalletLitecoinElectrumUri = 'ltc-electrum.cakewallet.com:50002';
|
||||
const havenDefaultNodeUri = 'vault.havenprotocol.org:443';
|
||||
|
||||
Future defaultSettingsMigration(
|
||||
{@required int version,
|
||||
@@ -120,6 +121,13 @@ Future defaultSettingsMigration(
|
||||
await checkCurrentNodes(nodes, sharedPreferences);
|
||||
break;
|
||||
|
||||
case 16:
|
||||
await addHavenNodeList(nodes: nodes);
|
||||
await changeHavenCurrentNodeToDefault(
|
||||
sharedPreferences: sharedPreferences, nodes: nodes);
|
||||
await checkCurrentNodes(nodes, sharedPreferences);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -182,6 +190,14 @@ Node getLitecoinDefaultElectrumServer({@required Box<Node> nodes}) {
|
||||
orElse: () => null);
|
||||
}
|
||||
|
||||
Node getHavenDefaultNode({@required Box<Node> nodes}) {
|
||||
return nodes.values.firstWhere(
|
||||
(Node node) => node.uriRaw == havenDefaultNodeUri,
|
||||
orElse: () => null) ??
|
||||
nodes.values.firstWhere((node) => node.type == WalletType.haven,
|
||||
orElse: () => null);
|
||||
}
|
||||
|
||||
Node getMoneroDefaultNode({@required Box<Node> nodes}) {
|
||||
final timeZone = DateTime.now().timeZoneOffset.inHours;
|
||||
var nodeUri = '';
|
||||
@@ -217,6 +233,15 @@ Future<void> changeLitecoinCurrentElectrumServerToDefault(
|
||||
await sharedPreferences.setInt('current_node_id_ltc', serverId);
|
||||
}
|
||||
|
||||
Future<void> changeHavenCurrentNodeToDefault(
|
||||
{@required SharedPreferences sharedPreferences,
|
||||
@required Box<Node> nodes}) async {
|
||||
final node = getHavenDefaultNode(nodes: nodes);
|
||||
final nodeId = node?.key as int ?? 0;
|
||||
|
||||
await sharedPreferences.setInt(PreferencesKey.currentHavenNodeIdKey, nodeId);
|
||||
}
|
||||
|
||||
Future<void> replaceDefaultNode(
|
||||
{@required SharedPreferences sharedPreferences,
|
||||
@required Box<Node> nodes}) async {
|
||||
@@ -258,6 +283,11 @@ Future<void> addLitecoinElectrumServerList({@required Box<Node> nodes}) async {
|
||||
await nodes.addAll(serverList);
|
||||
}
|
||||
|
||||
Future<void> addHavenNodeList({@required Box<Node> nodes}) async {
|
||||
final nodeList = await loadDefaultHavenNodes();
|
||||
await nodes.addAll(nodeList);
|
||||
}
|
||||
|
||||
Future<void> addAddressesForMoneroWallets(
|
||||
Box<WalletInfo> walletInfoSource) async {
|
||||
final moneroWalletsInfo =
|
||||
@@ -347,6 +377,8 @@ Future<void> checkCurrentNodes(
|
||||
sharedPreferences.getInt(PreferencesKey.currentBitcoinElectrumSererIdKey);
|
||||
final currentLitecoinElectrumSeverId = sharedPreferences
|
||||
.getInt(PreferencesKey.currentLitecoinElectrumSererIdKey);
|
||||
final currentHavenNodeId = sharedPreferences
|
||||
.getInt(PreferencesKey.currentHavenNodeIdKey);
|
||||
final currentMoneroNode = nodeSource.values.firstWhere(
|
||||
(node) => node.key == currentMoneroNodeId,
|
||||
orElse: () => null);
|
||||
@@ -356,6 +388,9 @@ Future<void> checkCurrentNodes(
|
||||
final currentLitecoinElectrumServer = nodeSource.values.firstWhere(
|
||||
(node) => node.key == currentLitecoinElectrumSeverId,
|
||||
orElse: () => null);
|
||||
final currentHavenNodeServer = nodeSource.values.firstWhere(
|
||||
(node) => node.key == currentHavenNodeId,
|
||||
orElse: () => null);
|
||||
|
||||
if (currentMoneroNode == null) {
|
||||
final newCakeWalletNode =
|
||||
@@ -382,6 +417,14 @@ Future<void> checkCurrentNodes(
|
||||
PreferencesKey.currentLitecoinElectrumSererIdKey,
|
||||
cakeWalletElectrum.key as int);
|
||||
}
|
||||
|
||||
if (currentHavenNodeServer == null) {
|
||||
final nodes = await loadDefaultHavenNodes();
|
||||
final node = nodes.first;
|
||||
await nodeSource.add(node);
|
||||
await sharedPreferences.setInt(
|
||||
PreferencesKey.currentHavenNodeIdKey, node.key as int);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> resetBitcoinElectrumServer(
|
||||
|
||||
@@ -54,12 +54,32 @@ Future<List<Node>> loadLitecoinElectrumServerList() async {
|
||||
}).toList();
|
||||
}
|
||||
|
||||
Future<List<Node>> loadDefaultHavenNodes() async {
|
||||
final nodesRaw = await rootBundle.loadString('assets/haven_node_list.yml');
|
||||
final nodes = loadYaml(nodesRaw) as YamlList;
|
||||
|
||||
return nodes.map((dynamic raw) {
|
||||
if (raw is Map) {
|
||||
final node = Node.fromMap(raw);
|
||||
node?.type = WalletType.haven;
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
return null;
|
||||
}).toList();
|
||||
}
|
||||
|
||||
Future resetToDefault(Box<Node> nodeSource) async {
|
||||
final moneroNodes = await loadDefaultNodes();
|
||||
final bitcoinElectrumServerList = await loadBitcoinElectrumServerList();
|
||||
final litecoinElectrumServerList = await loadLitecoinElectrumServerList();
|
||||
final havenNodes = await loadDefaultHavenNodes();
|
||||
final nodes =
|
||||
moneroNodes + bitcoinElectrumServerList + litecoinElectrumServerList;
|
||||
moneroNodes +
|
||||
bitcoinElectrumServerList +
|
||||
litecoinElectrumServerList +
|
||||
havenNodes;
|
||||
|
||||
await nodeSource.clear();
|
||||
await nodeSource.addAll(nodes);
|
||||
|
||||
@@ -4,6 +4,7 @@ class PreferencesKey {
|
||||
static const currentNodeIdKey = 'current_node_id';
|
||||
static const currentBitcoinElectrumSererIdKey = 'current_node_id_btc';
|
||||
static const currentLitecoinElectrumSererIdKey = 'current_node_id_ltc';
|
||||
static const currentHavenNodeIdKey = 'current_node_id_xhv';
|
||||
static const currentFiatCurrencyKey = 'current_fiat_currency';
|
||||
static const currentTransactionPriorityKeyLegacy = 'current_fee_priority';
|
||||
static const currentBalanceDisplayModeKey = 'current_balance_display_mode';
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
import 'package:cake_wallet/store/dashboard/fiat_conversion_store.dart';
|
||||
import 'package:cw_core/crypto_currency.dart';
|
||||
import 'package:cw_core/monero_amount_format.dart';
|
||||
import 'package:cw_haven/api/balance_list.dart';
|
||||
|
||||
Future<void> updateHavenRate(FiatConversionStore fiatConversionStore) async {
|
||||
final rate = getRate();
|
||||
final base = rate.firstWhere((row) => row.getAssetType() == 'XUSD', orElse: () => null);
|
||||
rate.forEach((row) {
|
||||
final cur = CryptoCurrency.fromString(row.getAssetType());
|
||||
final baseRate = moneroAmountToDouble(amount: base.getRate());
|
||||
final rowRate = moneroAmountToDouble(amount: row.getRate());
|
||||
|
||||
if (cur == CryptoCurrency.xusd) {
|
||||
fiatConversionStore.prices[cur] = 1.0;
|
||||
return;
|
||||
}
|
||||
|
||||
fiatConversionStore.prices[cur] = baseRate / rowRate;
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user