Updated on 2026-08-14
This commit is contained in:
parent
9b7bbe2564
commit
a1970699cc
8 changed files with 70 additions and 26 deletions
|
|
@ -91,4 +91,10 @@ enum class Status {
|
|||
|
||||
@Json(name = "paused")
|
||||
Paused,
|
||||
|
||||
@Json(name = "refund-in-progress")
|
||||
RefundInProgress,
|
||||
|
||||
@Json(name = "refunded")
|
||||
Refunded,
|
||||
}
|
||||
|
|
@ -31,6 +31,8 @@ data class OnrampStatus(
|
|||
Paid(order = 8),
|
||||
Sending(order = 9),
|
||||
Finished(order = 10),
|
||||
RefundInProgress(order = 11),
|
||||
Refunded(order = 12),
|
||||
;
|
||||
|
||||
val isTerminal: Boolean
|
||||
|
|
@ -39,6 +41,7 @@ data class OnrampStatus(
|
|||
Failed,
|
||||
Paused,
|
||||
Finished,
|
||||
Refunded,
|
||||
-> true
|
||||
Created,
|
||||
WaitingForPayment,
|
||||
|
|
@ -46,6 +49,7 @@ data class OnrampStatus(
|
|||
Verifying,
|
||||
Paid,
|
||||
Sending,
|
||||
RefundInProgress,
|
||||
-> false
|
||||
}
|
||||
|
||||
|
|
@ -62,6 +66,8 @@ data class OnrampStatus(
|
|||
Verifying,
|
||||
Paid,
|
||||
Sending,
|
||||
RefundInProgress,
|
||||
Refunded,
|
||||
-> false
|
||||
}
|
||||
|
||||
|
|
@ -78,6 +84,8 @@ data class OnrampStatus(
|
|||
Paid,
|
||||
Sending,
|
||||
Finished,
|
||||
RefundInProgress,
|
||||
Refunded,
|
||||
-> false
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,16 +42,13 @@ internal fun OnrampAmountContent(state: OnrampAmountBlockUM, modifier: Modifier
|
|||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
) {
|
||||
OnrampCurrencyIcon(currencyUM = state.currencyUM)
|
||||
OnrampAmountField(
|
||||
amountField = state.amountFieldModel,
|
||||
isLoading = state.secondaryFieldModel is OnrampAmountSecondaryFieldUM.Loading,
|
||||
)
|
||||
OnrampAmountField(amountField = state.amountFieldModel)
|
||||
OnrampAmountSecondary(state = state.secondaryFieldModel)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun OnrampAmountField(amountField: AmountFieldModel, isLoading: Boolean) {
|
||||
private fun OnrampAmountField(amountField: AmountFieldModel) {
|
||||
val decimalFormat = rememberDecimalFormat()
|
||||
val requester = remember { FocusRequester() }
|
||||
AmountTextField(
|
||||
|
|
@ -70,7 +67,7 @@ private fun OnrampAmountField(amountField: AmountFieldModel, isLoading: Boolean)
|
|||
color = TangemTheme.colors.text.primary1,
|
||||
textAlign = TextAlign.Center,
|
||||
),
|
||||
isEnabled = !amountField.isError && !isLoading,
|
||||
isEnabled = !amountField.isError,
|
||||
isAutoResize = true,
|
||||
isValuePasted = amountField.isValuePasted,
|
||||
onValuePastedTriggerDismiss = amountField.onValuePastedTriggerDismiss,
|
||||
|
|
|
|||
|
|
@ -148,6 +148,10 @@ internal class SetOnrampSuccessContentConverter(
|
|||
this == OnrampStatus.Status.Paid -> {
|
||||
resourceReference(R.string.express_status_buying_active, wrappedList(cryptoCurrency.name))
|
||||
}
|
||||
this == OnrampStatus.Status.RefundInProgress ||
|
||||
this == OnrampStatus.Status.Refunded -> {
|
||||
resourceReference(R.string.express_exchange_status_failed)
|
||||
}
|
||||
else -> {
|
||||
resourceReference(R.string.express_status_bought, wrappedList(cryptoCurrency.name))
|
||||
}
|
||||
|
|
@ -166,6 +170,12 @@ internal class SetOnrampSuccessContentConverter(
|
|||
wrappedList(cryptoCurrency.name),
|
||||
)
|
||||
}
|
||||
this == OnrampStatus.Status.RefundInProgress -> {
|
||||
resourceReference(R.string.express_exchange_status_refunding)
|
||||
}
|
||||
this == OnrampStatus.Status.Refunded -> {
|
||||
resourceReference(R.string.express_exchange_status_refunded)
|
||||
}
|
||||
else -> {
|
||||
resourceReference(R.string.express_exchange_status_sent, wrappedList(cryptoCurrency.name))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,6 @@
|
|||
package com.tangem.feature.tokendetails.presentation.tokendetails.state.factory
|
||||
|
||||
import com.tangem.common.ui.expressStatus.state.ExpressLinkUM
|
||||
import com.tangem.common.ui.expressStatus.state.ExpressStatusItemState
|
||||
import com.tangem.common.ui.expressStatus.state.ExpressStatusItemUM
|
||||
import com.tangem.common.ui.expressStatus.state.ExpressStatusUM
|
||||
import com.tangem.common.ui.expressStatus.state.*
|
||||
import com.tangem.common.ui.notifications.ExpressNotificationsUM
|
||||
import com.tangem.common.ui.notifications.NotificationUM
|
||||
import com.tangem.core.analytics.api.AnalyticsEventHandler
|
||||
|
|
@ -23,9 +20,6 @@ import com.tangem.domain.onramp.model.cache.OnrampTransaction
|
|||
import com.tangem.domain.tokens.model.CryptoCurrency
|
||||
import com.tangem.domain.tokens.model.CryptoCurrencyStatus
|
||||
import com.tangem.domain.tokens.model.analytics.TokenOnrampAnalyticsEvent
|
||||
import com.tangem.common.ui.expressStatus.state.ExpressTransactionStateIconUM
|
||||
import com.tangem.common.ui.expressStatus.state.ExpressTransactionStateInfoUM
|
||||
import com.tangem.common.ui.expressStatus.state.ExpressTransactionStateUM
|
||||
import com.tangem.feature.tokendetails.presentation.tokendetails.model.TokenDetailsClickIntents
|
||||
import com.tangem.features.tokendetails.impl.R
|
||||
import com.tangem.utils.Provider
|
||||
|
|
@ -129,8 +123,12 @@ internal class TokenDetailsOnrampTransactionStateConverter(
|
|||
|
||||
private fun getIconState(status: OnrampStatus.Status): ExpressTransactionStateIconUM {
|
||||
return when (status) {
|
||||
OnrampStatus.Status.Verifying -> ExpressTransactionStateIconUM.Warning
|
||||
OnrampStatus.Status.Failed -> ExpressTransactionStateIconUM.Error
|
||||
OnrampStatus.Status.RefundInProgress,
|
||||
OnrampStatus.Status.Verifying,
|
||||
-> ExpressTransactionStateIconUM.Warning
|
||||
OnrampStatus.Status.Refunded,
|
||||
OnrampStatus.Status.Failed,
|
||||
-> ExpressTransactionStateIconUM.Error
|
||||
else -> ExpressTransactionStateIconUM.None
|
||||
}
|
||||
}
|
||||
|
|
@ -213,6 +211,10 @@ internal class TokenDetailsOnrampTransactionStateConverter(
|
|||
wrappedList(cryptoCurrency.name),
|
||||
)
|
||||
}
|
||||
this == OnrampStatus.Status.RefundInProgress ||
|
||||
this == OnrampStatus.Status.Refunded -> {
|
||||
resourceReference(R.string.express_exchange_status_failed)
|
||||
}
|
||||
else -> {
|
||||
resourceReference(R.string.express_status_bought, wrappedList(cryptoCurrency.name))
|
||||
}
|
||||
|
|
@ -234,6 +236,12 @@ internal class TokenDetailsOnrampTransactionStateConverter(
|
|||
wrappedList(cryptoCurrency.name),
|
||||
)
|
||||
}
|
||||
this == OnrampStatus.Status.RefundInProgress -> {
|
||||
resourceReference(R.string.express_exchange_status_refunding)
|
||||
}
|
||||
this == OnrampStatus.Status.Refunded -> {
|
||||
resourceReference(R.string.express_exchange_status_refunded)
|
||||
}
|
||||
else -> {
|
||||
resourceReference(
|
||||
R.string.express_exchange_status_sent,
|
||||
|
|
@ -241,7 +249,11 @@ internal class TokenDetailsOnrampTransactionStateConverter(
|
|||
)
|
||||
}
|
||||
},
|
||||
state = getStatusState(OnrampStatus.Status.Sending),
|
||||
state = when {
|
||||
this == OnrampStatus.Status.RefundInProgress -> ExpressStatusItemState.Active
|
||||
this == OnrampStatus.Status.Refunded -> ExpressStatusItemState.Error
|
||||
else -> getStatusState(OnrampStatus.Status.Sending)
|
||||
},
|
||||
)
|
||||
|
||||
private fun getStatusLink(status: OnrampStatus.Status, externalTxUrl: String?): ExpressLinkUM {
|
||||
|
|
|
|||
|
|
@ -134,10 +134,12 @@ internal class OnrampStatusFactory @AssistedInject constructor(
|
|||
PaymentProcessing,
|
||||
Paid,
|
||||
Sending,
|
||||
RefundInProgress,
|
||||
-> ExpressAnalyticsStatus.InProgress
|
||||
Verifying -> ExpressAnalyticsStatus.KYC
|
||||
Failed -> ExpressAnalyticsStatus.Fail
|
||||
Finished -> ExpressAnalyticsStatus.Done
|
||||
Refunded -> ExpressAnalyticsStatus.Refunded
|
||||
null -> null
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -94,10 +94,12 @@ internal class OnrampStatusFactory @Inject constructor(
|
|||
PaymentProcessing,
|
||||
Paid,
|
||||
Sending,
|
||||
RefundInProgress,
|
||||
-> ExpressAnalyticsStatus.InProgress
|
||||
Verifying -> ExpressAnalyticsStatus.KYC
|
||||
Failed -> ExpressAnalyticsStatus.Fail
|
||||
Finished -> ExpressAnalyticsStatus.Done
|
||||
Refunded -> ExpressAnalyticsStatus.Refunded
|
||||
null -> null
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,6 @@
|
|||
package com.tangem.feature.wallet.presentation.wallet.state.transformers.converter
|
||||
|
||||
import com.tangem.common.ui.expressStatus.state.ExpressLinkUM
|
||||
import com.tangem.common.ui.expressStatus.state.ExpressStatusItemState
|
||||
import com.tangem.common.ui.expressStatus.state.ExpressStatusItemUM
|
||||
import com.tangem.common.ui.expressStatus.state.ExpressStatusUM
|
||||
import com.tangem.common.ui.expressStatus.state.*
|
||||
import com.tangem.common.ui.notifications.ExpressNotificationsUM
|
||||
import com.tangem.common.ui.notifications.NotificationUM
|
||||
import com.tangem.core.analytics.api.AnalyticsEventHandler
|
||||
|
|
@ -22,11 +19,8 @@ import com.tangem.domain.onramp.model.OnrampStatus
|
|||
import com.tangem.domain.onramp.model.cache.OnrampTransaction
|
||||
import com.tangem.domain.tokens.model.CryptoCurrencyStatus
|
||||
import com.tangem.domain.tokens.model.analytics.TokenOnrampAnalyticsEvent
|
||||
import com.tangem.feature.wallet.impl.R
|
||||
import com.tangem.common.ui.expressStatus.state.ExpressTransactionStateIconUM
|
||||
import com.tangem.common.ui.expressStatus.state.ExpressTransactionStateInfoUM
|
||||
import com.tangem.common.ui.expressStatus.state.ExpressTransactionStateUM
|
||||
import com.tangem.feature.wallet.child.wallet.model.intents.WalletClickIntents
|
||||
import com.tangem.feature.wallet.impl.R
|
||||
import com.tangem.utils.converter.Converter
|
||||
import kotlinx.collections.immutable.persistentListOf
|
||||
|
||||
|
|
@ -142,8 +136,11 @@ internal class SingleWalletOnrampTransactionConverter(
|
|||
|
||||
private fun getIconState(status: OnrampStatus.Status): ExpressTransactionStateIconUM {
|
||||
return when (status) {
|
||||
OnrampStatus.Status.Verifying -> ExpressTransactionStateIconUM.Warning
|
||||
OnrampStatus.Status.Failed -> ExpressTransactionStateIconUM.Error
|
||||
OnrampStatus.Status.Verifying,
|
||||
-> ExpressTransactionStateIconUM.Warning
|
||||
OnrampStatus.Status.Refunded,
|
||||
OnrampStatus.Status.Failed,
|
||||
-> ExpressTransactionStateIconUM.Error
|
||||
else -> ExpressTransactionStateIconUM.None
|
||||
}
|
||||
}
|
||||
|
|
@ -226,6 +223,10 @@ internal class SingleWalletOnrampTransactionConverter(
|
|||
wrappedList(currency.name),
|
||||
)
|
||||
}
|
||||
this == OnrampStatus.Status.RefundInProgress ||
|
||||
this == OnrampStatus.Status.Refunded -> {
|
||||
resourceReference(R.string.express_exchange_status_failed)
|
||||
}
|
||||
else -> {
|
||||
resourceReference(R.string.express_status_bought, wrappedList(currency.name))
|
||||
}
|
||||
|
|
@ -247,6 +248,12 @@ internal class SingleWalletOnrampTransactionConverter(
|
|||
wrappedList(currency.name),
|
||||
)
|
||||
}
|
||||
this == OnrampStatus.Status.RefundInProgress -> {
|
||||
resourceReference(R.string.express_exchange_status_refunding)
|
||||
}
|
||||
this == OnrampStatus.Status.Refunded -> {
|
||||
resourceReference(R.string.express_exchange_status_refunded)
|
||||
}
|
||||
else -> {
|
||||
resourceReference(
|
||||
R.string.express_exchange_status_sent,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue