Fixes for haven dependencies

M committed Apr 7, 2022 at 12:19 UTC 3e43ef9a0ec261d48a7c932bc17b61cf63155163
4 files changed +34 -15
lib/entities/update_haven_rate.dart
+6 -6
@@ -1,15 +1,15 @@
1 import 'package:cake_wallet/store/dashboard/fiat_conversion_store.dart';
2 import 'package:cw_core/crypto_currency.dart';
3 import 'package:cw_core/monero_amount_format.dart';
4 -import 'package:cw_haven/api/balance_list.dart';
4 +import 'package:cake_wallet/haven/haven.dart';
5
6 Future<void> updateHavenRate(FiatConversionStore fiatConversionStore) async {
7 - final rate = getRate();
8 - final base = rate.firstWhere((row) => row.getAssetType() == 'XUSD', orElse: () => null);
7 + final rate = haven.getAssetRate();
8 + final base = rate.firstWhere((row) => row.asset == 'XUSD', orElse: () => null);
9 rate.forEach((row) {
10 - final cur = CryptoCurrency.fromString(row.getAssetType());
11 - final baseRate = moneroAmountToDouble(amount: base.getRate());
12 - final rowRate = moneroAmountToDouble(amount: row.getRate());
10 + final cur = CryptoCurrency.fromString(row.asset);
11 + final baseRate = moneroAmountToDouble(amount: base.rate);
12 + final rowRate = moneroAmountToDouble(amount: row.rate);
13
14 if (cur == CryptoCurrency.xusd) {
15 fiatConversionStore.prices[cur] = 1.0;
lib/haven/cw_haven.dart
+11
@@ -295,4 +295,15 @@ class CWHaven extends Haven {
295 final havenWallet = wallet as HavenWallet;
296 return havenWallet.getTransactionAddress(accountIndex, addressIndex);
297 }
298 +
299 + CryptoCurrency assetOfTransaction(TransactionInfo tx) {
300 + final tx = transaction as HavenTransactionInfo;
301 + final asset = CryptoCurrency.fromString(tx.assetType);
302 + return asset;
303 + }
304 +
305 + List<AssetRate> getAssetRate()
306 + => getRate()
307 + .map((HavenRate rate) => AssetRate(rate.getAssetType(), rate.getRate()))
308 + .toList();
309 }
lib/view_model/dashboard/transaction_list_item.dart
+1 -5
@@ -1,9 +1,7 @@
1 import 'package:cake_wallet/entities/balance_display_mode.dart';
2 import 'package:cake_wallet/entities/fiat_currency.dart';
3 -import 'package:cw_core/crypto_currency.dart';
3 import 'package:cw_core/transaction_info.dart';
4 import 'package:cake_wallet/store/settings_store.dart';
6 -import 'package:cake_wallet/utils/mobx.dart';
5 import 'package:cake_wallet/view_model/dashboard/action_list_item.dart';
6 import 'package:cake_wallet/monero/monero.dart';
7 import 'package:cake_wallet/haven/haven.dart';
@@ -12,7 +10,6 @@ import 'package:cake_wallet/entities/calculate_fiat_amount_raw.dart';
10 import 'package:cake_wallet/view_model/dashboard/balance_view_model.dart';
11 import 'package:cw_core/keyable.dart';
12 import 'package:cw_core/wallet_type.dart';
15 -import 'package:cw_haven/haven_transaction_info.dart';
13
14 class TransactionListItem extends ActionListItem with Keyable {
15 TransactionListItem(
@@ -53,8 +50,7 @@ class TransactionListItem extends ActionListItem with Keyable {
50 price: price);
51 break;
52 case WalletType.haven:
56 - final tx = transaction as HavenTransactionInfo;
57 - final asset = CryptoCurrency.fromString(tx.assetType);
53 + final asset = haven.assetOfTransaction(transaction);
54 final price = balanceViewModel.fiatConvertationStore.prices[asset];
55 amount = calculateFiatAmountRaw(
56 cryptoAmount: haven.formatterMoneroAmountToDouble(amount: transaction.amount),
tool/configure.dart
+16 -4
@@ -275,7 +275,8 @@ abstract class MoneroAccountList {
275 }
276
277 Future<void> generateHaven(bool hasImplementation) async {
278 - final outputFile = File(moneroOutputPath);
278 +
279 + final outputFile = File(havenOutputPath);
280 const havenCommonHeaders = """
281 import 'package:mobx/mobx.dart';
282 import 'package:flutter/foundation.dart';
@@ -288,7 +289,8 @@ import 'package:cw_core/balance.dart';
289 import 'package:cw_core/output_info.dart';
290 import 'package:cake_wallet/view_model/send/output.dart';
291 import 'package:cw_core/wallet_service.dart';
291 -import 'package:hive/hive.dart';""";
292 +import 'package:hive/hive.dart';
293 +import 'package:cw_core/crypto_currency.dart';""";
294 const havenCWHeaders = """
295 import 'package:cw_core/get_height_by_date.dart';
296 import 'package:cw_core/monero_amount_format.dart';
@@ -310,6 +312,7 @@ import 'package:cw_haven/mnemonics/portuguese.dart';
312 import 'package:cw_haven/mnemonics/french.dart';
313 import 'package:cw_haven/mnemonics/italian.dart';
314 import 'package:cw_haven/haven_transaction_creation_credentials.dart';
315 +import 'package:cw_haven/api/balance_list.dart';
316 """;
317 const havenCwPart = "part 'cw_haven.dart';";
318 const havenContent = """
@@ -354,6 +357,13 @@ class HavenBalance extends Balance {
357 String get formattedAdditionalBalance => formattedFullBalance;
358 }
359
360 +class AssetRate {
361 + final String asset;
362 + final int rate;
363 +
364 + AssetRate(this.asset, this.rate);
365 +}
366 +
367 abstract class HavenWalletDetails {
368 @observable
369 Account account;
@@ -399,6 +409,8 @@ abstract class Haven {
409 void onStartup();
410 int getTransactionInfoAccountId(TransactionInfo tx);
411 WalletService createHavenWalletService(Box<WalletInfo> walletInfoSource);
412 + CryptoCurrency assetOfTransaction(TransactionInfo tx);
413 + List<AssetRate> getAssetRate();
414 }
415
416 abstract class MoneroSubaddressList {
@@ -421,8 +433,8 @@ abstract class HavenAccountList {
433 }
434 """;
435
424 - const havenEmptyDefinition = 'Monero monero;\n';
425 - const havenCWDefinition = 'Monero monero = CWMonero();\n';
436 + const havenEmptyDefinition = 'Haven haven;\n';
437 + const havenCWDefinition = 'Haven haven = CWHaven();\n';
438
439 final output = '$havenCommonHeaders\n'
440 + (hasImplementation ? '$havenCWHeaders\n' : '\n')