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