fix: use buy-specific address for buy/sell flow and restrict lightning invoice generation to bitcoin wallets

Omar committed Jun 10, 2026 at 19:55 UTC dc1b369e08048f6c83242ab2f8e8ff358923de76
2 files changed +7 -5
lib/src/screens/buy/buy_sell_page.dart
+5 -5
@@ -325,7 +325,7 @@ class BuySellPage extends BasePage {
325 }
326 });
327
328 - reaction((_) => buySellViewModel.wallet.walletAddresses.addressForExchange, (String address) {
328 + reaction((_) => buySellViewModel.wallet.walletAddresses.addressForBuy, (String address) {
329 if (buySellViewModel.cryptoCurrency == CryptoCurrency.xmr) {
330 cryptoCurrencyKey.currentState!.changeAddress(address: address);
331 }
@@ -359,7 +359,7 @@ class BuySellPage extends BasePage {
359
360 key.currentState!.changeAddress(
361 address:
362 - isCurrentTypeWallet ? buySellViewModel.wallet.walletAddresses.addressForExchange : '');
362 + isCurrentTypeWallet ? buySellViewModel.wallet.walletAddresses.addressForBuy : '');
363
364 key.currentState!.changeAmount(amount: '');
365 }
@@ -371,9 +371,9 @@ class BuySellPage extends BasePage {
371 if (isCurrentTypeWallet) {
372 key.currentState!.changeWalletName(buySellViewModel.wallet.name);
373 key.currentState!.addressController.text =
374 - buySellViewModel.wallet.walletAddresses.addressForExchange;
374 + buySellViewModel.wallet.walletAddresses.addressForBuy;
375 } else if (key.currentState!.addressController.text ==
376 - buySellViewModel.wallet.walletAddresses.addressForExchange) {
376 + buySellViewModel.wallet.walletAddresses.addressForBuy) {
377 key.currentState!.changeWalletName('');
378 key.currentState!.addressController.text = '';
379 }
@@ -429,7 +429,7 @@ class BuySellPage extends BasePage {
429 initialCurrency: buySellViewModel.cryptoCurrency,
430 initialWalletName: '',
431 initialAddress: buySellViewModel.cryptoCurrency == buySellViewModel.wallet.currency
432 - ? buySellViewModel.wallet.walletAddresses.addressForExchange
432 + ? buySellViewModel.wallet.walletAddresses.addressForBuy
433 : buySellViewModel.cryptoCurrencyAddress,
434 initialIsAmountEditable: true,
435 isAmountEstimated: true,
lib/view_model/exchange/exchange_view_model.dart
+2
@@ -1071,6 +1071,7 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
1071 }
1072
1073 if (depositCurrency == CryptoCurrency.btcln &&
1074 + wallet.type == WalletType.bitcoin &&
1075 depositAddress == wallet.walletAddresses.addressForExchange) {
1076 final invoice = await bitcoin!.getLightningInvoice(wallet, BigInt.zero);
1077 if (invoice != null) {
@@ -1079,6 +1080,7 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
1080 }
1081
1082 if (receiveCurrency == CryptoCurrency.btcln &&
1083 + wallet.type == WalletType.bitcoin &&
1084 receiveAddress == wallet.walletAddresses.addressForExchange) {
1085 final invoice = await bitcoin!.getLightningInvoice(wallet, BigInt.zero);
1086 if (invoice != null) {