Updated on 2026-08-14

This commit is contained in:
Tangem 2025-05-12 14:25:42 +05:00
commit 9326fde22b
5 changed files with 28 additions and 19 deletions

View file

@ -5,12 +5,12 @@ import com.tangem.core.analytics.models.AnalyticsParam.Key.PROVIDER
import com.tangem.core.analytics.models.AnalyticsParam.Key.STATUS
import com.tangem.core.analytics.models.AnalyticsParam.Key.TOKEN_PARAM
class TokenOnrampAnalyticsEvent(
sealed class TokenOnrampAnalyticsEvent(
event: String,
params: Map<String, String> = mapOf(),
) : AnalyticsEvent("Onramp", event, params) {
class OnrampStatusOpened(tokenSymbol: String, provider: String, fiatCurrency: String) : TokenScreenAnalyticsEvent(
class OnrampStatusOpened(tokenSymbol: String, provider: String, fiatCurrency: String) : TokenOnrampAnalyticsEvent(
event = "Onramp Status Opened",
params = mapOf(
TOKEN_PARAM to tokenSymbol,
@ -20,7 +20,7 @@ class TokenOnrampAnalyticsEvent(
)
class OnrampStatusChanged(tokenSymbol: String, status: String, provider: String, fiatCurrency: String) :
TokenScreenAnalyticsEvent(
TokenOnrampAnalyticsEvent(
event = "Onramp Status",
params = mapOf(
TOKEN_PARAM to tokenSymbol,
@ -30,12 +30,12 @@ class TokenOnrampAnalyticsEvent(
),
)
data object GoToProvider : TokenScreenAnalyticsEvent(event = "Button - Go To Provider")
data object GoToProvider : TokenOnrampAnalyticsEvent(event = "Button - Go To Provider")
data class NoticeKYC(
val tokenSymbol: String,
val provider: String,
) : TokenScreenAnalyticsEvent(
) : TokenOnrampAnalyticsEvent(
event = "Notice - KYC",
params = mapOf(
TOKEN_PARAM to tokenSymbol,

View file

@ -297,17 +297,6 @@ internal class OnrampMainComponentModel @Inject constructor(
lastUpdateState.value = null
return
}
if (checkLastInputState(quote)) {
lastUpdateState.value = OnrampLastUpdate(
quote.fromAmount,
quote.countryCode,
)
_state.update {
amountStateFactory.getUpdatedProviderState(selectedQuote = quote, quotes = quotes)
}
}
_state.update { amountStateFactory.getAmountSecondaryUpdatedState(quote = quote) }
}
@ -322,7 +311,7 @@ internal class OnrampMainComponentModel @Inject constructor(
val quoteToCheck = quotes.firstOrNull { it !is OnrampQuote.Error }
// Check if amount, country or currency has changed
return if (checkLastInputState(quoteToCheck)) {
val newQuote = if (checkLastInputState(quoteToCheck)) {
quoteToCheck
} else {
val state = state.value as? OnrampMainComponentUM.Content
@ -341,6 +330,20 @@ internal class OnrampMainComponentModel @Inject constructor(
lastSelectedQuote
}
}
newQuote?.let { updateProvider(newQuote, quotes) }
return newQuote
}
private fun updateProvider(quote: OnrampQuote, quotes: List<OnrampQuote>) {
lastUpdateState.value = OnrampLastUpdate(
quote.fromAmount,
quote.countryCode,
)
_state.update {
amountStateFactory.getUpdatedProviderState(selectedQuote = quote, quotes = quotes)
}
}
private fun onRetryQuotes() {

View file

@ -213,7 +213,7 @@ internal class SetOnrampSuccessContentConverter(
else -> if (externalTxId != null) {
ExpressLinkUM.Content(
icon = R.drawable.ic_copy_24,
text = resourceReference(R.string.express_transaction_id, wrappedList(externalTxId)),
text = stringReference(externalTxId),
onClick = { onCopyClick(externalTxId) },
)
} else {

View file

@ -20,6 +20,7 @@ import com.tangem.domain.onramp.model.cache.OnrampTransaction
import com.tangem.domain.onramp.model.error.OnrampError
import com.tangem.domain.tokens.GetCryptoCurrencyUseCase
import com.tangem.domain.tokens.model.CryptoCurrency
import com.tangem.domain.tokens.model.analytics.TokenOnrampAnalyticsEvent
import com.tangem.domain.wallets.usecase.GetUserWalletUseCase
import com.tangem.features.onramp.component.OnrampSuccessComponent
import com.tangem.features.onramp.impl.R
@ -64,6 +65,7 @@ internal class OnrampSuccessComponentModel @Inject constructor(
}
override fun goToProviderClick(providerLink: String) {
analyticsEventHandler.send(TokenOnrampAnalyticsEvent.GoToProvider)
urlOpener.openUrl(providerLink)
}

View file

@ -116,7 +116,10 @@ internal class TokenDetailsOnrampTransactionStateConverter(
}
private fun onProviderClick(externalTxUrl: String?) = if (externalTxUrl != null) {
{ clickIntents.onGoToProviderClick(externalTxUrl) }
{
analyticsEventHandler.send(TokenOnrampAnalyticsEvent.GoToProvider)
clickIntents.onGoToProviderClick(externalTxUrl)
}
} else {
null
}
@ -270,6 +273,7 @@ internal class TokenDetailsOnrampTransactionStateConverter(
icon = R.drawable.ic_arrow_top_right_24,
text = resourceReference(R.string.common_go_to_provider),
onClick = {
analyticsEventHandler.send(TokenOnrampAnalyticsEvent.GoToProvider)
clickIntents.onGoToProviderClick(externalTxUrl)
},
)