diff --git a/features/swap/data/src/main/java/com/tangem/feature/swap/converters/SwapPairInfoConverter.kt b/features/swap/data/src/main/java/com/tangem/feature/swap/converters/SwapPairInfoConverter.kt index 627a7a8fb4..9889f7d698 100644 --- a/features/swap/data/src/main/java/com/tangem/feature/swap/converters/SwapPairInfoConverter.kt +++ b/features/swap/data/src/main/java/com/tangem/feature/swap/converters/SwapPairInfoConverter.kt @@ -5,7 +5,7 @@ import com.tangem.datasource.api.express.models.response.SwapPair import com.tangem.datasource.api.express.models.response.SwapPairProvider import com.tangem.feature.swap.domain.models.domain.LeastTokenInfo import com.tangem.feature.swap.domain.models.domain.SwapPairLeast as SwapPairDomain -import com.tangem.feature.swap.domain.models.domain.SwapPairProvider as SwapPairProviderDomain +import com.tangem.feature.swap.domain.models.domain.SwapProvider as SwapPairProviderDomain import com.tangem.feature.swap.domain.models.domain.RateType as RateTypeDomain import com.tangem.utils.converter.Converter 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 93a6fc6dff..4d0bfd3e52 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 @@ -111,15 +111,17 @@ internal class SwapInteractorImpl @Inject constructor( && tokenInfoForFilter(it).network == currency.network.backendId } - val availableCryptoCurrencies = filteredPairs.mapNotNull { - findCryptoCurrencyStatusByLeastInfo(tokenInfoForAvailable(it), cryptoCurrenciesList) + val availableCryptoCurrencies = filteredPairs.mapNotNull { pair -> + val status = findCryptoCurrencyStatusByLeastInfo(tokenInfoForAvailable(pair), cryptoCurrenciesList) + status?.let { CryptoCurrencySwapInfo(it, pair.providers) } } - val unavailableCryptoCurrencies = cryptoCurrenciesList - availableCryptoCurrencies.toSet() + val unavailableCryptoCurrencies = + (cryptoCurrenciesList - availableCryptoCurrencies.map { it.currencyStatus }.toSet()) return CurrenciesGroup( available = availableCryptoCurrencies, - unavailable = unavailableCryptoCurrencies + unavailable = unavailableCryptoCurrencies.map { CryptoCurrencySwapInfo(it, emptyList()) } ) } diff --git a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/models/domain/SwapPairLeast.kt b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/models/domain/SwapPairLeast.kt index 704a27dc1b..a41f3d283d 100644 --- a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/models/domain/SwapPairLeast.kt +++ b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/models/domain/SwapPairLeast.kt @@ -1,6 +1,6 @@ package com.tangem.feature.swap.domain.models.domain -import com.tangem.domain.tokens.model.CryptoCurrency +import com.tangem.domain.tokens.model.CryptoCurrencyStatus /** * Domain layer representation of SwapPair data network model. @@ -12,20 +12,12 @@ import com.tangem.domain.tokens.model.CryptoCurrency data class SwapPairLeast( val from: LeastTokenInfo, val to: LeastTokenInfo, - val providers: List, + val providers: List, ) -/** - * Enriched model of swap pair data. Contains full CryptoCurrency models instead of least info. - * - * @property from CryptoCurrency we want to change - * @property to CryptoCurrency we want to exchange for - * @property providers Exchange providers - */ -data class SwapPair( - val from: CryptoCurrency, - val to: CryptoCurrency, - val providers: List, +data class CryptoCurrencySwapInfo( + val currencyStatus: CryptoCurrencyStatus, + val providers: List ) /** @@ -34,7 +26,7 @@ data class SwapPair( * @property providerId provider id * @property rateTypes supported rate types */ -data class SwapPairProvider( +data class SwapProvider( val providerId: Int, val rateTypes: List, ) diff --git a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/models/ui/TokensDataStateExpress.kt b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/models/ui/TokensDataStateExpress.kt index d4c4f67494..8beb9ed216 100644 --- a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/models/ui/TokensDataStateExpress.kt +++ b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/models/ui/TokensDataStateExpress.kt @@ -1,7 +1,7 @@ package com.tangem.feature.swap.domain.models.ui import com.tangem.domain.tokens.model.CryptoCurrency -import com.tangem.domain.tokens.model.CryptoCurrencyStatus +import com.tangem.feature.swap.domain.models.domain.CryptoCurrencySwapInfo data class TokensDataStateExpress( val initialCryptoCurrency: CryptoCurrency, @@ -10,8 +10,8 @@ data class TokensDataStateExpress( ) data class CurrenciesGroup( - val available: List, - val unavailable: List, + val available: List, + val unavailable: List, ) data class FoundTokensStateExpress( diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt index 119f30fea1..1513b59892 100644 --- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt +++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt @@ -139,8 +139,10 @@ internal class SwapViewModel @Inject constructor( runCatching(dispatchers.io) { swapInteractor.getTokensDataState(currency) }.onSuccess { state -> - // dataState = dataState.copy( - // ) + dataState = dataState.copy( + fromCryptoCurrency = state.initialCryptoCurrency, + toCryptoCurrency = state.toGroup.available.first().currencyStatus.currency + ) cryptoCurrency = state.initialCryptoCurrency // updateTokensState(dataState = state.foundTokensState) // startLoadingQuotes(