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 72a36a00db..6588bd6051 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 @@ -63,14 +63,19 @@ internal class DefaultOnrampTransactionRepository( }.map(transactionConverter::convert) } - override suspend fun updateTransactionStatus(txId: String, externalTxUrl: String, status: OnrampStatus.Status) = - withContext(dispatchers.io) { - val updatedTx = getTransactionById(txId)?.copy( - externalTxUrl = externalTxUrl, - status = status, - ) ?: return@withContext - storeTransaction(updatedTx) - } + override suspend fun updateTransactionStatus( + txId: String, + externalTxId: String, + externalTxUrl: String, + status: OnrampStatus.Status, + ) = withContext(dispatchers.io) { + val updatedTx = getTransactionById(txId)?.copy( + externalTxUrl = externalTxUrl, + externalTxId = externalTxId, + status = status, + ) ?: return@withContext + storeTransaction(updatedTx) + } override suspend fun removeTransaction(txId: String) { withContext(dispatchers.io) { diff --git a/domain/onramp/src/main/java/com/tangem/domain/onramp/OnrampUpdateTransactionStatusUseCase.kt b/domain/onramp/src/main/java/com/tangem/domain/onramp/OnrampUpdateTransactionStatusUseCase.kt index 0c59d82df8..2b5e6836cc 100644 --- a/domain/onramp/src/main/java/com/tangem/domain/onramp/OnrampUpdateTransactionStatusUseCase.kt +++ b/domain/onramp/src/main/java/com/tangem/domain/onramp/OnrampUpdateTransactionStatusUseCase.kt @@ -10,9 +10,15 @@ class OnrampUpdateTransactionStatusUseCase( private val errorResolver: OnrampErrorResolver, ) { - suspend operator fun invoke(txId: String, externalTxUrl: String, status: OnrampStatus.Status) = Either.catch { + suspend operator fun invoke( + txId: String, + externalTxId: String, + externalTxUrl: String, + status: OnrampStatus.Status, + ) = Either.catch { onrampTransactionRepository.updateTransactionStatus( txId = txId, + externalTxId = externalTxId, externalTxUrl = externalTxUrl, status = status, ) 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 f426a5ce30..a55ad0d3b8 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 @@ -14,7 +14,12 @@ interface OnrampTransactionRepository { fun getTransactions(userWalletId: UserWalletId, cryptoCurrencyId: CryptoCurrency.ID): Flow> - suspend fun updateTransactionStatus(txId: String, externalTxUrl: String, status: OnrampStatus.Status) + suspend fun updateTransactionStatus( + txId: String, + externalTxId: String, + externalTxUrl: String, + status: OnrampStatus.Status, + ) suspend fun removeTransaction(txId: String) } \ No newline at end of file diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/express/OnrampStatusFactory.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/express/OnrampStatusFactory.kt index 76ca1a1052..2da3089940 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/express/OnrampStatusFactory.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/express/OnrampStatusFactory.kt @@ -125,6 +125,7 @@ internal class OnrampStatusFactory @AssistedInject constructor( onrampUpdateTransactionStatusUseCase( txId = txId, externalTxUrl = statusModel.externalTxUrl.orEmpty(), + externalTxId = statusModel.externalTxId.orEmpty(), status = statusModel.status, ) } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/OnrampStatusFactory.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/OnrampStatusFactory.kt index b0347bbc46..5eb8b03010 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/OnrampStatusFactory.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/OnrampStatusFactory.kt @@ -76,6 +76,7 @@ internal class OnrampStatusFactory @Inject constructor( onrampUpdateTransactionStatusUseCase( txId = txId, externalTxUrl = statusModel.externalTxUrl.orEmpty(), + externalTxId = statusModel.externalTxId.orEmpty(), status = statusModel.status, ) } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/SingleWalletOnrampTransactionConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/SingleWalletOnrampTransactionConverter.kt index ce57d2ac3a..6c056b3973 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/SingleWalletOnrampTransactionConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/SingleWalletOnrampTransactionConverter.kt @@ -157,7 +157,7 @@ internal class SingleWalletOnrampTransactionConverter( return ExpressStatusUM( title = resourceReference(R.string.common_transaction_status), - link = getStatusLink(status, externalTxUrl), + link = getStatusLink(externalTxUrl), statuses = statuses, ) } @@ -264,22 +264,15 @@ internal class SingleWalletOnrampTransactionConverter( state = getStatusState(OnrampStatus.Status.Sending), ) - private fun getStatusLink(status: OnrampStatus.Status, externalTxUrl: String?): ExpressLinkUM { + private fun getStatusLink(externalTxUrl: String?): ExpressLinkUM { if (externalTxUrl == null) return ExpressLinkUM.Empty - return when (status) { - OnrampStatus.Status.Verifying, - OnrampStatus.Status.Failed, - -> { - ExpressLinkUM.Content( - icon = R.drawable.ic_arrow_top_right_24, - text = resourceReference(R.string.common_go_to_provider), - onClick = { - clickIntents.onGoToProviderClick(externalTxUrl) - }, - ) - } - else -> ExpressLinkUM.Empty - } + return ExpressLinkUM.Content( + icon = R.drawable.ic_arrow_top_right_24, + text = resourceReference(R.string.common_go_to_provider), + onClick = { + clickIntents.onGoToProviderClick(externalTxUrl) + }, + ) } private fun OnrampStatus.Status.getStatusState(targetState: OnrampStatus.Status) = when {