Updated on 2026-08-14

This commit is contained in:
Tangem 2024-12-03 18:12:58 +05:00
parent 26419a5754
commit f455f202b2
3 changed files with 44 additions and 18 deletions

View file

@ -33,19 +33,36 @@ data class OnrampStatus(
Finished(order = 10),
;
fun isTerminal(): Boolean = when (this) {
Expired,
Failed,
Paused,
Finished,
-> true
Created,
WaitingForPayment,
PaymentProcessing,
Verifying,
Paid,
Sending,
-> false
}
val isTerminal: Boolean
get() = when (this) {
Expired,
Failed,
Paused,
Finished,
-> true
Created,
WaitingForPayment,
PaymentProcessing,
Verifying,
Paid,
Sending,
-> false
}
val isHidden: Boolean
get() = when (this) {
Created,
Expired,
Paused,
-> true
WaitingForPayment,
PaymentProcessing,
Verifying,
Failed,
Paid,
Sending,
Finished,
-> false
}
}
}

View file

@ -89,7 +89,7 @@ internal class OnrampSuccessComponentModel @Inject constructor(
private fun removeTransactionIfTerminalStatus(status: OnrampStatus) {
modelScope.launch {
if (status.status.isTerminal()) {
if (status.status.isTerminal) {
onrampRemoveTransactionUseCase(status.txId)
}
}

View file

@ -49,7 +49,11 @@ internal class OnrampStatusFactory @AssistedInject constructor(
cryptoCurrencyId = cryptoCurrency.id,
).map { maybeTransaction ->
maybeTransaction.fold(
ifRight = onrampTransactionStateConverter::convertList,
ifRight = { onrampTxs ->
val transactions = onrampTransactionStateConverter.convertList(onrampTxs)
transactions.clearHiddenTerminal()
transactions.filterNot { it.activeStatus.isHidden }
},
ifLeft = { persistentListOf() },
)
}
@ -60,13 +64,13 @@ internal class OnrampStatusFactory @AssistedInject constructor(
val bottomSheetConfig = state.bottomSheetConfig?.content as? ExpressStatusBottomSheetConfig ?: return
val selectedTx = bottomSheetConfig.value as? ExpressTransactionStateUM.OnrampUM ?: return
if (selectedTx.activeStatus.isTerminal()) {
if (selectedTx.activeStatus.isTerminal) {
onrampRemoveTransactionUseCase(txId = selectedTx.info.txId)
}
}
suspend fun updateOnrmapTxStatus(onrampTx: ExpressTransactionStateUM.OnrampUM): ExpressTransactionStateUM.OnrampUM {
return if (onrampTx.activeStatus.isTerminal()) {
return if (onrampTx.activeStatus.isTerminal) {
onrampTx
} else {
getOnrampStatusUseCase(onrampTx.info.txId).fold(
@ -81,6 +85,11 @@ internal class OnrampStatusFactory @AssistedInject constructor(
}
}
private suspend fun List<ExpressTransactionStateUM.OnrampUM>.clearHiddenTerminal() {
this.filter { it.activeStatus.isHidden && it.activeStatus.isTerminal }
.forEach { onrampRemoveTransactionUseCase(txId = it.info.txId) }
}
@AssistedFactory
interface Factory {
fun create(