diff --git a/lib/services/mixins/paynym_wallet_interface.dart b/lib/services/mixins/paynym_wallet_interface.dart index 5bfbbe068..7d01bac46 100644 --- a/lib/services/mixins/paynym_wallet_interface.dart +++ b/lib/services/mixins/paynym_wallet_interface.dart @@ -148,15 +148,13 @@ mixin PaynymWalletInterface { btc_dart.NetworkType get networkType => _network; Future
currentReceivingPaynymAddress(PaymentCode sender) async { - final key = await lookupKey(sender.toString()); + final keys = await lookupKey(sender.toString()); final address = await _db .getAddresses(_walletId) .filter() .subTypeEqualTo(AddressSubType.paynymReceive) .and() - .otherDataEqualTo(key) - .and() - .otherDataIsNotNull() + .anyOf(keys, (q, String e) => q.otherDataEqualTo(e)) .sortByDerivationIndexDesc() .findFirst(); @@ -331,15 +329,13 @@ mixin PaynymWalletInterface { const maxCount = 2147483647; for (int i = startIndex; i < maxCount; i++) { - final key = await lookupKey(pCode.toString()); + final keys = await lookupKey(pCode.toString()); final address = await _db .getAddresses(_walletId) .filter() .subTypeEqualTo(AddressSubType.paynymSend) .and() - .otherDataEqualTo(key) - .and() - .otherDataIsNotNull() + .anyOf(keys, (q, String e) => q.otherDataEqualTo(e)) .and() .derivationIndexEqualTo(i) .findFirst(); @@ -1215,16 +1211,17 @@ mixin PaynymWalletInterface { } /// look up a key that corresponds to a payment code string - Future lookupKey(String paymentCodeString) async { + Future> lookupKey(String paymentCodeString) async { final keys = (await _secureStorage.keys).where((e) => e.startsWith(kPCodeKeyPrefix)); + final List result = []; for (final key in keys) { final value = await _secureStorage.read(key: key); if (value == paymentCodeString) { - return key; + result.add(key); } } - return null; + return result; } /// fetch a payment code string