From 3e43ef9a0ec261d48a7c932bc17b61cf63155163 Mon Sep 17 00:00:00 2001 From: M Date: Thu, 7 Apr 2022 12:19:10 +0100 Subject: [PATCH] Fixes for haven dependencies --- lib/entities/update_haven_rate.dart | 12 +++++------ lib/haven/cw_haven.dart | 11 ++++++++++ .../dashboard/transaction_list_item.dart | 6 +----- tool/configure.dart | 20 +++++++++++++++---- 4 files changed, 34 insertions(+), 15 deletions(-) diff --git a/lib/entities/update_haven_rate.dart b/lib/entities/update_haven_rate.dart index 1bb1a88e1..c1fc591b2 100644 --- a/lib/entities/update_haven_rate.dart +++ b/lib/entities/update_haven_rate.dart @@ -1,15 +1,15 @@ 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'; +import 'package:cake_wallet/haven/haven.dart'; Future updateHavenRate(FiatConversionStore fiatConversionStore) async { - final rate = getRate(); - final base = rate.firstWhere((row) => row.getAssetType() == 'XUSD', orElse: () => null); + final rate = haven.getAssetRate(); + final base = rate.firstWhere((row) => row.asset == 'XUSD', orElse: () => null); rate.forEach((row) { - final cur = CryptoCurrency.fromString(row.getAssetType()); - final baseRate = moneroAmountToDouble(amount: base.getRate()); - final rowRate = moneroAmountToDouble(amount: row.getRate()); + final cur = CryptoCurrency.fromString(row.asset); + final baseRate = moneroAmountToDouble(amount: base.rate); + final rowRate = moneroAmountToDouble(amount: row.rate); if (cur == CryptoCurrency.xusd) { fiatConversionStore.prices[cur] = 1.0; diff --git a/lib/haven/cw_haven.dart b/lib/haven/cw_haven.dart index 6261e1fc9..d253ec929 100644 --- a/lib/haven/cw_haven.dart +++ b/lib/haven/cw_haven.dart @@ -295,4 +295,15 @@ class CWHaven extends Haven { final havenWallet = wallet as HavenWallet; return havenWallet.getTransactionAddress(accountIndex, addressIndex); } + + CryptoCurrency assetOfTransaction(TransactionInfo tx) { + final tx = transaction as HavenTransactionInfo; + final asset = CryptoCurrency.fromString(tx.assetType); + return asset; + } + + List getAssetRate() + => getRate() + .map((HavenRate rate) => AssetRate(rate.getAssetType(), rate.getRate())) + .toList(); } diff --git a/lib/view_model/dashboard/transaction_list_item.dart b/lib/view_model/dashboard/transaction_list_item.dart index a7467ffb0..99c306419 100644 --- a/lib/view_model/dashboard/transaction_list_item.dart +++ b/lib/view_model/dashboard/transaction_list_item.dart @@ -1,9 +1,7 @@ import 'package:cake_wallet/entities/balance_display_mode.dart'; import 'package:cake_wallet/entities/fiat_currency.dart'; -import 'package:cw_core/crypto_currency.dart'; import 'package:cw_core/transaction_info.dart'; import 'package:cake_wallet/store/settings_store.dart'; -import 'package:cake_wallet/utils/mobx.dart'; import 'package:cake_wallet/view_model/dashboard/action_list_item.dart'; import 'package:cake_wallet/monero/monero.dart'; import 'package:cake_wallet/haven/haven.dart'; @@ -12,7 +10,6 @@ import 'package:cake_wallet/entities/calculate_fiat_amount_raw.dart'; import 'package:cake_wallet/view_model/dashboard/balance_view_model.dart'; import 'package:cw_core/keyable.dart'; import 'package:cw_core/wallet_type.dart'; -import 'package:cw_haven/haven_transaction_info.dart'; class TransactionListItem extends ActionListItem with Keyable { TransactionListItem( @@ -53,8 +50,7 @@ class TransactionListItem extends ActionListItem with Keyable { price: price); break; case WalletType.haven: - final tx = transaction as HavenTransactionInfo; - final asset = CryptoCurrency.fromString(tx.assetType); + final asset = haven.assetOfTransaction(transaction); final price = balanceViewModel.fiatConvertationStore.prices[asset]; amount = calculateFiatAmountRaw( cryptoAmount: haven.formatterMoneroAmountToDouble(amount: transaction.amount), diff --git a/tool/configure.dart b/tool/configure.dart index dfce79dc9..f74d9c9d3 100644 --- a/tool/configure.dart +++ b/tool/configure.dart @@ -275,7 +275,8 @@ abstract class MoneroAccountList { } Future generateHaven(bool hasImplementation) async { - final outputFile = File(moneroOutputPath); + + final outputFile = File(havenOutputPath); const havenCommonHeaders = """ import 'package:mobx/mobx.dart'; import 'package:flutter/foundation.dart'; @@ -288,7 +289,8 @@ import 'package:cw_core/balance.dart'; import 'package:cw_core/output_info.dart'; import 'package:cake_wallet/view_model/send/output.dart'; import 'package:cw_core/wallet_service.dart'; -import 'package:hive/hive.dart';"""; +import 'package:hive/hive.dart'; +import 'package:cw_core/crypto_currency.dart';"""; const havenCWHeaders = """ import 'package:cw_core/get_height_by_date.dart'; import 'package:cw_core/monero_amount_format.dart'; @@ -310,6 +312,7 @@ import 'package:cw_haven/mnemonics/portuguese.dart'; import 'package:cw_haven/mnemonics/french.dart'; import 'package:cw_haven/mnemonics/italian.dart'; import 'package:cw_haven/haven_transaction_creation_credentials.dart'; +import 'package:cw_haven/api/balance_list.dart'; """; const havenCwPart = "part 'cw_haven.dart';"; const havenContent = """ @@ -354,6 +357,13 @@ class HavenBalance extends Balance { String get formattedAdditionalBalance => formattedFullBalance; } +class AssetRate { + final String asset; + final int rate; + + AssetRate(this.asset, this.rate); +} + abstract class HavenWalletDetails { @observable Account account; @@ -399,6 +409,8 @@ abstract class Haven { void onStartup(); int getTransactionInfoAccountId(TransactionInfo tx); WalletService createHavenWalletService(Box walletInfoSource); + CryptoCurrency assetOfTransaction(TransactionInfo tx); + List getAssetRate(); } abstract class MoneroSubaddressList { @@ -421,8 +433,8 @@ abstract class HavenAccountList { } """; - const havenEmptyDefinition = 'Monero monero;\n'; - const havenCWDefinition = 'Monero monero = CWMonero();\n'; + const havenEmptyDefinition = 'Haven haven;\n'; + const havenCWDefinition = 'Haven haven = CWHaven();\n'; final output = '$havenCommonHeaders\n' + (hasImplementation ? '$havenCWHeaders\n' : '\n')