From 097b9ec463d6c9374a0d8d39a633fdecf3b306a6 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 26 Nov 2025 15:54:24 +0400 Subject: [PATCH] Updated on 2026-08-14 --- .../model/AvailableSwapPairsModel.kt | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/availablepairs/model/AvailableSwapPairsModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/availablepairs/model/AvailableSwapPairsModel.kt index 8e19216bf3..e6c52a0631 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/availablepairs/model/AvailableSwapPairsModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/availablepairs/model/AvailableSwapPairsModel.kt @@ -101,9 +101,12 @@ internal class AvailableSwapPairsModel @Inject constructor( private fun getAccountListUseCaseFlow(): SharedFlow> { return singleAccountStatusListSupplier(SingleAccountStatusListProducer.Params(params.userWalletId)) .distinctUntilChanged() - .map { accountStatusList -> - accountStatusList.accountStatuses.toList() - }.flowOn(dispatchers.default) + .mapNotNull { accountStatusList -> + accountStatusList.accountStatuses.filter { + it is AccountStatus.CryptoPortfolio && it.tokenList !is TokenList.Empty + } + } + .flowOn(dispatchers.default) .shareIn(scope = modelScope, started = SharingStarted.Eagerly, replay = 1) } @@ -255,13 +258,22 @@ internal class AvailableSwapPairsModel @Inject constructor( ): TokenListUMTransformer { val (appCurrency, isBalanceHidden) = appCurrencyAndBalanceHiding - val filterByQueryAccountList = accountList.associate { accountStatus -> - when (accountStatus) { - is AccountStatus.CryptoPortfolio -> accountStatus.account to accountStatus.tokenList.flattenCurrencies() - .filter { it.currency != selectedStatus?.currency } - .filterByQuery(query = query) + val filterByQueryAccountList = accountList + .associate { accountStatus -> + when (accountStatus) { + is AccountStatus.CryptoPortfolio -> { + val statuses = accountStatus.tokenList.flattenCurrencies() + .filterNot { status -> + status.currency.network.backendId == selectedStatus?.currency?.network?.backendId && + status.currency.id.contractAddress == selectedStatus.currency.id.contractAddress + } + .filterByQuery(query = query) + + accountStatus.account to statuses + } + } } - } + .filterValues { it.isNotEmpty() } if (availablePairs.isEmpty()) { return SetNoAvailablePairsTransformerV2(