Updated on 2026-08-14
This commit is contained in:
commit
0bf883e706
3 changed files with 44 additions and 18 deletions
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue