Validate bitcoin's saved transaction priority

OmarHatem committed Dec 15, 2022 at 02:00 UTC 710de57847d617b6c4b3d508f61d32809100b81e
4 files changed +20 -20
cw_bitcoin/lib/bitcoin_transaction_priority.dart
+4 -2
@@ -13,6 +13,8 @@ class BitcoinTransactionPriority extends TransactionPriority {
13 static const BitcoinTransactionPriority fast =
14 BitcoinTransactionPriority(title: 'Fast', raw: 2);
15
16 + static const BitcoinTransactionPriority defaultPriority = medium;
17 +
18 static BitcoinTransactionPriority deserialize({required int raw}) {
19 switch (raw) {
20 case 0:
@@ -22,7 +24,7 @@ class BitcoinTransactionPriority extends TransactionPriority {
24 case 2:
25 return fast;
26 default:
25 - return medium;
27 + throw Exception('Unexpected token: $raw for BitcoinTransactionPriority deserialize');
28 }
29 }
30
@@ -73,7 +75,7 @@ class LitecoinTransactionPriority extends BitcoinTransactionPriority {
75 case 2:
76 return fast;
77 default:
76 - return medium;
78 + throw Exception('Unexpected token: $raw for LitecoinTransactionPriority deserialize');
79 }
80 }
81
cw_core/lib/monero_transaction_priority.dart
+1 -17
@@ -21,22 +21,6 @@ class MoneroTransactionPriority extends TransactionPriority {
21 static const fastest = MoneroTransactionPriority(title: 'Fastest', raw: 4);
22 static const standard = slow;
23
24 -
25 - static List<MoneroTransactionPriority> forWalletType(WalletType type) {
26 - switch (type) {
27 - case WalletType.monero:
28 - return MoneroTransactionPriority.all;
29 - case WalletType.bitcoin:
30 - return [
31 - MoneroTransactionPriority.slow,
32 - MoneroTransactionPriority.automatic,
33 - MoneroTransactionPriority.fast
34 - ];
35 - default:
36 - return [];
37 - }
38 - }
39 -
24 static MoneroTransactionPriority deserialize({required int raw}) {
25 switch (raw) {
26 case 0:
@@ -50,7 +34,7 @@ class MoneroTransactionPriority extends TransactionPriority {
34 case 4:
35 return fastest;
36 default:
53 - return automatic;
37 + throw Exception('Unexpected token: $raw for MoneroTransactionPriority deserialize');
38 }
39 }
40
lib/entities/default_settings_migration.dart
+14
@@ -1,10 +1,12 @@
1 import 'dart:io' show File, Platform;
2 import 'package:cake_wallet/bitcoin/bitcoin.dart';
3 +import 'package:cw_bitcoin/bitcoin_transaction_priority.dart';
4 import 'package:cw_core/pathForWallet.dart';
5 import 'package:cake_wallet/entities/secret_store_key.dart';
6 import 'package:flutter/foundation.dart';
7 import 'package:flutter_secure_storage/flutter_secure_storage.dart';
8 import 'package:hive/hive.dart';
9 +import 'package:share_plus/share_plus.dart';
10 import 'package:shared_preferences/shared_preferences.dart';
11 import 'package:cake_wallet/entities/preferences_key.dart';
12 import 'package:cw_core/wallet_type.dart';
@@ -139,6 +141,10 @@ Future defaultSettingsMigration(
141 await addOnionNode(nodes);
142 break;
143
144 + case 19:
145 + await validateBitcoinSavedTransactionPriority(sharedPreferences);
146 + break;
147 +
148 default:
149 break;
150 }
@@ -154,6 +160,14 @@ Future defaultSettingsMigration(
160 PreferencesKey.currentDefaultSettingsMigrationVersion, version);
161 }
162
163 +Future<void> validateBitcoinSavedTransactionPriority(SharedPreferences sharedPreferences) async {
164 + int? savedBitcoinPriority = sharedPreferences.getInt(PreferencesKey.bitcoinTransactionPriority);
165 + if (!BitcoinTransactionPriority.all.any((element) => element.raw == savedBitcoinPriority)) {
166 + await sharedPreferences.setInt(
167 + PreferencesKey.bitcoinTransactionPriority, BitcoinTransactionPriority.defaultPriority.raw);
168 + }
169 +}
170 +
171 Future<void> addOnionNode(Box<Node> nodes) async {
172 final onionNodeUri = "cakexmrl7bonq7ovjka5kuwuyd3f7qnkz6z6s6dmsy3uckwra7bvggyd.onion:18081";
173
lib/main.dart
+1 -1
@@ -129,7 +129,7 @@ Future<void> main() async {
129 exchangeTemplates: exchangeTemplates,
130 transactionDescriptions: transactionDescriptions,
131 secureStorage: secureStorage,
132 - initialMigrationVersion: 18);
132 + initialMigrationVersion: 19);
133 runApp(App());
134 } catch (e, stacktrace) {
135 runApp(MaterialApp(