Updated on 2026-08-14

This commit is contained in:
Tangem 2025-11-05 10:14:46 +01:00
parent 70dd41a680
commit eec502fddc
4 changed files with 57 additions and 10 deletions

View file

@ -190,6 +190,19 @@ sealed class OnrampAnalyticsEvent(
),
)
data class RecentlyBuyClicked(
private val tokenSymbol: String,
private val providerName: String,
private val paymentMethod: String,
) : OnrampAnalyticsEvent(
event = "Recently Used Clicked",
params = mapOf(
TOKEN_PARAM to tokenSymbol,
PROVIDER to providerName,
PAYMENT_METHOD to paymentMethod,
),
)
data object AllOffersClicked : OnrampAnalyticsEvent(
event = "Button - All Offers",
params = emptyMap(),

View file

@ -6,7 +6,11 @@ internal interface OnrampV2Intents {
fun onAmountValueChanged(value: String)
fun openSettings()
fun openCurrenciesList()
fun onBuyClick(quote: OnrampProviderWithQuote.Data, onrampOfferAdvantagesUM: OnrampOfferAdvantagesUM)
fun onBuyClick(
quote: OnrampProviderWithQuote.Data,
onrampOfferAdvantagesUM: OnrampOfferAdvantagesUM,
categoryUM: OnrampOfferCategoryUM,
)
fun openProviders()
fun onRefresh()
}

View file

@ -37,10 +37,12 @@ internal class OnrampOffersStateFactory(
is OnrampQuote.Error,
-> Unit
is OnrampQuote.Data -> {
val advantages = mapOfferAdvantagesDTOtoUM(offer.advantages)
val category = mapOfferCategoryDTOtoUM(block.category)
allOffersUM.add(
OnrampOfferUM(
category = mapOfferCategoryDTOtoUM(block.category),
advantages = mapOfferAdvantagesDTOtoUM(offer.advantages),
category = category,
advantages = advantages,
paymentMethod = currentQuote.paymentMethod,
providerName = currentQuote.provider.info.name,
rate = currentQuote.toAmount.value.format {
@ -58,7 +60,8 @@ internal class OnrampOffersStateFactory(
toAmount = currentQuote.toAmount,
fromAmount = currentQuote.fromAmount,
),
onrampOfferAdvantagesUM = mapOfferAdvantagesDTOtoUM(offer.advantages),
onrampOfferAdvantagesUM = advantages,
categoryUM = category,
)
},
),

View file

@ -124,7 +124,11 @@ internal class OnrampV2MainComponentModel @Inject constructor(
bottomSheetNavigation.activate(OnrampV2MainBottomSheetConfig.CurrenciesList)
}
override fun onBuyClick(quote: OnrampProviderWithQuote.Data, onrampOfferAdvantagesUM: OnrampOfferAdvantagesUM) {
override fun onBuyClick(
quote: OnrampProviderWithQuote.Data,
onrampOfferAdvantagesUM: OnrampOfferAdvantagesUM,
categoryUM: OnrampOfferCategoryUM,
) {
val currentContentState = state.value as? OnrampV2MainComponentUM.Content ?: return
analyticsEventHandler.send(
OnrampAnalyticsEvent.OnBuyClick(
@ -133,11 +137,11 @@ internal class OnrampV2MainComponentModel @Inject constructor(
tokenSymbol = params.cryptoCurrency.symbol,
),
)
onrampOfferAdvantagesUM.toAnalyticsEvent(
cryptoCurrencySymbol = params.cryptoCurrency.symbol,
providerName = quote.provider.info.name,
paymentMethodName = quote.paymentMethod.name,
)?.let(analyticsEventHandler::send)
sendOfferClickEvent(
quote = quote,
onrampOfferAdvantagesUM = onrampOfferAdvantagesUM,
categoryUM = categoryUM,
)
params.openRedirectPage(quote)
}
@ -351,6 +355,29 @@ internal class OnrampV2MainComponentModel @Inject constructor(
)
}
private fun sendOfferClickEvent(
quote: OnrampProviderWithQuote.Data,
onrampOfferAdvantagesUM: OnrampOfferAdvantagesUM,
categoryUM: OnrampOfferCategoryUM,
) {
when (categoryUM) {
OnrampOfferCategoryUM.RecentlyUsed -> {
OnrampAnalyticsEvent.RecentlyBuyClicked(
tokenSymbol = params.cryptoCurrency.symbol,
providerName = quote.provider.info.name,
paymentMethod = quote.paymentMethod.name,
).let(analyticsEventHandler::send)
}
OnrampOfferCategoryUM.Recommended -> {
onrampOfferAdvantagesUM.toAnalyticsEvent(
cryptoCurrencySymbol = params.cryptoCurrency.symbol,
providerName = quote.provider.info.name,
paymentMethodName = quote.paymentMethod.name,
)?.let(analyticsEventHandler::send)
}
}
}
private companion object {
const val UPDATE_DELAY = 10_000L
}