fix: only throw on deserialize if kDebugMode is true (#2976)
This closes #2972, in debug mode we will still catch these issues but if somehow that happens on production it will fallback to safe default
cyan committed
Feb 26, 2026 at 13:28 UTC
64ded5a72b905e9cd6138bf2ec1d6521987bef20
6 files changed
+38
-8
cw_bitcoin/lib/bitcoin_transaction_priority.dart
+13
-3
@@ -1,4 +1,5 @@
1
import 'package:cw_core/transaction_priority.dart';
2
+import 'package:flutter/foundation.dart';
3
4
class BitcoinTransactionPriority extends TransactionPriority {
5
const BitcoinTransactionPriority({required String title, required int raw})
@@ -25,7 +26,10 @@ class BitcoinTransactionPriority extends TransactionPriority {
26
case 3:
27
return custom;
28
default:
28
- throw Exception('Unexpected token: $raw for BitcoinTransactionPriority deserialize');
29
+ if (kDebugMode) {
30
+ throw Exception('Unexpected token: $raw for BitcoinTransactionPriority deserialize');
31
+ }
32
+ return medium;
33
}
34
}
35
@@ -82,7 +86,10 @@ class LitecoinTransactionPriority extends BitcoinTransactionPriority {
86
case 2:
87
return fast;
88
default:
85
- throw Exception('Unexpected token: $raw for LitecoinTransactionPriority deserialize');
89
+ if (kDebugMode) {
90
+ throw Exception('Unexpected token: $raw for LitecoinTransactionPriority deserialize');
91
+ }
92
+ return medium;
93
}
94
}
95
@@ -132,7 +139,10 @@ class BitcoinCashTransactionPriority extends BitcoinTransactionPriority {
139
case 2:
140
return fast;
141
default:
135
- throw Exception('Unexpected token: $raw for BitcoinCashTransactionPriority deserialize');
142
+ if (kDebugMode) {
143
+ throw Exception('Unexpected token: $raw for BitcoinCashTransactionPriority deserialize');
144
+ }
145
+ return medium;
146
}
147
}
148
cw_core/lib/monero_transaction_priority.dart
+5
-1
@@ -1,4 +1,5 @@
1
import 'package:cw_core/transaction_priority.dart';
2
+import 'package:flutter/foundation.dart';
3
4
class MoneroTransactionPriority extends TransactionPriority {
5
const MoneroTransactionPriority({required String title, required int raw})
@@ -30,7 +31,10 @@ class MoneroTransactionPriority extends TransactionPriority {
31
case 4:
32
return fastest;
33
default:
33
- throw Exception('Unexpected token: $raw for MoneroTransactionPriority deserialize');
34
+ if (kDebugMode) {
35
+ throw Exception('Unexpected token: $raw for MoneroTransactionPriority deserialize');
36
+ }
37
+ return medium;
38
}
39
}
40
cw_decred/lib/transaction_priority.dart
+5
-1
@@ -1,4 +1,5 @@
1
import 'package:cw_core/transaction_priority.dart';
2
+import 'package:flutter/foundation.dart';
3
4
class DecredTransactionPriority extends TransactionPriority {
5
const DecredTransactionPriority({required String title, required int raw})
@@ -19,7 +20,10 @@ class DecredTransactionPriority extends TransactionPriority {
20
case 2:
21
return fast;
22
default:
22
- throw Exception('Unexpected token: $raw for DecredTransactionPriority deserialize');
23
+ if (kDebugMode) {
24
+ throw Exception('Unexpected token: $raw for DecredTransactionPriority deserialize');
25
+ }
26
+ return medium;
27
}
28
}
29
cw_dogecoin/lib/src/dogecoin_transaction_priority.dart
+5
-1
@@ -1,4 +1,5 @@
1
import 'package:cw_bitcoin/bitcoin_transaction_priority.dart';
2
+import 'package:flutter/foundation.dart';
3
4
class DogecoinTransactionPriority extends BitcoinTransactionPriority {
5
const DogecoinTransactionPriority({required String title, required int raw})
@@ -21,7 +22,10 @@ class DogecoinTransactionPriority extends BitcoinTransactionPriority {
22
case 2:
23
return fast;
24
default:
24
- throw Exception('Unexpected token: $raw for DogecoinTransactionPriority deserialize');
25
+ if (kDebugMode) {
26
+ throw Exception('Unexpected token: $raw for DogecoinTransactionPriority deserialize');
27
+ }
28
+ return medium;
29
}
30
}
31
cw_evm/lib/evm_chain_transaction_priority.dart
+5
-1
@@ -1,4 +1,5 @@
1
import 'package:cw_core/transaction_priority.dart';
2
+import 'package:flutter/foundation.dart';
3
4
class EVMChainTransactionPriority extends TransactionPriority {
5
final int tip;
@@ -23,7 +24,10 @@ class EVMChainTransactionPriority extends TransactionPriority {
24
case 2:
25
return fast;
26
default:
26
- throw Exception('Unexpected token: $raw for EVMChainTransactionPriority deserialize');
27
+ if (kDebugMode) {
28
+ throw Exception('Unexpected token: $raw for EVMChainTransactionPriority deserialize');
29
+ }
30
+ return medium;
31
}
32
}
33
lib/entities/list_order_mode.dart
+5
-1
@@ -1,5 +1,6 @@
1
import 'package:cake_wallet/generated/i18n.dart';
2
import 'package:cw_core/enumerable_item.dart';
3
+import 'package:flutter/foundation.dart';
4
5
class ListOrderMode extends EnumerableItem<int> with Serializable<int> {
6
const ListOrderMode({required String title, required int raw}) : super(title: title, raw: raw);
@@ -16,7 +17,10 @@ class ListOrderMode extends EnumerableItem<int> with Serializable<int> {
17
case 1:
18
return descending;
19
default:
19
- throw Exception('Unexpected token: $raw for ListOrderMode deserialize');
20
+ if (kDebugMode) {
21
+ throw Exception('Unexpected token: $raw for ListOrderMode deserialize');
22
+ }
23
+ return descending;
24
}
25
}
26