From 1d810d815f69d6a1ba7b665a28cdd926c31351fa Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 6 Dec 2024 14:01:39 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../onramp/CheckOnrampAvailabilityUseCase.kt | 40 ++++++++++--------- .../onramp/OnrampSaveDefaultCountryUseCase.kt | 2 +- .../main/model/OnrampMainComponentModel.kt | 10 ++--- 3 files changed, 26 insertions(+), 26 deletions(-) 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 60a38a8c5f..13d75e5688 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 @@ -2,33 +2,35 @@ package com.tangem.domain.onramp import arrow.core.Either import com.tangem.domain.onramp.model.OnrampAvailability +import com.tangem.domain.onramp.model.OnrampCountry import com.tangem.domain.onramp.repositories.OnrampRepository -import com.tangem.domain.tokens.model.CryptoCurrency class CheckOnrampAvailabilityUseCase(private val repository: OnrampRepository) { - suspend operator fun invoke(cryptoCurrency: CryptoCurrency): Either { + suspend operator fun invoke(): Either { return Either.catch { repository.fetchPaymentMethodsIfAbsent() - repository.getDefaultCountrySync()?.let { savedCountry -> - return@catch if (savedCountry.onrampAvailable) { - val currency = repository.getDefaultCurrencySync() ?: run { - repository.saveDefaultCurrency(savedCountry.defaultCurrency) - savedCountry.defaultCurrency - } - repository.fetchPairs( - currency = currency, - country = savedCountry, - cryptoCurrency = cryptoCurrency, - ) - OnrampAvailability.Available(country = savedCountry, currency = currency) - } else { - OnrampAvailability.NotSupported(savedCountry) - } + val savedCountry = repository.getDefaultCountrySync() + if (savedCountry != null) { + proceedWithSavedCountry(savedCountry = savedCountry) + } else { + val detectedCountry = repository.getCountryByIp() + OnrampAvailability.ConfirmResidency(detectedCountry) } + } + } - val detectedCountry = repository.getCountryByIp() - OnrampAvailability.ConfirmResidency(detectedCountry) + private suspend fun proceedWithSavedCountry(savedCountry: OnrampCountry): OnrampAvailability { + val countries = repository.getCountries() + val onrampAvailable = countries.find { it == savedCountry }?.onrampAvailable ?: false + return if (onrampAvailable) { + val currency = repository.getDefaultCurrencySync() ?: run { + repository.saveDefaultCurrency(savedCountry.defaultCurrency) + savedCountry.defaultCurrency + } + OnrampAvailability.Available(country = savedCountry, currency = currency) + } else { + OnrampAvailability.NotSupported(savedCountry) } } } \ No newline at end of file diff --git a/domain/onramp/src/main/java/com/tangem/domain/onramp/OnrampSaveDefaultCountryUseCase.kt b/domain/onramp/src/main/java/com/tangem/domain/onramp/OnrampSaveDefaultCountryUseCase.kt index 9ef6dc45c0..bff9d1e4bb 100644 --- a/domain/onramp/src/main/java/com/tangem/domain/onramp/OnrampSaveDefaultCountryUseCase.kt +++ b/domain/onramp/src/main/java/com/tangem/domain/onramp/OnrampSaveDefaultCountryUseCase.kt @@ -6,7 +6,7 @@ import com.tangem.domain.onramp.repositories.OnrampRepository class OnrampSaveDefaultCountryUseCase(private val repository: OnrampRepository) { suspend operator fun invoke(country: OnrampCountry) { - repository.saveDefaultCountry(country) repository.saveDefaultCurrency(country.defaultCurrency) + repository.saveDefaultCountry(country) } } \ No newline at end of file diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt index f3e4f8ab61..1846c1fd2e 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt @@ -110,7 +110,7 @@ internal class OnrampMainComponentModel @Inject constructor( private fun checkResidenceCountry() { modelScope.launch { - checkOnrampAvailabilityUseCase.invoke(params.cryptoCurrency) + checkOnrampAvailabilityUseCase.invoke() .onRight(::handleOnrampAvailability) .onLeft { Timber.e(it) } } @@ -128,11 +128,9 @@ internal class OnrampMainComponentModel @Inject constructor( private fun subscribeToCurrencyUpdates() { getOnrampCurrencyUseCase.invoke() .onEach { maybeCurrency -> - val currency = maybeCurrency.getOrNull() - if (currency != null) { - _state.update { amountStateFactory.getUpdatedCurrencyState(currency) } - updatePairsAndQuotes() - } + val currency = maybeCurrency.getOrNull() ?: return@onEach + _state.update { amountStateFactory.getUpdatedCurrencyState(currency) } + updatePairsAndQuotes() } .launchIn(modelScope) }