From eec502fddcad58ad8eeafc50e148ffbe9fa81b06 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 5 Nov 2025 10:14:46 +0100 Subject: [PATCH] Updated on 2026-08-14 --- .../onramp/analytics/OnrampAnalyticsEvent.kt | 13 +++++++ .../onramp/mainv2/entity/OnrampV2Intents.kt | 6 ++- .../factory/OnrampOffersStateFactory.kt | 9 +++-- .../model/OnrampV2MainComponentModel.kt | 39 ++++++++++++++++--- 4 files changed, 57 insertions(+), 10 deletions(-) diff --git a/domain/onramp/src/main/java/com/tangem/domain/onramp/analytics/OnrampAnalyticsEvent.kt b/domain/onramp/src/main/java/com/tangem/domain/onramp/analytics/OnrampAnalyticsEvent.kt index 7dd1e1a772..b7da9150d6 100644 --- a/domain/onramp/src/main/java/com/tangem/domain/onramp/analytics/OnrampAnalyticsEvent.kt +++ b/domain/onramp/src/main/java/com/tangem/domain/onramp/analytics/OnrampAnalyticsEvent.kt @@ -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(), diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/OnrampV2Intents.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/OnrampV2Intents.kt index 7ed9434b91..49041e269a 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/OnrampV2Intents.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/OnrampV2Intents.kt @@ -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() } \ No newline at end of file diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampOffersStateFactory.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampOffersStateFactory.kt index 2565285d2b..92adb96dbd 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampOffersStateFactory.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampOffersStateFactory.kt @@ -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, ) }, ), diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt index 1f36fd34ca..f161c0c735 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt @@ -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 }