From 4fef76e9e3bb6df266b9952529967f744047ee5b Mon Sep 17 00:00:00 2001 From: Serhii Date: Wed, 26 Feb 2025 15:22:35 +0200 Subject: [PATCH] fix auto-generate electrum subaddress --- cw_bitcoin/lib/electrum_wallet_addresses.dart | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/cw_bitcoin/lib/electrum_wallet_addresses.dart b/cw_bitcoin/lib/electrum_wallet_addresses.dart index 35c15e578..2a65f77f0 100644 --- a/cw_bitcoin/lib/electrum_wallet_addresses.dart +++ b/cw_bitcoin/lib/electrum_wallet_addresses.dart @@ -146,21 +146,24 @@ abstract class ElectrumWalletAddressesBase extends WalletAddresses with Store { String receiveAddress; - final typeMatchingReceiveAddresses = - receiveAddresses.where(_isAddressPageTypeMatch).where((addr) => !addr.isUsed); + final typeMatchingUnusedReceiveAddresses = receiveAddresses + .where(_isAddressPageTypeMatch) + .where((addr) => !addr.isUsed) + .toList(); - if ((isEnabledAutoGenerateSubaddress && receiveAddresses.isEmpty) || - typeMatchingReceiveAddresses.isEmpty) { - receiveAddress = generateNewAddress().address; - } else { - final previousAddressMatchesType = - previousAddressRecord != null && previousAddressRecord!.type == addressPageType; - - if (previousAddressMatchesType && - typeMatchingReceiveAddresses.first.address != addressesByReceiveType.first.address) { - receiveAddress = previousAddressRecord!.address; + if (isEnabledAutoGenerateSubaddress) { + if (typeMatchingUnusedReceiveAddresses.isEmpty) { + receiveAddress = generateNewAddress().address; } else { - receiveAddress = typeMatchingReceiveAddresses.first.address; + receiveAddress = typeMatchingUnusedReceiveAddresses.first.address; + } + } else { + if (previousAddressRecord != null && previousAddressRecord!.type == addressPageType) { + receiveAddress = previousAddressRecord!.address; + } else if (typeMatchingUnusedReceiveAddresses.isNotEmpty) { + receiveAddress = typeMatchingUnusedReceiveAddresses.first.address; + } else { + receiveAddress = generateNewAddress().address; } }