From 029ba6e96cf85e681b24b625ccffd84bd4d71c67 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 12 Dec 2024 20:09:16 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../data/onramp/DefaultOnrampRepository.kt | 6 ++++-- .../onramp/CheckOnrampAvailabilityUseCase.kt | 8 ++++---- .../domain/onramp/FetchOnrampCountriesUseCase.kt | 2 +- .../onramp/repositories/OnrampRepository.kt | 2 +- .../model/ConfirmResidencyModel.kt | 16 ---------------- 5 files changed, 10 insertions(+), 24 deletions(-) diff --git a/data/onramp/src/main/java/com/tangem/data/onramp/DefaultOnrampRepository.kt b/data/onramp/src/main/java/com/tangem/data/onramp/DefaultOnrampRepository.kt index a72663ae1b..d8222cc618 100644 --- a/data/onramp/src/main/java/com/tangem/data/onramp/DefaultOnrampRepository.kt +++ b/data/onramp/src/main/java/com/tangem/data/onramp/DefaultOnrampRepository.kt @@ -100,14 +100,16 @@ internal class DefaultOnrampRepository( return countriesStore.getSyncOrNull(COUNTRIES_KEY) } - override suspend fun fetchCountries() = withContext(dispatchers.io) { - if (!countriesStore.getSyncOrNull(COUNTRIES_KEY).isNullOrEmpty()) return@withContext + override suspend fun fetchCountries(): List = withContext(dispatchers.io) { + if (!countriesStore.getSyncOrNull(COUNTRIES_KEY).isNullOrEmpty()) return@withContext emptyList() val result = onrampApi.getCountries() .getOrThrow() .map(countryConverter::convert) countriesStore.store(COUNTRIES_KEY, result) + + result } override suspend fun getCountryByIp(): OnrampCountry = withContext(dispatchers.io) { diff --git a/domain/onramp/src/main/java/com/tangem/domain/onramp/CheckOnrampAvailabilityUseCase.kt b/domain/onramp/src/main/java/com/tangem/domain/onramp/CheckOnrampAvailabilityUseCase.kt index 52971ea345..60cb522991 100644 --- a/domain/onramp/src/main/java/com/tangem/domain/onramp/CheckOnrampAvailabilityUseCase.kt +++ b/domain/onramp/src/main/java/com/tangem/domain/onramp/CheckOnrampAvailabilityUseCase.kt @@ -26,16 +26,16 @@ class CheckOnrampAvailabilityUseCase( } private suspend fun proceedWithSavedCountry(savedCountry: OnrampCountry): OnrampAvailability { - val countries = repository.getCountriesSync().orEmpty() - val onrampAvailable = countries.find { it == savedCountry }?.onrampAvailable ?: false - return if (onrampAvailable) { + val countries = repository.fetchCountries() + val updatedCountry = countries.find { it.id == savedCountry.id } ?: savedCountry + return if (updatedCountry.onrampAvailable) { val currency = repository.getDefaultCurrencySync() ?: run { repository.saveDefaultCurrency(savedCountry.defaultCurrency) savedCountry.defaultCurrency } OnrampAvailability.Available(country = savedCountry, currency = currency) } else { - OnrampAvailability.NotSupported(savedCountry) + OnrampAvailability.NotSupported(updatedCountry) } } } \ No newline at end of file diff --git a/domain/onramp/src/main/java/com/tangem/domain/onramp/FetchOnrampCountriesUseCase.kt b/domain/onramp/src/main/java/com/tangem/domain/onramp/FetchOnrampCountriesUseCase.kt index 8f320a1247..1920178751 100644 --- a/domain/onramp/src/main/java/com/tangem/domain/onramp/FetchOnrampCountriesUseCase.kt +++ b/domain/onramp/src/main/java/com/tangem/domain/onramp/FetchOnrampCountriesUseCase.kt @@ -11,6 +11,6 @@ class FetchOnrampCountriesUseCase( ) { suspend operator fun invoke(): Either { - return Either.catch { repository.fetchCountries() }.mapLeft(errorResolver::resolve) + return Either.catch { repository.fetchCountries() }.mapLeft(errorResolver::resolve) } } \ No newline at end of file diff --git a/domain/onramp/src/main/java/com/tangem/domain/onramp/repositories/OnrampRepository.kt b/domain/onramp/src/main/java/com/tangem/domain/onramp/repositories/OnrampRepository.kt index 4ddaca857c..87e9bff955 100644 --- a/domain/onramp/src/main/java/com/tangem/domain/onramp/repositories/OnrampRepository.kt +++ b/domain/onramp/src/main/java/com/tangem/domain/onramp/repositories/OnrampRepository.kt @@ -16,7 +16,7 @@ interface OnrampRepository { suspend fun getCountryByIp(): OnrampCountry suspend fun getStatus(txId: String): OnrampStatus suspend fun fetchCurrencies() - suspend fun fetchCountries() + suspend fun fetchCountries(): List suspend fun fetchPaymentMethodsIfAbsent() suspend fun fetchPairs(currency: OnrampCurrency, country: OnrampCountry, cryptoCurrency: CryptoCurrency) suspend fun fetchQuotes(cryptoCurrency: CryptoCurrency, amount: Amount) diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/confirmresidency/model/ConfirmResidencyModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/confirmresidency/model/ConfirmResidencyModel.kt index d9d4c128ec..5237af3c2b 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/confirmresidency/model/ConfirmResidencyModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/confirmresidency/model/ConfirmResidencyModel.kt @@ -8,18 +8,14 @@ import com.tangem.core.decompose.model.Model import com.tangem.core.decompose.model.ParamsContainer import com.tangem.core.decompose.navigation.Router import com.tangem.core.ui.extensions.resourceReference -import com.tangem.domain.onramp.GetOnrampCountryUseCase import com.tangem.domain.onramp.OnrampSaveDefaultCountryUseCase import com.tangem.domain.onramp.analytics.OnrampAnalyticsEvent import com.tangem.features.onramp.confirmresidency.ConfirmResidencyComponent import com.tangem.features.onramp.confirmresidency.entity.ConfirmResidencyBottomSheetConfig import com.tangem.features.onramp.confirmresidency.entity.ConfirmResidencyUM import com.tangem.features.onramp.impl.R -import com.tangem.features.onramp.utils.sendOnrampErrorEvent import com.tangem.utils.coroutines.CoroutineDispatcherProvider import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.launchIn -import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import javax.inject.Inject @@ -29,7 +25,6 @@ internal class ConfirmResidencyModel @Inject constructor( private val analyticsEventHandler: AnalyticsEventHandler, private val router: Router, private val saveDefaultCountryUseCase: OnrampSaveDefaultCountryUseCase, - getOnrampCountryUseCase: GetOnrampCountryUseCase, paramsContainer: ParamsContainer, ) : Model() { @@ -50,17 +45,6 @@ internal class ConfirmResidencyModel @Inject constructor( init { analyticsEventHandler.send(OnrampAnalyticsEvent.ResidenceConfirmScreenOpened(params.country.name)) - getOnrampCountryUseCase.invoke() - .onEach { maybeCountry -> - maybeCountry.onLeft { - analyticsEventHandler.sendOnrampErrorEvent(it, params.cryptoCurrency.symbol) - } - val country = maybeCountry.getOrNull() - if (country != null) { - params.onDismiss(country) - } - } - .launchIn(modelScope) } private fun getPrimaryButtonConfig() = if (params.country.onrampAvailable) {