Updated on 2026-08-14

This commit is contained in:
Tangem 2025-04-29 18:34:38 +05:00
parent bfdb3a2966
commit 1b5feacdf6
3 changed files with 35 additions and 6 deletions

View file

@ -2,4 +2,5 @@ package com.tangem.features.onramp.success.entity
interface OnrampSuccessClickIntents {
fun goToProviderClick(providerLink: String)
fun onCopyClick(copiedText: String)
}

View file

@ -25,6 +25,7 @@ internal class SetOnrampSuccessContentConverter(
private val cryptoCurrency: CryptoCurrency,
private val transaction: OnrampTransaction,
private val goToProviderClick: (String) -> Unit,
private val onCopyClick: (String) -> Unit,
) : Converter<OnrampStatus, OnrampSuccessComponentUM> {
override fun convert(value: OnrampStatus): OnrampSuccessComponentUM {
return OnrampSuccessComponentUM.Content(
@ -46,8 +47,12 @@ internal class SetOnrampSuccessContentConverter(
),
providerName = stringReference(transaction.providerName),
providerImageUrl = transaction.providerImageUrl,
statusBlock = convertStatuses(value.status, value.externalTxUrl),
notification = getNotification(value.status, value.externalTxUrl),
statusBlock = convertStatuses(
status = value.status,
externalTxId = value.externalTxId,
externalTxUrl = value.externalTxUrl,
),
notification = getNotification(status = value.status, externalTxUrl = value.externalTxUrl),
)
}
@ -73,7 +78,11 @@ internal class SetOnrampSuccessContentConverter(
null
}
private fun convertStatuses(status: OnrampStatus.Status, externalTxUrl: String?): ExpressStatusUM {
private fun convertStatuses(
status: OnrampStatus.Status,
externalTxId: String?,
externalTxUrl: String?,
): ExpressStatusUM {
val statuses = with(status) {
persistentListOf(
getAwaitingDepositItem(),
@ -85,7 +94,7 @@ internal class SetOnrampSuccessContentConverter(
return ExpressStatusUM(
title = resourceReference(R.string.common_transaction_status),
link = getStatusLink(status, externalTxUrl),
link = getStatusLink(status = status, externalTxId = externalTxId, externalTxUrl = externalTxUrl),
statuses = statuses,
)
}
@ -183,7 +192,11 @@ internal class SetOnrampSuccessContentConverter(
state = getStatusState(OnrampStatus.Status.Sending),
)
private fun getStatusLink(status: OnrampStatus.Status, externalTxUrl: String?): ExpressLinkUM {
private fun getStatusLink(
status: OnrampStatus.Status,
externalTxId: String?,
externalTxUrl: String?,
): ExpressLinkUM {
if (externalTxUrl == null) return ExpressLinkUM.Empty
return when (status) {
OnrampStatus.Status.Verifying,
@ -197,7 +210,15 @@ internal class SetOnrampSuccessContentConverter(
},
)
}
else -> ExpressLinkUM.Empty
else -> if (externalTxId != null) {
ExpressLinkUM.Content(
icon = R.drawable.ic_copy_24,
text = resourceReference(R.string.express_transaction_id, wrappedList(externalTxId)),
onClick = { onCopyClick(externalTxId) },
)
} else {
ExpressLinkUM.Empty
}
}
}

View file

@ -7,6 +7,7 @@ import com.tangem.core.decompose.model.ParamsContainer
import com.tangem.core.decompose.navigation.Router
import com.tangem.core.decompose.ui.UiMessageSender
import com.tangem.core.navigation.url.UrlOpener
import com.tangem.core.ui.clipboard.ClipboardManager
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.wrappedList
import com.tangem.core.ui.message.DialogMessage
@ -46,6 +47,7 @@ internal class OnrampSuccessComponentModel @Inject constructor(
private val getUserWalletUseCase: GetUserWalletUseCase,
private val analyticsEventHandler: AnalyticsEventHandler,
private val messageSender: UiMessageSender,
private val clipboardManager: ClipboardManager,
private val router: Router,
paramsContainer: ParamsContainer,
) : Model(), OnrampSuccessClickIntents {
@ -65,6 +67,10 @@ internal class OnrampSuccessComponentModel @Inject constructor(
urlOpener.openUrl(providerLink)
}
override fun onCopyClick(copiedText: String) {
clipboardManager.setText(text = copiedText, isSensitive = false)
}
private fun loadData() {
modelScope.launch {
getOnrampTransactionUseCase(txId = params.txId)
@ -124,6 +130,7 @@ internal class OnrampSuccessComponentModel @Inject constructor(
cryptoCurrency = cryptoCurrency,
transaction = transaction,
goToProviderClick = ::goToProviderClick,
onCopyClick = ::onCopyClick,
).convert(status)
}
removeTransactionIfTerminalStatus(