From 584e39a5feb1b19a5cb6a86427583a5d3916fe25 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 29 Jan 2026 16:10:28 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../v2/api/analytics/CommonSendAnalyticEvents.kt | 10 ++++++++++ .../analytics/CommonSendFeeAnalyticEvents.kt | 3 +++ .../send/v2/feeselector/model/FeeSelectorLogic.kt | 1 + .../send/v2/feeselector/model/FeeSelectorModel.kt | 5 +++++ .../send/v2/send/analytics/SendAnalyticEvents.kt | 2 ++ .../com/tangem/feature/swap/analytics/SwapEvents.kt | 12 ++++++++++-- .../java/com/tangem/feature/swap/model/SwapModel.kt | 7 ++++++- 7 files changed, 37 insertions(+), 3 deletions(-) diff --git a/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/analytics/CommonSendAnalyticEvents.kt b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/analytics/CommonSendAnalyticEvents.kt index ca4a28c1c6..597de0c5d3 100644 --- a/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/analytics/CommonSendAnalyticEvents.kt +++ b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/analytics/CommonSendAnalyticEvents.kt @@ -44,22 +44,30 @@ sealed class CommonSendAnalyticEvents( data class FeeScreenOpened( val categoryName: String, val source: CommonSendSource, + val blockchain: String, + val token: String, ) : CommonSendAnalyticEvents( category = categoryName, event = "Fee Screen Opened", params = mapOf( SOURCE to source.analyticsName, + BLOCKCHAIN to blockchain, + TOKEN_PARAM to token, ), ) data class FeeSummaryScreenOpened( val categoryName: String, val source: CommonSendSource, + val blockchain: String, + val token: String, ) : CommonSendAnalyticEvents( category = categoryName, event = "Fee Summary Screen Opened", params = mapOf( SOURCE to source.analyticsName, + BLOCKCHAIN to blockchain, + TOKEN_PARAM to token, ), ) @@ -67,12 +75,14 @@ sealed class CommonSendAnalyticEvents( val categoryName: String, val source: CommonSendSource, val availableTokens: String, + val blockchain: String, ) : CommonSendAnalyticEvents( category = categoryName, event = "Fee Token Screen Opened", params = mapOf( SOURCE to source.analyticsName, "Available Fee" to availableTokens, + BLOCKCHAIN to blockchain, ), ) diff --git a/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/feeSelector/analytics/CommonSendFeeAnalyticEvents.kt b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/feeSelector/analytics/CommonSendFeeAnalyticEvents.kt index 1daa74b204..e91e35e365 100644 --- a/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/feeSelector/analytics/CommonSendFeeAnalyticEvents.kt +++ b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/feeSelector/analytics/CommonSendFeeAnalyticEvents.kt @@ -6,6 +6,7 @@ import com.tangem.core.analytics.models.AnalyticsParam.Key.BLOCKCHAIN import com.tangem.core.analytics.models.AnalyticsParam.Key.FEE_TOKEN import com.tangem.core.analytics.models.AnalyticsParam.Key.FEE_TYPE import com.tangem.core.analytics.models.AnalyticsParam.Key.SOURCE +import com.tangem.core.analytics.models.AnalyticsParam.Key.TOKEN_PARAM import com.tangem.features.send.v2.api.analytics.CommonSendAnalyticEvents.CommonSendSource sealed class CommonSendFeeAnalyticEvents( @@ -38,11 +39,13 @@ sealed class CommonSendFeeAnalyticEvents( data class CustomFeeButtonClicked( override val categoryName: String, val blockchain: String, + val token: String, ) : CommonSendFeeAnalyticEvents( category = categoryName, event = "Custom Fee Clicked", params = mapOf( BLOCKCHAIN to blockchain, + TOKEN_PARAM to token, ), ) diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/feeselector/model/FeeSelectorLogic.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/feeselector/model/FeeSelectorLogic.kt index 4b738f288d..f3f058e4d9 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/feeselector/model/FeeSelectorLogic.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/feeselector/model/FeeSelectorLogic.kt @@ -122,6 +122,7 @@ internal class FeeSelectorLogic @AssistedInject constructor( CommonSendFeeAnalyticEvents.CustomFeeButtonClicked( categoryName = params.analyticsCategoryName, blockchain = params.cryptoCurrencyStatus.currency.network.name, + token = params.cryptoCurrencyStatus.currency.symbol, ), ) } diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/feeselector/model/FeeSelectorModel.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/feeselector/model/FeeSelectorModel.kt index f4abb899d9..52d5766642 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/feeselector/model/FeeSelectorModel.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/feeselector/model/FeeSelectorModel.kt @@ -86,6 +86,8 @@ internal class FeeSelectorModel @Inject constructor( CommonSendAnalyticEvents.FeeSummaryScreenOpened( categoryName = params.analyticsCategoryName, source = params.analyticsSendSource, + blockchain = params.cryptoCurrencyStatus.currency.network.name, + token = params.cryptoCurrencyStatus.currency.symbol, ), ) } @@ -95,6 +97,8 @@ internal class FeeSelectorModel @Inject constructor( CommonSendAnalyticEvents.FeeScreenOpened( categoryName = params.analyticsCategoryName, source = params.analyticsSendSource, + blockchain = params.cryptoCurrencyStatus.currency.network.name, + token = params.cryptoCurrencyStatus.currency.symbol, ), ) } @@ -105,6 +109,7 @@ internal class FeeSelectorModel @Inject constructor( categoryName = params.analyticsCategoryName, source = params.analyticsSendSource, availableTokens = getAvailableTokensString(), + blockchain = params.cryptoCurrencyStatus.currency.network.name, ), ) } diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/analytics/SendAnalyticEvents.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/analytics/SendAnalyticEvents.kt index e837d589cf..eab26f440b 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/analytics/SendAnalyticEvents.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/analytics/SendAnalyticEvents.kt @@ -5,6 +5,7 @@ import com.tangem.core.analytics.models.AnalyticsParam import com.tangem.core.analytics.models.AnalyticsParam.Key.ACCOUNT_DERIVATION_FROM import com.tangem.core.analytics.models.AnalyticsParam.Key.BLOCKCHAIN import com.tangem.core.analytics.models.AnalyticsParam.Key.ENS_ADDRESS +import com.tangem.core.analytics.models.AnalyticsParam.Key.FEE_TOKEN import com.tangem.core.analytics.models.AnalyticsParam.Key.FEE_TYPE import com.tangem.core.analytics.models.AnalyticsParam.Key.NONCE import com.tangem.core.analytics.models.AnalyticsParam.Key.TOKEN_PARAM @@ -42,6 +43,7 @@ internal sealed class SendAnalyticEvents( AnalyticsParam.EmptyFull.Full -> true.toString().capitalize() } put(ENS_ADDRESS, ensAddress) + put(FEE_TOKEN, feeToken) }, ), AppsFlyerIncludedEvent diff --git a/features/swap/impl/src/main/java/com/tangem/feature/swap/analytics/SwapEvents.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/analytics/SwapEvents.kt index 1e0c855abc..a2b2f3ea67 100644 --- a/features/swap/impl/src/main/java/com/tangem/feature/swap/analytics/SwapEvents.kt +++ b/features/swap/impl/src/main/java/com/tangem/feature/swap/analytics/SwapEvents.kt @@ -2,12 +2,14 @@ package com.tangem.feature.swap.analytics import com.tangem.common.ui.bottomsheet.permission.state.ApproveType import com.tangem.core.analytics.models.AnalyticsEvent +import com.tangem.core.analytics.models.AnalyticsParam.Key.BLOCKCHAIN import com.tangem.core.analytics.models.AnalyticsParam.Key.ERROR_CODE import com.tangem.core.analytics.models.AnalyticsParam.Key.ERROR_MESSAGE import com.tangem.core.analytics.models.AnalyticsParam.Key.FEE_TOKEN import com.tangem.core.analytics.models.AnalyticsParam.Key.PROVIDER import com.tangem.core.analytics.models.AnalyticsParam.Key.RECEIVE_TOKEN import com.tangem.core.analytics.models.AnalyticsParam.Key.SEND_TOKEN +import com.tangem.core.analytics.models.AnalyticsParam.Key.TOKEN_PARAM import com.tangem.core.analytics.models.AppsFlyerIncludedEvent import com.tangem.feature.swap.domain.models.domain.SwapProvider import com.tangem.feature.swap.domain.models.ui.FeeType @@ -20,9 +22,15 @@ sealed class SwapEvents( params: Map = emptyMap(), ) : AnalyticsEvent(SWAP_CATEGORY, event, params) { - data class SwapScreenOpened(val token: String) : SwapEvents( + data class SwapScreenOpened( + val token: String, + val blockchain: String, + ) : SwapEvents( event = "Swap Screen Opened", - params = mapOf("Token" to token), + params = mapOf( + TOKEN_PARAM to token, + BLOCKCHAIN to blockchain, + ), ), AppsFlyerIncludedEvent class SendTokenBalanceClicked : SwapEvents(event = "Send Token Balance Clicked") diff --git a/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt index 24e0159328..1fab8b4bc9 100644 --- a/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt +++ b/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt @@ -329,7 +329,12 @@ internal class SwapModel @Inject constructor( } } - analyticsEventHandler.send(SwapEvents.SwapScreenOpened(initialCurrencyFrom.symbol)) + analyticsEventHandler.send( + SwapEvents.SwapScreenOpened( + token = initialCurrencyFrom.symbol, + blockchain = initialCurrencyFrom.network.name, + ), + ) getBalanceHidingSettingsUseCase() .onEach { settings ->