diff --git a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt index 5711aca6ad..f7ba2f4a06 100644 --- a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt +++ b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt @@ -68,17 +68,17 @@ internal class SwapInteractorImpl @Inject constructor( .mapValues { SwapAmount(it.value.value, it.value.decimals) } val appCurrency = userWalletManager.getUserAppCurrency() val rates = repository.getRates(appCurrency.code, tokensInWallet.map { it.id }) - cache.cacheLoadedTokens(loadedTokens) cache.cacheBalances(tokensBalance) - cache.cacheInWalletTokens(tokensInWallet) + cache.cacheLoadedTokens(loadedTokens.map { TokenWithBalance(it) }) + cache.cacheInWalletTokens(getTokensWithBalance(tokensInWallet, tokensBalance, rates, appCurrency)) return TokensDataState( preselectTokens = PreselectTokens( fromToken = initialCurrency, toToken = selectToToken(initialCurrency, tokensInWallet, loadedTokens), ), foundTokensState = FoundTokensState( - tokensInWallet = getTokensWithBalance(tokensInWallet, tokensBalance, rates, appCurrency), - loadedTokens = loadedTokens.map { TokenWithBalance(it) }, + tokensInWallet = cache.getInWalletTokens(), + loadedTokens = cache.getLoadedTokens(), ), ) } @@ -87,28 +87,29 @@ internal class SwapInteractorImpl @Inject constructor( val searchQueryLowerCase = searchQuery.lowercase() val tokensInWallet = cache.getInWalletTokens() .filter { - it.name.lowercase().contains(searchQueryLowerCase) || - it.symbol.lowercase().contains(searchQueryLowerCase) + it.token.name.lowercase().contains(searchQueryLowerCase) || + it.token.symbol.lowercase().contains(searchQueryLowerCase) } val loadedTokens = cache.getLoadedTokens() .filter { - it.name.lowercase().contains(searchQueryLowerCase) || - it.symbol.lowercase().contains(searchQueryLowerCase) + it.token.name.lowercase().contains(searchQueryLowerCase) || + it.token.symbol.lowercase().contains(searchQueryLowerCase) } - val tokensBalance = userWalletManager.getCurrentWalletTokensBalance(networkId, emptyList()) - .mapValues { SwapAmount(it.value.value, it.value.decimals) } - val appCurrency = userWalletManager.getUserAppCurrency() - val rates = repository.getRates(appCurrency.code, tokensInWallet.map { it.id }) + // val tokensBalance = userWalletManager.getCurrentWalletTokensBalance(networkId, emptyList()) + // .mapValues { SwapAmount(it.value.value, it.value.decimals) } + // val appCurrency = userWalletManager.getUserAppCurrency() + // val rates = repository.getRates(appCurrency.code, tokensInWallet.map { it.id }) return FoundTokensState( - tokensInWallet = getTokensWithBalance(tokensInWallet, tokensBalance, rates, appCurrency), - loadedTokens = loadedTokens.map { TokenWithBalance(it) }, + tokensInWallet = tokensInWallet, // getTokensWithBalance(tokensInWallet, tokensBalance, rates, appCurrency), + loadedTokens = loadedTokens, // loadedTokens.map { TokenWithBalance(it) }, ) } override fun findTokenById(id: String): Currency? { val tokensInWallet = cache.getInWalletTokens() val loadedTokens = cache.getLoadedTokens() - return tokensInWallet.firstOrNull { it.id == id } ?: loadedTokens.firstOrNull { it.id == id } + return tokensInWallet.firstOrNull { it.token.id == id }?.token + ?: loadedTokens.firstOrNull { it.token.id == id }?.token } override suspend fun givePermissionToSwap( diff --git a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/cache/SwapDataCache.kt b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/cache/SwapDataCache.kt index 4736dbf25b..36a0ef8ef3 100644 --- a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/cache/SwapDataCache.kt +++ b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/cache/SwapDataCache.kt @@ -2,18 +2,19 @@ package com.tangem.feature.swap.domain.cache import com.tangem.feature.swap.domain.models.SwapAmount import com.tangem.feature.swap.domain.models.domain.Currency +import com.tangem.feature.swap.domain.models.ui.TokenWithBalance import java.math.BigDecimal interface SwapDataCache { fun cacheAvailableToSwapTokens(networkId: String, tokens: List) - fun cacheInWalletTokens(tokens: List) - fun cacheLoadedTokens(tokens: List) + fun cacheInWalletTokens(tokens: List) + fun cacheLoadedTokens(tokens: List) fun cacheBalances(balances: Map) fun cacheLastFeeForNetwork(fee: BigDecimal, networkId: String) fun getAvailableTokens(networkId: String): List - fun getInWalletTokens(): List - fun getLoadedTokens(): List + fun getInWalletTokens(): List + fun getLoadedTokens(): List fun getBalanceForToken(symbol: String): SwapAmount? fun getLastFeeForNetwork(networkId: String): BigDecimal? } \ No newline at end of file diff --git a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/cache/SwapDataCacheImpl.kt b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/cache/SwapDataCacheImpl.kt index 55792cbf26..f044693ece 100644 --- a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/cache/SwapDataCacheImpl.kt +++ b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/cache/SwapDataCacheImpl.kt @@ -2,6 +2,7 @@ package com.tangem.feature.swap.domain.cache import com.tangem.feature.swap.domain.models.SwapAmount import com.tangem.feature.swap.domain.models.domain.Currency +import com.tangem.feature.swap.domain.models.ui.TokenWithBalance import java.math.BigDecimal class SwapDataCacheImpl : SwapDataCache { @@ -9,28 +10,28 @@ class SwapDataCacheImpl : SwapDataCache { private val availableTokensForNetwork: MutableMap> = mutableMapOf() private val feesForNetworks: MutableMap = mutableMapOf() private val tokensBalances: MutableMap = mutableMapOf() - private val lastInWalletTokens = mutableListOf() - private val lastLoadedTokens = mutableListOf() + private val lastInWalletTokens = mutableListOf() + private val lastLoadedTokens = mutableListOf() override fun cacheLastFeeForNetwork(fee: BigDecimal, networkId: String) { feesForNetworks[networkId] = fee } - override fun cacheInWalletTokens(tokens: List) { + override fun cacheInWalletTokens(tokens: List) { lastInWalletTokens.clear() lastInWalletTokens.addAll(tokens) } - override fun cacheLoadedTokens(tokens: List) { + override fun cacheLoadedTokens(tokens: List) { lastLoadedTokens.clear() lastLoadedTokens.addAll(tokens) } - override fun getInWalletTokens(): List { + override fun getInWalletTokens(): List { return lastInWalletTokens } - override fun getLoadedTokens(): List { + override fun getLoadedTokens(): List { return lastLoadedTokens }