Fix receive address in swap

OmarHatem committed Nov 2, 2025 at 17:39 UTC 743372756c53c70c8afd0b4691bfcb64319d93eb
2 files changed +10 -13
lib/src/screens/exchange/exchange_page.dart
+1 -2
@@ -11,7 +11,6 @@ import 'package:cake_wallet/utils/payment_request.dart';
11 import 'package:cake_wallet/utils/responsive_layout_util.dart';
12 import 'package:cw_core/sync_status.dart';
13 import 'package:cw_core/utils/print_verbose.dart';
14 -import 'package:cw_core/wallet_type.dart';
14 import 'package:cake_wallet/entities/parse_address_from_domain.dart';
15 import 'package:cake_wallet/src/screens/send/widgets/extract_address_from_parsed.dart';
16 import 'package:cake_wallet/src/widgets/standard_checkbox.dart';
@@ -629,7 +628,7 @@ class ExchangePage extends BasePage {
628
629 void _onCurrencyChange(CryptoCurrency currency, ExchangeViewModel exchangeViewModel,
630 GlobalKey<ExchangeCardState> key) {
632 - final isCurrentTypeWallet = exchangeViewModel.isDepositSameCurrency;
631 + final isCurrentTypeWallet = exchangeViewModel.useSameWalletAddress(currency);
632
633 key.currentState!.changeSelectedCurrency(currency);
634 key.currentState!.changeWalletName(isCurrentTypeWallet ? exchangeViewModel.wallet.name : '');
lib/view_model/exchange/exchange_view_model.dart
+9 -11
@@ -25,7 +25,6 @@ import 'package:cake_wallet/exchange/provider/letsexchange_exchange_provider.dar
25 import 'package:cake_wallet/exchange/provider/changenow_exchange_provider.dart';
26 import 'package:cake_wallet/exchange/provider/exchange_provider.dart';
27 import 'package:cake_wallet/exchange/provider/exolix_exchange_provider.dart';
28 -import 'package:cake_wallet/exchange/provider/sideshift_exchange_provider.dart';
28 import 'package:cake_wallet/exchange/provider/stealth_ex_exchange_provider.dart';
29 import 'package:cake_wallet/exchange/provider/swapsxyz_exchange_provider.dart';
30 import 'package:cake_wallet/exchange/provider/swaptrade_exchange_provider.dart';
@@ -44,7 +43,6 @@ import 'package:cake_wallet/utils/token_utilities.dart';
43 import 'package:cake_wallet/view_model/contact_list/contact_list_view_model.dart';
44 import 'package:cake_wallet/view_model/send/fees_view_model.dart';
45 import 'package:cake_wallet/view_model/unspent_coins/unspent_coins_list_view_model.dart';
47 -import 'package:cw_core/cake_hive.dart';
46 import 'package:cw_core/crypto_amount_format.dart';
47 import 'package:cw_core/crypto_currency.dart';
48 import 'package:cw_core/erc20_token.dart';
@@ -55,7 +53,6 @@ import 'package:cw_core/tron_token.dart';
53 import 'package:cw_core/unspent_coin_type.dart';
54 import 'package:cw_core/utils/print_verbose.dart';
55 import 'package:cw_core/utils/proxy_wrapper.dart';
58 -import 'package:cw_core/wallet_info.dart';
56 import 'package:cw_core/wallet_type.dart';
57 import 'package:hive/hive.dart';
58 import 'package:intl/intl.dart';
@@ -150,11 +147,12 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
147 }
148 });
149
153 - isDepositAddressEnabled = !(isDepositSameCurrency);
150 + isDepositAddressEnabled = !useSameWalletAddress(depositCurrency);
151 depositAmount = '';
152 receiveAmount = '';
153 receiveAddress = '';
157 - depositAddress = isDepositSameCurrency ? wallet.walletAddresses.addressForExchange : '';
154 + depositAddress =
155 + useSameWalletAddress(depositCurrency) ? wallet.walletAddresses.addressForExchange : '';
156
157 provider = providerList.firstOrNull;
158 final initialProvider = provider;
@@ -189,10 +187,10 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
187 }
188 }
189
192 - bool get isDepositSameCurrency =>
193 - depositCurrency == wallet.currency ||
194 - depositCurrency.tag == wallet.currency.tag ||
195 - depositCurrency.tag == wallet.currency.title;
190 + bool useSameWalletAddress(CryptoCurrency currency) =>
191 + currency == wallet.currency ||
192 + (currency.tag != null && currency.tag == wallet.currency.tag) ||
193 + currency.tag == wallet.currency.title;
194
195 bool get isElectrumWallet => [
196 WalletType.bitcoin,
@@ -417,7 +415,7 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
415 depositCurrency = currency;
416 isFixedRateMode = false;
417 _onPairChange();
420 - isDepositAddressEnabled = !(isDepositSameCurrency);
418 + isDepositAddressEnabled = !useSameWalletAddress(depositCurrency);
419 }
420
421 @action
@@ -425,7 +423,7 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
423 receiveCurrency = currency;
424 isFixedRateMode = false;
425 _onPairChange();
428 - isDepositAddressEnabled = !(isDepositSameCurrency);
426 + isDepositAddressEnabled = !useSameWalletAddress(depositCurrency);
427 }
428
429 @action