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')