fix: stop resetting coin control on swap (#3433)
Konstantin Ullrich committed
Jul 22, 2026 at 16:08 UTC
8056cfec860f60bba4f72e0d098d020409ba1d1f
2 files changed
+8
-13
cw_bitcoin/lib/electrum_wallet.dart
+6
-10
@@ -18,7 +18,6 @@ import 'package:cw_bitcoin/bitcoin_address_record.dart';
18
import 'package:cw_bitcoin/bitcoin_transaction_credentials.dart';
19
import 'package:cw_bitcoin/bitcoin_transaction_priority.dart';
20
import 'package:cw_bitcoin/bitcoin_unspent.dart';
21
-import 'package:cw_bitcoin/bitcoin_wallet.dart';
21
import 'package:cw_bitcoin/bitcoin_wallet_keys.dart';
22
import 'package:cw_bitcoin/electrum.dart' as electrum;
23
import 'package:cw_bitcoin/electrum_balance.dart';
@@ -27,25 +26,20 @@ import 'package:cw_bitcoin/electrum_transaction_history.dart';
26
import 'package:cw_bitcoin/electrum_transaction_info.dart';
27
import 'package:cw_bitcoin/electrum_wallet_addresses.dart';
28
import 'package:cw_bitcoin/exceptions.dart';
30
-import 'package:cw_bitcoin/litecoin_wallet.dart';
29
import 'package:cw_bitcoin/pending_bitcoin_transaction.dart';
30
import 'package:cw_bitcoin/utils.dart';
31
import 'package:cw_core/amount/money.dart';
32
import 'package:cw_core/crypto_currency.dart';
33
import 'package:cw_core/encryption_file_utils.dart';
34
import 'package:cw_core/get_height_by_date.dart';
37
-import 'package:cw_core/hardware/hardware_wallet_service.dart';
35
import 'package:cw_core/node.dart';
36
import 'package:cw_core/output_info.dart';
37
import 'package:cw_core/pending_transaction.dart';
41
-import 'package:cw_core/root_dir.dart';
38
import 'package:cw_core/sync_status.dart';
39
import 'package:cw_core/transaction_direction.dart';
40
import 'package:cw_core/transaction_priority.dart';
41
import 'package:cw_core/unspent_coin_type.dart';
42
import 'package:cw_core/unspent_coins_info.dart';
47
-import 'package:cw_core/utils/print_verbose.dart';
48
-import 'package:cw_core/utils/proxy_wrapper.dart';
43
import 'package:cw_core/utils/socket_health_logger.dart';
44
import 'package:cw_core/utils/tor/abstract.dart';
45
import 'package:cw_core/wallet_base.dart';
@@ -57,7 +51,6 @@ import 'package:hex/hex.dart';
51
import 'package:hive/hive.dart';
52
import 'package:mobx/mobx.dart';
53
import 'package:rxdart/subjects.dart';
60
-import 'package:shared_preferences/shared_preferences.dart';
54
import 'package:sp_scanner/sp_scanner.dart';
55
56
part 'electrum_wallet.g.dart';
@@ -1984,8 +1977,12 @@ abstract class ElectrumWalletBase
1977
@action
1978
Future<void> addCoinInfo(BitcoinUnspent coin) async {
1979
// Check if the coin is already in the unspentCoinsInfo for the wallet
1987
- final existingCoinInfo = unspentCoinsInfo.values
1988
- .firstWhereOrNull((element) => element.walletId == walletInfo.id && element == coin);
1980
+ final existingCoinInfo = unspentCoinsInfo.values.firstWhereOrNull(
1981
+ (element) =>
1982
+ element.walletId == walletInfo.id &&
1983
+ element.hash == coin.hash &&
1984
+ element.vout == coin.vout,
1985
+ );
1986
1987
if (existingCoinInfo == null) {
1988
final newInfo = UnspentCoinsInfo(
@@ -3681,7 +3678,6 @@ abstract class ElectrumWalletBase
3678
syncStatus = ConnectingSyncStatus();
3679
}
3680
break;
3684
- default:
3681
}
3682
}
3683
lib/view_model/send/send_view_model.dart
+2
-3
@@ -3,7 +3,6 @@ import 'dart:async';
3
import 'package:cake_wallet/bitcoin/bitcoin.dart';
4
import 'package:cake_wallet/core/address_resolver/parsed_address.dart';
5
import 'package:cake_wallet/core/address_resolver/address_resolver_service.dart';
6
-import 'package:cake_wallet/di.dart';
6
import 'package:cake_wallet/core/address_validator.dart';
7
import 'package:cake_wallet/core/amount_parsing_proxy.dart';
8
import 'package:cake_wallet/core/amount_validator.dart';
@@ -128,8 +127,8 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor
127
outputs.add(Output(wallet, _appStore, _fiatConversationStore, _outputCryptoCurrencyHandler));
128
129
unspentCoinsListViewModel
131
- .initialSetup()
132
- .then((_) => unspentCoinsListViewModel.resetUnspentCoinsInfoSelections());
130
+ .initialSetup();
131
+ // .then((_) => unspentCoinsListViewModel.resetUnspentCoinsInfoSelections());
132
133
reaction((_) {
134
if (isEVMCompatibleChain(wallet.type)) {