From 64ded5a72b905e9cd6138bf2ec1d6521987bef20 Mon Sep 17 00:00:00 2001 From: cyan Date: Thu, 26 Feb 2026 13:28:40 +0100 Subject: [PATCH] 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 --- cw_bitcoin/lib/bitcoin_transaction_priority.dart | 16 +++++++++++++--- cw_core/lib/monero_transaction_priority.dart | 6 +++++- cw_decred/lib/transaction_priority.dart | 6 +++++- .../lib/src/dogecoin_transaction_priority.dart | 6 +++++- cw_evm/lib/evm_chain_transaction_priority.dart | 6 +++++- lib/entities/list_order_mode.dart | 6 +++++- 6 files changed, 38 insertions(+), 8 deletions(-) diff --git a/cw_bitcoin/lib/bitcoin_transaction_priority.dart b/cw_bitcoin/lib/bitcoin_transaction_priority.dart index d1f45a545..d93070a78 100644 --- a/cw_bitcoin/lib/bitcoin_transaction_priority.dart +++ b/cw_bitcoin/lib/bitcoin_transaction_priority.dart @@ -1,4 +1,5 @@ import 'package:cw_core/transaction_priority.dart'; +import 'package:flutter/foundation.dart'; class BitcoinTransactionPriority extends TransactionPriority { const BitcoinTransactionPriority({required String title, required int raw}) @@ -25,7 +26,10 @@ class BitcoinTransactionPriority extends TransactionPriority { case 3: return custom; default: - throw Exception('Unexpected token: $raw for BitcoinTransactionPriority deserialize'); + if (kDebugMode) { + throw Exception('Unexpected token: $raw for BitcoinTransactionPriority deserialize'); + } + return medium; } } @@ -82,7 +86,10 @@ class LitecoinTransactionPriority extends BitcoinTransactionPriority { case 2: return fast; default: - throw Exception('Unexpected token: $raw for LitecoinTransactionPriority deserialize'); + if (kDebugMode) { + throw Exception('Unexpected token: $raw for LitecoinTransactionPriority deserialize'); + } + return medium; } } @@ -132,7 +139,10 @@ class BitcoinCashTransactionPriority extends BitcoinTransactionPriority { case 2: return fast; default: - throw Exception('Unexpected token: $raw for BitcoinCashTransactionPriority deserialize'); + if (kDebugMode) { + throw Exception('Unexpected token: $raw for BitcoinCashTransactionPriority deserialize'); + } + return medium; } } diff --git a/cw_core/lib/monero_transaction_priority.dart b/cw_core/lib/monero_transaction_priority.dart index 81058f336..cc14b8503 100644 --- a/cw_core/lib/monero_transaction_priority.dart +++ b/cw_core/lib/monero_transaction_priority.dart @@ -1,4 +1,5 @@ import 'package:cw_core/transaction_priority.dart'; +import 'package:flutter/foundation.dart'; class MoneroTransactionPriority extends TransactionPriority { const MoneroTransactionPriority({required String title, required int raw}) @@ -30,7 +31,10 @@ class MoneroTransactionPriority extends TransactionPriority { case 4: return fastest; default: - throw Exception('Unexpected token: $raw for MoneroTransactionPriority deserialize'); + if (kDebugMode) { + throw Exception('Unexpected token: $raw for MoneroTransactionPriority deserialize'); + } + return medium; } } diff --git a/cw_decred/lib/transaction_priority.dart b/cw_decred/lib/transaction_priority.dart index 80a9c7e3a..735d0b47c 100644 --- a/cw_decred/lib/transaction_priority.dart +++ b/cw_decred/lib/transaction_priority.dart @@ -1,4 +1,5 @@ import 'package:cw_core/transaction_priority.dart'; +import 'package:flutter/foundation.dart'; class DecredTransactionPriority extends TransactionPriority { const DecredTransactionPriority({required String title, required int raw}) @@ -19,7 +20,10 @@ class DecredTransactionPriority extends TransactionPriority { case 2: return fast; default: - throw Exception('Unexpected token: $raw for DecredTransactionPriority deserialize'); + if (kDebugMode) { + throw Exception('Unexpected token: $raw for DecredTransactionPriority deserialize'); + } + return medium; } } diff --git a/cw_dogecoin/lib/src/dogecoin_transaction_priority.dart b/cw_dogecoin/lib/src/dogecoin_transaction_priority.dart index b692cc570..ed12b87a2 100644 --- a/cw_dogecoin/lib/src/dogecoin_transaction_priority.dart +++ b/cw_dogecoin/lib/src/dogecoin_transaction_priority.dart @@ -1,4 +1,5 @@ import 'package:cw_bitcoin/bitcoin_transaction_priority.dart'; +import 'package:flutter/foundation.dart'; class DogecoinTransactionPriority extends BitcoinTransactionPriority { const DogecoinTransactionPriority({required String title, required int raw}) @@ -21,7 +22,10 @@ class DogecoinTransactionPriority extends BitcoinTransactionPriority { case 2: return fast; default: - throw Exception('Unexpected token: $raw for DogecoinTransactionPriority deserialize'); + if (kDebugMode) { + throw Exception('Unexpected token: $raw for DogecoinTransactionPriority deserialize'); + } + return medium; } } diff --git a/cw_evm/lib/evm_chain_transaction_priority.dart b/cw_evm/lib/evm_chain_transaction_priority.dart index b4ce55490..721c7e477 100644 --- a/cw_evm/lib/evm_chain_transaction_priority.dart +++ b/cw_evm/lib/evm_chain_transaction_priority.dart @@ -1,4 +1,5 @@ import 'package:cw_core/transaction_priority.dart'; +import 'package:flutter/foundation.dart'; class EVMChainTransactionPriority extends TransactionPriority { final int tip; @@ -23,7 +24,10 @@ class EVMChainTransactionPriority extends TransactionPriority { case 2: return fast; default: - throw Exception('Unexpected token: $raw for EVMChainTransactionPriority deserialize'); + if (kDebugMode) { + throw Exception('Unexpected token: $raw for EVMChainTransactionPriority deserialize'); + } + return medium; } } diff --git a/lib/entities/list_order_mode.dart b/lib/entities/list_order_mode.dart index b9eae6820..e89f9ef73 100644 --- a/lib/entities/list_order_mode.dart +++ b/lib/entities/list_order_mode.dart @@ -1,5 +1,6 @@ import 'package:cake_wallet/generated/i18n.dart'; import 'package:cw_core/enumerable_item.dart'; +import 'package:flutter/foundation.dart'; class ListOrderMode extends EnumerableItem with Serializable { const ListOrderMode({required String title, required int raw}) : super(title: title, raw: raw); @@ -16,7 +17,10 @@ class ListOrderMode extends EnumerableItem with Serializable { case 1: return descending; default: - throw Exception('Unexpected token: $raw for ListOrderMode deserialize'); + if (kDebugMode) { + throw Exception('Unexpected token: $raw for ListOrderMode deserialize'); + } + return descending; } }