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