From 987df055a084e183ab5b7af78e69fbd331272807 Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Thu, 15 Dec 2022 00:42:04 +0200 Subject: [PATCH 1/5] Return default values for transaction priority instead of throwing an exception --- cw_bitcoin/lib/bitcoin_transaction_priority.dart | 4 ++-- cw_core/lib/monero_transaction_priority.dart | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cw_bitcoin/lib/bitcoin_transaction_priority.dart b/cw_bitcoin/lib/bitcoin_transaction_priority.dart index d82ea429e..6f7164ec3 100644 --- a/cw_bitcoin/lib/bitcoin_transaction_priority.dart +++ b/cw_bitcoin/lib/bitcoin_transaction_priority.dart @@ -22,7 +22,7 @@ class BitcoinTransactionPriority extends TransactionPriority { case 2: return fast; default: - throw Exception('Unexpected token: $raw for BitcoinTransactionPriority deserialize'); + return medium; } } @@ -73,7 +73,7 @@ class LitecoinTransactionPriority extends BitcoinTransactionPriority { case 2: return fast; default: - throw Exception('Unexpected token: $raw for LitecoinTransactionPriority deserialize'); + return medium; } } diff --git a/cw_core/lib/monero_transaction_priority.dart b/cw_core/lib/monero_transaction_priority.dart index cca887398..5219014c5 100644 --- a/cw_core/lib/monero_transaction_priority.dart +++ b/cw_core/lib/monero_transaction_priority.dart @@ -50,7 +50,7 @@ class MoneroTransactionPriority extends TransactionPriority { case 4: return fastest; default: - throw Exception('Unexpected token: $raw for MoneroTransactionPriority deserialize'); + return automatic; } } From 710de57847d617b6c4b3d508f61d32809100b81e Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Thu, 15 Dec 2022 02:00:59 +0200 Subject: [PATCH 2/5] Validate bitcoin's saved transaction priority --- .../lib/bitcoin_transaction_priority.dart | 6 ++++-- cw_core/lib/monero_transaction_priority.dart | 18 +----------------- lib/entities/default_settings_migration.dart | 14 ++++++++++++++ lib/main.dart | 2 +- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/cw_bitcoin/lib/bitcoin_transaction_priority.dart b/cw_bitcoin/lib/bitcoin_transaction_priority.dart index 6f7164ec3..0573624ea 100644 --- a/cw_bitcoin/lib/bitcoin_transaction_priority.dart +++ b/cw_bitcoin/lib/bitcoin_transaction_priority.dart @@ -13,6 +13,8 @@ class BitcoinTransactionPriority extends TransactionPriority { static const BitcoinTransactionPriority fast = BitcoinTransactionPriority(title: 'Fast', raw: 2); + static const BitcoinTransactionPriority defaultPriority = medium; + static BitcoinTransactionPriority deserialize({required int raw}) { switch (raw) { case 0: @@ -22,7 +24,7 @@ class BitcoinTransactionPriority extends TransactionPriority { case 2: return fast; default: - return medium; + throw Exception('Unexpected token: $raw for BitcoinTransactionPriority deserialize'); } } @@ -73,7 +75,7 @@ class LitecoinTransactionPriority extends BitcoinTransactionPriority { case 2: return fast; default: - return medium; + throw Exception('Unexpected token: $raw for LitecoinTransactionPriority deserialize'); } } diff --git a/cw_core/lib/monero_transaction_priority.dart b/cw_core/lib/monero_transaction_priority.dart index 5219014c5..f5c00ecc7 100644 --- a/cw_core/lib/monero_transaction_priority.dart +++ b/cw_core/lib/monero_transaction_priority.dart @@ -21,22 +21,6 @@ class MoneroTransactionPriority extends TransactionPriority { static const fastest = MoneroTransactionPriority(title: 'Fastest', raw: 4); static const standard = slow; - - static List forWalletType(WalletType type) { - switch (type) { - case WalletType.monero: - return MoneroTransactionPriority.all; - case WalletType.bitcoin: - return [ - MoneroTransactionPriority.slow, - MoneroTransactionPriority.automatic, - MoneroTransactionPriority.fast - ]; - default: - return []; - } - } - static MoneroTransactionPriority deserialize({required int raw}) { switch (raw) { case 0: @@ -50,7 +34,7 @@ class MoneroTransactionPriority extends TransactionPriority { case 4: return fastest; default: - return automatic; + throw Exception('Unexpected token: $raw for MoneroTransactionPriority deserialize'); } } diff --git a/lib/entities/default_settings_migration.dart b/lib/entities/default_settings_migration.dart index 9aff05500..42b49c2ec 100644 --- a/lib/entities/default_settings_migration.dart +++ b/lib/entities/default_settings_migration.dart @@ -1,10 +1,12 @@ import 'dart:io' show File, Platform; import 'package:cake_wallet/bitcoin/bitcoin.dart'; +import 'package:cw_bitcoin/bitcoin_transaction_priority.dart'; import 'package:cw_core/pathForWallet.dart'; import 'package:cake_wallet/entities/secret_store_key.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:hive/hive.dart'; +import 'package:share_plus/share_plus.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:cake_wallet/entities/preferences_key.dart'; import 'package:cw_core/wallet_type.dart'; @@ -139,6 +141,10 @@ Future defaultSettingsMigration( await addOnionNode(nodes); break; + case 19: + await validateBitcoinSavedTransactionPriority(sharedPreferences); + break; + default: break; } @@ -154,6 +160,14 @@ Future defaultSettingsMigration( PreferencesKey.currentDefaultSettingsMigrationVersion, version); } +Future validateBitcoinSavedTransactionPriority(SharedPreferences sharedPreferences) async { + int? savedBitcoinPriority = sharedPreferences.getInt(PreferencesKey.bitcoinTransactionPriority); + if (!BitcoinTransactionPriority.all.any((element) => element.raw == savedBitcoinPriority)) { + await sharedPreferences.setInt( + PreferencesKey.bitcoinTransactionPriority, BitcoinTransactionPriority.defaultPriority.raw); + } +} + Future addOnionNode(Box nodes) async { final onionNodeUri = "cakexmrl7bonq7ovjka5kuwuyd3f7qnkz6z6s6dmsy3uckwra7bvggyd.onion:18081"; diff --git a/lib/main.dart b/lib/main.dart index eaabb8339..19f89feb3 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -129,7 +129,7 @@ Future main() async { exchangeTemplates: exchangeTemplates, transactionDescriptions: transactionDescriptions, secureStorage: secureStorage, - initialMigrationVersion: 18); + initialMigrationVersion: 19); runApp(App()); } catch (e, stacktrace) { runApp(MaterialApp( From eb0ebbac414778aa3a67e80cf296d39469873db6 Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Thu, 15 Dec 2022 02:05:00 +0200 Subject: [PATCH 3/5] Validate bitcoin's saved transaction priority [skip ci] --- lib/entities/default_settings_migration.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/entities/default_settings_migration.dart b/lib/entities/default_settings_migration.dart index 42b49c2ec..83012b39a 100644 --- a/lib/entities/default_settings_migration.dart +++ b/lib/entities/default_settings_migration.dart @@ -161,7 +161,8 @@ Future defaultSettingsMigration( } Future validateBitcoinSavedTransactionPriority(SharedPreferences sharedPreferences) async { - int? savedBitcoinPriority = sharedPreferences.getInt(PreferencesKey.bitcoinTransactionPriority); + final int? savedBitcoinPriority = + sharedPreferences.getInt(PreferencesKey.bitcoinTransactionPriority); if (!BitcoinTransactionPriority.all.any((element) => element.raw == savedBitcoinPriority)) { await sharedPreferences.setInt( PreferencesKey.bitcoinTransactionPriority, BitcoinTransactionPriority.defaultPriority.raw); From 586ad210b3208bdfadf0abad26039bf3c71bee73 Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Thu, 15 Dec 2022 02:29:30 +0200 Subject: [PATCH 4/5] use defined bitcoin instead of direct import to transaction priority --- lib/entities/default_settings_migration.dart | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/entities/default_settings_migration.dart b/lib/entities/default_settings_migration.dart index 83012b39a..3c8d9fbbe 100644 --- a/lib/entities/default_settings_migration.dart +++ b/lib/entities/default_settings_migration.dart @@ -1,12 +1,10 @@ import 'dart:io' show File, Platform; import 'package:cake_wallet/bitcoin/bitcoin.dart'; -import 'package:cw_bitcoin/bitcoin_transaction_priority.dart'; import 'package:cw_core/pathForWallet.dart'; import 'package:cake_wallet/entities/secret_store_key.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:hive/hive.dart'; -import 'package:share_plus/share_plus.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:cake_wallet/entities/preferences_key.dart'; import 'package:cw_core/wallet_type.dart'; @@ -161,11 +159,14 @@ Future defaultSettingsMigration( } Future validateBitcoinSavedTransactionPriority(SharedPreferences sharedPreferences) async { + if (bitcoin == null) { + return; + } final int? savedBitcoinPriority = sharedPreferences.getInt(PreferencesKey.bitcoinTransactionPriority); - if (!BitcoinTransactionPriority.all.any((element) => element.raw == savedBitcoinPriority)) { + if (!bitcoin!.getTransactionPriorities().any((element) => element.raw == savedBitcoinPriority)) { await sharedPreferences.setInt( - PreferencesKey.bitcoinTransactionPriority, BitcoinTransactionPriority.defaultPriority.raw); + PreferencesKey.bitcoinTransactionPriority, bitcoin!.getMediumTransactionPriority().serialize()); } } From 99c1205d0d34af399e907ee893139fd7ff2feaa9 Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Thu, 15 Dec 2022 02:36:44 +0200 Subject: [PATCH 5/5] Remove unused variable [skip ci] --- cw_bitcoin/lib/bitcoin_transaction_priority.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/cw_bitcoin/lib/bitcoin_transaction_priority.dart b/cw_bitcoin/lib/bitcoin_transaction_priority.dart index 0573624ea..d82ea429e 100644 --- a/cw_bitcoin/lib/bitcoin_transaction_priority.dart +++ b/cw_bitcoin/lib/bitcoin_transaction_priority.dart @@ -13,8 +13,6 @@ class BitcoinTransactionPriority extends TransactionPriority { static const BitcoinTransactionPriority fast = BitcoinTransactionPriority(title: 'Fast', raw: 2); - static const BitcoinTransactionPriority defaultPriority = medium; - static BitcoinTransactionPriority deserialize({required int raw}) { switch (raw) { case 0: