Updated on 2026-08-14

This commit is contained in:
Tangem 2025-05-14 16:20:05 +05:00
commit 8009743fb9
5 changed files with 29 additions and 56 deletions

View file

@ -79,10 +79,7 @@ fun ExpressStatusBlock(state: ExpressStatusUM, modifier: Modifier = Modifier) {
)
Text(
modifier = Modifier.align(Alignment.CenterVertically),
text = resourceReference(
id = R.string.express_transaction_id,
formatArgs = wrappedList(link.text),
).resolveReference(),
text = link.text.resolveReference(),
maxLines = 1,
overflow = TextOverflow.Ellipsis,
style = TangemTheme.typography.subtitle2,

View file

@ -94,6 +94,10 @@ internal class OnrampMainComponentModel @Inject constructor(
userCountry = getUserCountryUseCase.invokeSync().getOrNull()
?: UserCountry.Other(Locale.getDefault().country)
modelScope.launch {
clearOnrampCacheUseCase()
}
sendScreenOpenAnalytics()
checkResidenceCountry()
subscribeToAmountChanges()

View file

@ -50,7 +50,6 @@ internal class SetOnrampSuccessContentConverter(
statusBlock = convertStatuses(
status = value.status,
externalTxId = value.externalTxId,
externalTxUrl = value.externalTxUrl,
),
notification = getNotification(status = value.status, externalTxUrl = value.externalTxUrl),
)
@ -78,11 +77,7 @@ internal class SetOnrampSuccessContentConverter(
null
}
private fun convertStatuses(
status: OnrampStatus.Status,
externalTxId: String?,
externalTxUrl: String?,
): ExpressStatusUM {
private fun convertStatuses(status: OnrampStatus.Status, externalTxId: String?): ExpressStatusUM {
val statuses = with(status) {
persistentListOf(
getAwaitingDepositItem(),
@ -94,7 +89,7 @@ internal class SetOnrampSuccessContentConverter(
return ExpressStatusUM(
title = resourceReference(R.string.common_transaction_status),
link = getStatusLink(status = status, externalTxId = externalTxId, externalTxUrl = externalTxUrl),
link = getStatusLink(externalTxId = externalTxId),
statuses = statuses,
)
}
@ -192,33 +187,15 @@ internal class SetOnrampSuccessContentConverter(
state = getStatusState(OnrampStatus.Status.Sending),
)
private fun getStatusLink(
status: OnrampStatus.Status,
externalTxId: String?,
externalTxUrl: String?,
): ExpressLinkUM {
if (externalTxUrl == null) return ExpressLinkUM.Empty
return when (status) {
OnrampStatus.Status.Verifying,
OnrampStatus.Status.Failed,
-> {
ExpressLinkUM.Content(
icon = R.drawable.ic_arrow_top_right_24,
text = resourceReference(R.string.common_go_to_provider),
onClick = {
goToProviderClick(externalTxUrl)
},
)
}
else -> if (externalTxId != null) {
ExpressLinkUM.Content(
icon = R.drawable.ic_copy_24,
text = stringReference(externalTxId),
onClick = { onCopyClick(externalTxId) },
)
} else {
ExpressLinkUM.Empty
}
private fun getStatusLink(externalTxId: String?): ExpressLinkUM {
return 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

@ -148,7 +148,7 @@ internal class TokenDetailsOnrampTransactionStateConverter(
return ExpressStatusUM(
title = resourceReference(R.string.common_transaction_status),
link = getStatusLink(status, externalTxUrl),
link = getStatusLink(externalTxUrl),
statuses = statuses,
)
}
@ -263,23 +263,16 @@ internal class TokenDetailsOnrampTransactionStateConverter(
},
)
private fun getStatusLink(status: OnrampStatus.Status, externalTxUrl: String?): ExpressLinkUM {
private fun getStatusLink(externalTxUrl: String?): ExpressLinkUM {
if (externalTxUrl == null) return ExpressLinkUM.Empty
return when (status) {
OnrampStatus.Status.Verifying,
OnrampStatus.Status.Failed,
-> {
ExpressLinkUM.Content(
icon = R.drawable.ic_arrow_top_right_24,
text = resourceReference(R.string.common_go_to_provider),
onClick = {
analyticsEventHandler.send(TokenOnrampAnalyticsEvent.GoToProvider)
clickIntents.onGoToProviderClick(externalTxUrl)
},
)
}
else -> ExpressLinkUM.Empty
}
return ExpressLinkUM.Content(
icon = R.drawable.ic_arrow_top_right_24,
text = resourceReference(R.string.common_go_to_provider),
onClick = {
analyticsEventHandler.send(TokenOnrampAnalyticsEvent.GoToProvider)
clickIntents.onGoToProviderClick(externalTxUrl)
},
)
}
private fun OnrampStatus.Status.getStatusState(targetState: OnrampStatus.Status) = when {

View file

@ -14,6 +14,7 @@ import com.tangem.domain.tokens.FetchTokenListUseCase.RefreshMode
import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase
import com.tangem.domain.wallets.usecase.SelectWalletUseCase
import com.tangem.feature.wallet.presentation.router.InnerWalletRouter
import com.tangem.feature.wallet.presentation.wallet.domain.OnrampStatusFactory
import com.tangem.feature.wallet.presentation.wallet.domain.unwrap
import com.tangem.feature.wallet.presentation.wallet.loaders.WalletScreenContentLoader
import com.tangem.feature.wallet.presentation.wallet.state.WalletStateController
@ -50,6 +51,7 @@ internal class WalletClickIntents @Inject constructor(
private val dispatchers: CoroutineDispatcherProvider,
private val onrampFeatureToggles: OnrampFeatureToggles,
private val fetchHotCryptoUseCase: FetchHotCryptoUseCase,
private val onrampStatusFactory: OnrampStatusFactory,
) : BaseWalletClickIntents(),
WalletCardClickIntents by walletCardClickIntentsImplementor,
WalletWarningsClickIntents by warningsClickIntentsImplementer,
@ -168,7 +170,7 @@ internal class WalletClickIntents @Inject constructor(
modelScope.launch(dispatchers.main) {
fetchCurrencyStatusUseCase(userWallet.walletId, refresh = true)
onrampStatusFactory.updateOnrmapTransactionStatuses(userWallet)
walletScreenContentLoader.load(
userWallet = userWallet,
clickIntents = this@WalletClickIntents,