diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt index cebc4c405e..ce8e64b0f6 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt @@ -70,7 +70,15 @@ sealed class AnalyticsParam { object MyWallets : ScannedFrom("My Wallets") } + sealed class TxSentFrom(val value: String) { + object Send : TxSentFrom("Send") + object Swap : TxSentFrom("Swap") + object WalletConnect : TxSentFrom("WalletConnect") + object Sell : TxSentFrom("Sell") + } + companion object Key { + const val Source = "Source" const val Batch = "Batch" const val ProductType = "Product Type" const val Firmware = "Firmware" diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/Basic.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/Basic.kt index 465cfe98bf..76b00ef40f 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/events/Basic.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/Basic.kt @@ -16,7 +16,7 @@ sealed class Basic( ) : Basic( event = "Card Was Scanned", params = mapOf( - "Source" to source.value, + AnalyticsParam.Source to source.value, ), ) @@ -38,6 +38,11 @@ sealed class Basic( params = mapOf(AnalyticsParam.Currency to currency.value), ) + class TransactionSent(sentFrom: AnalyticsParam.TxSentFrom) : Basic( + event = "Transaction sent", + params = mapOf(AnalyticsParam.Source to sentFrom.value), + ) + class ScanError(error: Throwable) : Basic( event = "Scan", error = error, diff --git a/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt b/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt index 316d44de9c..9dac430e4c 100644 --- a/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt +++ b/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt @@ -25,6 +25,8 @@ import com.tangem.common.extensions.toHexString import com.tangem.core.analytics.Analytics import com.tangem.crypto.CryptoUtils import com.tangem.operations.sign.SignHashCommand +import com.tangem.tap.common.analytics.events.AnalyticsParam +import com.tangem.tap.common.analytics.events.Basic import com.tangem.tap.common.analytics.events.WalletConnect import com.tangem.tap.common.extensions.safeUpdate import com.tangem.tap.common.extensions.toFormattedString @@ -144,6 +146,7 @@ class WalletConnectSdkHelper { ) return when (result) { SimpleResult.Success -> { + Analytics.send(Basic.TransactionSent(AnalyticsParam.TxSentFrom.WalletConnect)) HEX_PREFIX + data.walletManager.wallet.recentTransactions.last().hash } is SimpleResult.Failure -> { diff --git a/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt b/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt index d86397139b..00d9ef32c1 100644 --- a/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt @@ -20,6 +20,7 @@ import com.tangem.domain.common.TapWorkarounds.isStart2Coin import com.tangem.domain.common.extensions.withMainContext import com.tangem.tap.DELAY_SDK_DIALOG_CLOSE import com.tangem.tap.common.analytics.events.AnalyticsParam +import com.tangem.tap.common.analytics.events.Basic import com.tangem.tap.common.analytics.events.Token import com.tangem.tap.common.extensions.dispatchDialogShow import com.tangem.tap.common.extensions.dispatchErrorNotification @@ -234,8 +235,10 @@ private fun sendTransaction( dispatch(SendAction.SendSuccess) if (externalTransactionData != null) { + Analytics.send(Basic.TransactionSent(AnalyticsParam.TxSentFrom.Sell)) dispatch(WalletAction.TradeCryptoAction.FinishSelling(externalTransactionData.transactionId)) } else { + Analytics.send(Basic.TransactionSent(AnalyticsParam.TxSentFrom.Send)) dispatch(NavigationAction.PopBackTo()) } scope.launch(Dispatchers.IO) { diff --git a/app/src/main/java/com/tangem/tap/proxy/TransactionManagerImpl.kt b/app/src/main/java/com/tangem/tap/proxy/TransactionManagerImpl.kt index 30a360ad10..49da15b6c1 100644 --- a/app/src/main/java/com/tangem/tap/proxy/TransactionManagerImpl.kt +++ b/app/src/main/java/com/tangem/tap/proxy/TransactionManagerImpl.kt @@ -17,12 +17,15 @@ import com.tangem.blockchain.extensions.SimpleResult import com.tangem.blockchain.extensions.isNetworkError import com.tangem.common.core.TangemSdkError import com.tangem.common.extensions.hexToBytes +import com.tangem.core.analytics.api.AnalyticsHandler import com.tangem.domain.common.extensions.fromNetworkId import com.tangem.lib.crypto.TransactionManager import com.tangem.lib.crypto.models.Currency import com.tangem.lib.crypto.models.ProxyAmount import com.tangem.lib.crypto.models.ProxyNetworkInfo import com.tangem.lib.crypto.models.transactions.SendTxResult +import com.tangem.tap.common.analytics.events.AnalyticsParam +import com.tangem.tap.common.analytics.events.Basic import com.tangem.tap.common.redux.global.GlobalAction import com.tangem.tap.domain.TangemSigner import com.tangem.tap.domain.tokens.models.BlockchainNetwork @@ -31,6 +34,7 @@ import java.math.BigDecimal class TransactionManagerImpl( private val appStateHolder: AppStateHolder, + private val analytics: AnalyticsHandler, ) : TransactionManager { override suspend fun sendApproveTransaction( @@ -165,7 +169,10 @@ class TransactionManagerImpl( private fun handleSendResult(result: SimpleResult): SendTxResult { when (result) { - is SimpleResult.Success -> return SendTxResult.Success + is SimpleResult.Success -> { + analytics.send(Basic.TransactionSent(AnalyticsParam.TxSentFrom.Swap)) + return SendTxResult.Success + } is SimpleResult.Failure -> { if (result.isNetworkError()) return SendTxResult.NetworkError(result.error) val error = result.error as? BlockchainSdkError ?: return SendTxResult.UnknownError() diff --git a/app/src/main/java/com/tangem/tap/proxy/di/ProxyModule.kt b/app/src/main/java/com/tangem/tap/proxy/di/ProxyModule.kt index a1fa2cd32a..8cf83557a8 100644 --- a/app/src/main/java/com/tangem/tap/proxy/di/ProxyModule.kt +++ b/app/src/main/java/com/tangem/tap/proxy/di/ProxyModule.kt @@ -1,5 +1,6 @@ package com.tangem.tap.proxy.di +import com.tangem.core.analytics.api.AnalyticsHandler import com.tangem.lib.crypto.DerivationManager import com.tangem.lib.crypto.TransactionManager import com.tangem.lib.crypto.UserWalletManager @@ -33,8 +34,8 @@ class ProxyModule { @Provides @Singleton - fun provideTransactionManager(appStateHolder: AppStateHolder): TransactionManager { - return TransactionManagerImpl(appStateHolder) + fun provideTransactionManager(appStateHolder: AppStateHolder, analytics: AnalyticsHandler): TransactionManager { + return TransactionManagerImpl(appStateHolder, analytics) } @Provides