From 03691635a2dc7ce4928204a2a82db2a950ae25be Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 3 Mar 2026 13:57:55 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../analytics/SendWithSwapAnalyticEvents.kt | 21 ++++++++++++++++ .../confirm/model/SendWithSwapConfirmModel.kt | 25 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/sendviaswap/analytics/SendWithSwapAnalyticEvents.kt b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/sendviaswap/analytics/SendWithSwapAnalyticEvents.kt index 64e5650b5b..24a68d2945 100644 --- a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/sendviaswap/analytics/SendWithSwapAnalyticEvents.kt +++ b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/sendviaswap/analytics/SendWithSwapAnalyticEvents.kt @@ -40,6 +40,27 @@ internal sealed class SendWithSwapAnalyticEvents( }, ), AppsFlyerIncludedEvent + data class OnSendClick( + val providerName: String, + val feeType: AnalyticsParam.FeeType, + val fromToken: CryptoCurrency, + val toToken: CryptoCurrency, + val fromDerivationIndex: Int?, + val toDerivationIndex: Int?, + ) : SendWithSwapAnalyticEvents( + event = "Button - Send with Swap", + params = buildMap { + put(PROVIDER, providerName) + put(FEE_TYPE, if (feeType is AnalyticsParam.FeeType.Normal) "Market" else "Fast") + put(SEND_TOKEN, fromToken.symbol) + put(RECEIVE_TOKEN, toToken.symbol) + put(SEND_BLOCKCHAIN, fromToken.network.name) + put(RECEIVE_BLOCKCHAIN, toToken.network.name) + if (fromDerivationIndex != null) put(ACCOUNT_DERIVATION_FROM, fromDerivationIndex.toString()) + if (toDerivationIndex != null) put(ACCOUNT_DERIVATION_TO, toDerivationIndex.toString()) + }, + ), AppsFlyerIncludedEvent + data class NoticeCanNotSwapToken( val fromToken: CryptoCurrency, val toTokenSymbol: String, diff --git a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/sendviaswap/confirm/model/SendWithSwapConfirmModel.kt b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/sendviaswap/confirm/model/SendWithSwapConfirmModel.kt index 271decfaa7..99fcf5c1e4 100644 --- a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/sendviaswap/confirm/model/SendWithSwapConfirmModel.kt +++ b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/sendviaswap/confirm/model/SendWithSwapConfirmModel.kt @@ -305,6 +305,7 @@ internal class SendWithSwapConfirmModel @Inject constructor( modelScope.launch { uiState.transformerUpdate(SendWithSwapConfirmSendingStateTransformer(true)) val feeExtended = feeUMV2?.feeExtraInfo?.transactionFeeExtended + modelScope.launch(dispatchers.default) { sendClickAnalytics() } swapTransactionSender.sendTransaction( feeExtended = feeExtended, confirmData = confirmData, @@ -494,6 +495,30 @@ internal class SendWithSwapConfirmModel @Inject constructor( ) } + private suspend fun sendClickAnalytics() { + val selectedProvider = confirmData.quote?.provider ?: return + val fromCurrency = confirmData.fromCryptoCurrencyStatus?.currency ?: return + val toCurrency = confirmData.toCryptoCurrencyStatus?.currency ?: return + val feeSelectorUM = uiState.value.feeSelectorUM as? FeeSelectorUM.Content ?: return + val feeType = feeSelectorUM.toAnalyticType() + val fromDerivationIndex = confirmData.fromAccount?.derivationIndex?.value + val destination = destinationUM?.addressTextField?.actualAddress ?: return + val destinationAccount = getAccountCurrencyByAddressUseCase(destination) + .getOrNull()?.account + val toDerivationIndex = destinationAccount?.derivationIndex?.value + + analyticsEventHandler.send( + SendWithSwapAnalyticEvents.OnSendClick( + providerName = selectedProvider.name, + feeType = feeType, + fromToken = fromCurrency, + toToken = toCurrency, + fromDerivationIndex = fromDerivationIndex, + toDerivationIndex = toDerivationIndex, + ), + ) + } + private fun getSelectedFeeToken(): CryptoCurrency { val feeUMV2 = uiState.value.feeSelectorUM as? FeeSelectorUMRedesigned.Content val feeExtended = feeUMV2?.feeExtraInfo?.transactionFeeExtended