diff --git a/app/src/main/java/com/tangem/tap/di/domain/OnrampDomainModule.kt b/app/src/main/java/com/tangem/tap/di/domain/OnrampDomainModule.kt index b5f053bc34..ca9f43d672 100644 --- a/app/src/main/java/com/tangem/tap/di/domain/OnrampDomainModule.kt +++ b/app/src/main/java/com/tangem/tap/di/domain/OnrampDomainModule.kt @@ -82,15 +82,6 @@ internal object OnrampDomainModule { ) } - @Provides - @Singleton - fun provideGetOnrampCurrencyUseCase( - onrampRepository: OnrampRepository, - onrampErrorResolver: OnrampErrorResolver, - ): GetOnrampCurrencyUseCase { - return GetOnrampCurrencyUseCase(onrampRepository, onrampErrorResolver) - } - @Provides @Singleton fun provideGetOnrampTransactionsUseCase( diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt b/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt index f2ab9fb04c..df2f985c7d 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt @@ -101,8 +101,6 @@ object PreferencesKeys { val SHOULD_SHOW_RING_PROMO_KEY by lazy { booleanPreferencesKey(name = "shouldShowRingPromo") } - val ONRAMP_DEFAULT_CURRENCY by lazy { stringPreferencesKey(name = "onrampDefaultCurrency") } - val ONRAMP_DEFAULT_COUNTRY by lazy { stringPreferencesKey(name = "onrampDefaultCountry") } val ONRAMP_TRANSACTIONS_STATUSES_KEY by lazy { stringPreferencesKey(name = "onrampTransactionsStatuses") } 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 d78bfa694d..a72663ae1b 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 @@ -21,7 +21,6 @@ import com.tangem.datasource.api.onramp.models.common.OnrampDestinationDTO import com.tangem.datasource.api.onramp.models.request.OnrampPairsRequest import com.tangem.datasource.api.onramp.models.response.OnrampDataJson import com.tangem.datasource.api.onramp.models.response.model.OnrampCountryDTO -import com.tangem.datasource.api.onramp.models.response.model.OnrampCurrencyDTO import com.tangem.datasource.api.onramp.models.response.model.OnrampPairDTO import com.tangem.datasource.api.onramp.models.response.model.PaymentMethodDTO import com.tangem.datasource.crypto.DataSignatureVerifier @@ -124,22 +123,23 @@ internal class DefaultOnrampRepository( } override suspend fun saveDefaultCurrency(currency: OnrampCurrency) = withContext(dispatchers.io) { - appPreferencesStore.storeObject( - key = PreferencesKeys.ONRAMP_DEFAULT_CURRENCY, - value = currencyConverter.convertBack(currency), + val country = getDefaultCountrySync() ?: return@withContext + appPreferencesStore.storeObject( + key = PreferencesKeys.ONRAMP_DEFAULT_COUNTRY, + value = countryConverter.convertBack(country.copy(defaultCurrency = currency)), ) } override suspend fun getDefaultCurrencySync(): OnrampCurrency? = withContext(dispatchers.io) { appPreferencesStore - .getObjectSyncOrNull(PreferencesKeys.ONRAMP_DEFAULT_CURRENCY) - ?.let(currencyConverter::convert) + .getObjectSyncOrNull(PreferencesKeys.ONRAMP_DEFAULT_COUNTRY) + ?.let(countryConverter::convert)?.defaultCurrency } override fun getDefaultCurrency(): Flow { return appPreferencesStore - .getObject(PreferencesKeys.ONRAMP_DEFAULT_CURRENCY) - .map { it?.let(currencyConverter::convert) } + .getObject(PreferencesKeys.ONRAMP_DEFAULT_COUNTRY) + .map { it?.let(countryConverter::convert)?.defaultCurrency } } override suspend fun saveDefaultCountry(country: OnrampCountry) = withContext(dispatchers.io) { diff --git a/domain/onramp/src/main/java/com/tangem/domain/onramp/GetOnrampCurrencyUseCase.kt b/domain/onramp/src/main/java/com/tangem/domain/onramp/GetOnrampCurrencyUseCase.kt deleted file mode 100644 index 210a6c3051..0000000000 --- a/domain/onramp/src/main/java/com/tangem/domain/onramp/GetOnrampCurrencyUseCase.kt +++ /dev/null @@ -1,26 +0,0 @@ -package com.tangem.domain.onramp - -import arrow.core.Either -import arrow.core.left -import arrow.core.right -import com.tangem.domain.onramp.model.OnrampCurrency -import com.tangem.domain.onramp.model.error.OnrampError -import com.tangem.domain.onramp.repositories.OnrampErrorResolver -import com.tangem.domain.onramp.repositories.OnrampRepository -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.catch -import kotlinx.coroutines.flow.map - -class GetOnrampCurrencyUseCase( - private val repository: OnrampRepository, - private val errorResolver: OnrampErrorResolver, -) { - - operator fun invoke(): Flow> { - return repository.getDefaultCurrency() - .map> { it.right() } - .catch { - emit(errorResolver.resolve(it).left()) - } - } -} \ 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 9451683177..dc4771d68a 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 @@ -11,7 +11,6 @@ class OnrampSaveDefaultCountryUseCase( ) { suspend operator fun invoke(country: OnrampCountry) = Either.catch { - repository.saveDefaultCurrency(country.defaultCurrency) repository.saveDefaultCountry(country) }.mapLeft(errorResolver::resolve) } \ 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 513a1a23c7..c85fe513cc 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 @@ -54,7 +54,7 @@ internal class OnrampMainComponentModel @Inject constructor( private val router: Router, private val isDemoCardUseCase: IsDemoCardUseCase, private val checkOnrampAvailabilityUseCase: CheckOnrampAvailabilityUseCase, - private val getOnrampCurrencyUseCase: GetOnrampCurrencyUseCase, + private val getOnrampCountryUseCase: GetOnrampCountryUseCase, private val clearOnrampCacheUseCase: ClearOnrampCacheUseCase, private val fetchQuotesUseCase: OnrampFetchQuotesUseCase, private val getOnrampQuotesUseCase: GetOnrampQuotesUseCase, @@ -107,7 +107,7 @@ internal class OnrampMainComponentModel @Inject constructor( fun handleOnrampAvailable(currency: OnrampCurrency) { _state.update { stateFactory.getReadyState(currency) } - subscribeToCurrencyUpdates() + subscribeToCountryAndCurrencyUpdates() subscribeToQuotesUpdate() } @@ -132,14 +132,14 @@ internal class OnrampMainComponentModel @Inject constructor( } } - private fun subscribeToCurrencyUpdates() { - getOnrampCurrencyUseCase.invoke() - .onEach { maybeCurrency -> - maybeCurrency.fold( + private fun subscribeToCountryAndCurrencyUpdates() { + getOnrampCountryUseCase.invoke() + .onEach { maybeCountry -> + maybeCountry.fold( ifLeft = ::handleOnrampError, - ifRight = { currency -> - if (currency == null) return@onEach - _state.update { amountStateFactory.getUpdatedCurrencyState(currency) } + ifRight = { country -> + if (country == null) return@onEach + _state.update { amountStateFactory.getUpdatedCurrencyState(country.defaultCurrency) } updatePairsAndQuotes() }, )