From 80a13febdf7750695e66ed906eebf1eedf7e44de Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 5 Nov 2025 10:16:43 +0100 Subject: [PATCH] Updated on 2026-08-14 --- .../DefaultOnrampTransactionRepository.kt | 6 +++++ .../domain/onramp/GetOnrampOffersUseCase.kt | 9 ++----- .../OnrampTransactionRepository.kt | 2 ++ .../onramp/GetOnrampOffersUseCaseTest.kt | 24 ++++++++---------- .../model/OnrampV2MainComponentModel.kt | 25 +++++++++---------- 5 files changed, 33 insertions(+), 33 deletions(-) diff --git a/data/onramp/src/main/java/com/tangem/data/onramp/DefaultOnrampTransactionRepository.kt b/data/onramp/src/main/java/com/tangem/data/onramp/DefaultOnrampTransactionRepository.kt index 49774d1443..5e515100e3 100644 --- a/data/onramp/src/main/java/com/tangem/data/onramp/DefaultOnrampTransactionRepository.kt +++ b/data/onramp/src/main/java/com/tangem/data/onramp/DefaultOnrampTransactionRepository.kt @@ -44,6 +44,12 @@ internal class DefaultOnrampTransactionRepository( } } + override fun getAllTransactions(): Flow> { + return appPreferencesStore + .getObjectSet(PreferencesKeys.ONRAMP_TRANSACTIONS_STATUSES_KEY) + .map { transactions -> transactions.map(transactionConverter::convert) } + } + override suspend fun getTransactionById(txId: String): OnrampTransaction? = withContext(dispatchers.io) { val stored = appPreferencesStore.getObjectSetSync( PreferencesKeys.ONRAMP_TRANSACTIONS_STATUSES_KEY, diff --git a/domain/onramp/src/main/java/com/tangem/domain/onramp/GetOnrampOffersUseCase.kt b/domain/onramp/src/main/java/com/tangem/domain/onramp/GetOnrampOffersUseCase.kt index 617941abc1..9ec1e3b145 100644 --- a/domain/onramp/src/main/java/com/tangem/domain/onramp/GetOnrampOffersUseCase.kt +++ b/domain/onramp/src/main/java/com/tangem/domain/onramp/GetOnrampOffersUseCase.kt @@ -3,8 +3,6 @@ package com.tangem.domain.onramp import arrow.core.left import arrow.core.right import com.tangem.domain.core.utils.EitherFlow -import com.tangem.domain.models.currency.CryptoCurrency -import com.tangem.domain.models.wallet.UserWalletId import com.tangem.domain.onramp.model.* import com.tangem.domain.onramp.model.cache.OnrampTransaction import com.tangem.domain.onramp.model.error.OnrampError @@ -25,13 +23,10 @@ class GetOnrampOffersUseCase( private val settingsRepository: SettingsRepository, ) { - operator fun invoke( - userWalletId: UserWalletId, - cryptoCurrencyId: CryptoCurrency.ID, - ): EitherFlow> { + operator fun invoke(): EitherFlow> { return combine( onrampRepository.getQuotes(), - onrampTransactionRepository.getTransactions(userWalletId, cryptoCurrencyId), + onrampTransactionRepository.getAllTransactions(), ) { quotes, transactions -> processOffers(quotes, transactions) } diff --git a/domain/onramp/src/main/java/com/tangem/domain/onramp/repositories/OnrampTransactionRepository.kt b/domain/onramp/src/main/java/com/tangem/domain/onramp/repositories/OnrampTransactionRepository.kt index 64dbac7fcc..c0ab3000ce 100644 --- a/domain/onramp/src/main/java/com/tangem/domain/onramp/repositories/OnrampTransactionRepository.kt +++ b/domain/onramp/src/main/java/com/tangem/domain/onramp/repositories/OnrampTransactionRepository.kt @@ -12,6 +12,8 @@ interface OnrampTransactionRepository { suspend fun getTransactionById(txId: String): OnrampTransaction? + fun getAllTransactions(): Flow> + fun getTransactions(userWalletId: UserWalletId, cryptoCurrencyId: CryptoCurrency.ID): Flow> suspend fun updateTransactionStatus( diff --git a/domain/onramp/src/test/kotlin/com/tangem/domain/onramp/GetOnrampOffersUseCaseTest.kt b/domain/onramp/src/test/kotlin/com/tangem/domain/onramp/GetOnrampOffersUseCaseTest.kt index 743ca16aae..660735a8e7 100644 --- a/domain/onramp/src/test/kotlin/com/tangem/domain/onramp/GetOnrampOffersUseCaseTest.kt +++ b/domain/onramp/src/test/kotlin/com/tangem/domain/onramp/GetOnrampOffersUseCaseTest.kt @@ -2,7 +2,6 @@ package com.tangem.domain.onramp import com.google.common.truth.Truth import com.tangem.domain.models.currency.CryptoCurrency -import com.tangem.domain.models.wallet.UserWalletId import com.tangem.domain.onramp.model.* import com.tangem.domain.onramp.model.cache.OnrampTransaction import com.tangem.domain.onramp.repositories.OnrampErrorResolver @@ -25,7 +24,6 @@ class GetOnrampOffersUseCaseTest { private val errorResolver: OnrampErrorResolver = mockk(relaxUnitFun = true) private val settingsRepository: SettingsRepository = mockk(relaxUnitFun = true) private val cryptoCurrencyId: CryptoCurrency.ID = mockk(relaxUnitFun = true) - private val userWalletId: UserWalletId = mockk(relaxUnitFun = true) private lateinit var useCase: GetOnrampOffersUseCase @@ -47,11 +45,11 @@ class GetOnrampOffersUseCaseTest { coEvery { settingsRepository.isGooglePayAvailability() } returns false coEvery { onrampRepository.getQuotes() } returns flowOf(emptyQuotes) - coEvery { onrampTransactionRepository.getTransactions(userWalletId, cryptoCurrencyId) } returns flowOf( + coEvery { onrampTransactionRepository.getAllTransactions() } returns flowOf( emptyTransactions, ) - val result = useCase(userWalletId, cryptoCurrencyId) + val result = useCase() result.collect { either -> Truth.assertThat(either.isRight()).isTrue() @@ -62,7 +60,7 @@ class GetOnrampOffersUseCaseTest { } coVerify { onrampRepository.getQuotes() } - coVerify { onrampTransactionRepository.getTransactions(userWalletId, cryptoCurrencyId) } + coVerify { onrampTransactionRepository.getAllTransactions() } } @Test @@ -83,11 +81,11 @@ class GetOnrampOffersUseCaseTest { coEvery { settingsRepository.isGooglePayAvailability() } returns false coEvery { onrampRepository.getQuotes() } returns flowOf(quotes) - coEvery { onrampTransactionRepository.getTransactions(userWalletId, cryptoCurrencyId) } returns flowOf( + coEvery { onrampTransactionRepository.getAllTransactions() } returns flowOf( transactions, ) - val result = useCase(userWalletId, cryptoCurrencyId) + val result = useCase() result.collect { either -> Truth.assertThat(either.isRight()).isTrue() @@ -128,11 +126,11 @@ class GetOnrampOffersUseCaseTest { coEvery { settingsRepository.isGooglePayAvailability() } returns false coEvery { onrampRepository.getQuotes() } returns flowOf(quotes) - coEvery { onrampTransactionRepository.getTransactions(userWalletId, cryptoCurrencyId) } returns flowOf( + coEvery { onrampTransactionRepository.getAllTransactions() } returns flowOf( transactions, ) - val result = useCase(userWalletId, cryptoCurrencyId) + val result = useCase() result.collect { either -> Truth.assertThat(either.isRight()).isTrue() @@ -175,11 +173,11 @@ class GetOnrampOffersUseCaseTest { coEvery { settingsRepository.isGooglePayAvailability() } returns false coEvery { onrampRepository.getQuotes() } returns flowOf(quotes) - coEvery { onrampTransactionRepository.getTransactions(userWalletId, cryptoCurrencyId) } returns flowOf( + coEvery { onrampTransactionRepository.getAllTransactions() } returns flowOf( transactions, ) - val result = useCase(userWalletId, cryptoCurrencyId) + val result = useCase() result.collect { either -> Truth.assertThat(either.isRight()).isTrue() @@ -229,11 +227,11 @@ class GetOnrampOffersUseCaseTest { coEvery { settingsRepository.isGooglePayAvailability() } returns false coEvery { onrampRepository.getQuotes() } returns flowOf(quotes) - coEvery { onrampTransactionRepository.getTransactions(userWalletId, cryptoCurrencyId) } returns flowOf( + coEvery { onrampTransactionRepository.getAllTransactions() } returns flowOf( transactions, ) - val result = useCase(userWalletId, cryptoCurrencyId) + val result = useCase() result.collect { either -> Truth.assertThat(either.isRight()).isTrue() diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt index f161c0c735..66f4fbb5f8 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt @@ -226,19 +226,18 @@ internal class OnrampV2MainComponentModel @Inject constructor( } private fun subscribeOnOffers() = modelScope.launch { - getOnrampOffersUseCase.invoke( - userWalletId = userWallet.walletId, - cryptoCurrencyId = params.cryptoCurrency.id, - ).collectLatest { maybeOffers -> - maybeOffers.fold( - ifLeft = ::handleOnrampError, - ifRight = { offers -> - if (offers.isNotEmpty()) { - _state.update { onrampOffersStateFactory.getOffersState(offers) } - } - }, - ) - } + getOnrampOffersUseCase + .invoke() + .collectLatest { maybeOffers -> + maybeOffers.fold( + ifLeft = ::handleOnrampError, + ifRight = { offers -> + if (offers.isNotEmpty()) { + _state.update { onrampOffersStateFactory.getOffersState(offers) } + } + }, + ) + } } private fun subscribeToAmountChanges() = modelScope.launch {