Updated on 2026-08-14

This commit is contained in:
Tangem 2025-05-15 16:37:06 +05:00
parent 139ca05985
commit 349d8fc7dd
6 changed files with 37 additions and 26 deletions

View file

@ -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) {

View file

@ -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,
)

View file

@ -14,7 +14,12 @@ interface OnrampTransactionRepository {
fun getTransactions(userWalletId: UserWalletId, cryptoCurrencyId: CryptoCurrency.ID): Flow<List<OnrampTransaction>>
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)
}

View file

@ -125,6 +125,7 @@ internal class OnrampStatusFactory @AssistedInject constructor(
onrampUpdateTransactionStatusUseCase(
txId = txId,
externalTxUrl = statusModel.externalTxUrl.orEmpty(),
externalTxId = statusModel.externalTxId.orEmpty(),
status = statusModel.status,
)
}

View file

@ -76,6 +76,7 @@ internal class OnrampStatusFactory @Inject constructor(
onrampUpdateTransactionStatusUseCase(
txId = txId,
externalTxUrl = statusModel.externalTxUrl.orEmpty(),
externalTxId = statusModel.externalTxId.orEmpty(),
status = statusModel.status,
)
}

View file

@ -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 {