Updated on 2026-08-14

This commit is contained in:
Tangem 2025-07-22 11:44:55 +05:00
commit 5e1e708deb
9 changed files with 40 additions and 4 deletions

View file

@ -6,9 +6,11 @@ import com.tangem.datasource.api.common.response.getOrThrow
import com.tangem.datasource.api.express.TangemExpressApi
import com.tangem.datasource.exchangeservice.swap.ExpressUtils
import com.tangem.datasource.local.preferences.AppPreferencesStore
import com.tangem.domain.express.models.ExpressProvider
import com.tangem.domain.express.ExpressRepository
import com.tangem.domain.express.models.ExpressProvider
import com.tangem.domain.express.models.ExpressProviderType
import com.tangem.domain.wallets.models.UserWallet
import com.tangem.utils.extensions.filterIf
import timber.log.Timber
internal class DefaultExpressRepository(
@ -16,7 +18,10 @@ internal class DefaultExpressRepository(
private val appPreferencesStore: AppPreferencesStore,
) : ExpressRepository {
override suspend fun getProviders(userWallet: UserWallet): List<ExpressProvider> {
override suspend fun getProviders(
userWallet: UserWallet,
filterProviderTypes: List<ExpressProviderType>,
): List<ExpressProvider> {
return safeApiCall(
call = {
tangemExpressApi.getProviders(
@ -26,6 +31,7 @@ internal class DefaultExpressRepository(
appPreferencesStore = appPreferencesStore,
),
).getOrThrow().map(ExpressProviderConverter()::convert)
.filterIf(filterProviderTypes.isNotEmpty()) { it.type in filterProviderTypes }
},
onError = {
Timber.w(it, "Unable to fetch express providers")

View file

@ -58,6 +58,7 @@ internal class DefaultSwapRepositoryV2 @Inject constructor(
userWallet: UserWallet,
initialCurrency: CryptoCurrency,
cryptoCurrencyStatusList: List<CryptoCurrencyStatus>,
filterProviderTypes: List<ExpressProviderType>,
): List<SwapPairModel> = withContext(coroutineDispatcher.io) {
val cryptoCurrencyList = cryptoCurrencyStatusList.map { it.currency }
@ -67,7 +68,10 @@ internal class DefaultSwapRepositoryV2 @Inject constructor(
cryptoCurrencyList = cryptoCurrencyList,
)
val providers = expressRepository.getProviders(userWallet = userWallet)
val providers = expressRepository.getProviders(
userWallet = userWallet,
filterProviderTypes = filterProviderTypes,
)
val mappedProviders = providers.associateBy(ExpressProvider::providerId)
allPairs.map { pair ->