diff --git a/domain/onramp/models/src/main/kotlin/com/tangem/domain/onramp/model/OnrampStatus.kt b/domain/onramp/models/src/main/kotlin/com/tangem/domain/onramp/model/OnrampStatus.kt index 6547e2e546..64aa740a5e 100644 --- a/domain/onramp/models/src/main/kotlin/com/tangem/domain/onramp/model/OnrampStatus.kt +++ b/domain/onramp/models/src/main/kotlin/com/tangem/domain/onramp/model/OnrampStatus.kt @@ -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 + } } } \ No newline at end of file diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/model/OnrampSuccessComponentModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/model/OnrampSuccessComponentModel.kt index 6e925f143c..6b0e80f76d 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/model/OnrampSuccessComponentModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/model/OnrampSuccessComponentModel.kt @@ -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) } } 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 686932a3a8..93bf261ff8 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 @@ -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.clearHiddenTerminal() { + this.filter { it.activeStatus.isHidden && it.activeStatus.isTerminal } + .forEach { onrampRemoveTransactionUseCase(txId = it.info.txId) } + } + @AssistedFactory interface Factory { fun create(