diff --git a/app/src/main/java/com/tangem/tap/common/IntentHandler.kt b/app/src/main/java/com/tangem/tap/common/IntentHandler.kt index f1cd3b1027..12451bdd67 100644 --- a/app/src/main/java/com/tangem/tap/common/IntentHandler.kt +++ b/app/src/main/java/com/tangem/tap/common/IntentHandler.kt @@ -1,15 +1,20 @@ package com.tangem.tap.common import android.content.Intent +import android.net.Uri import android.nfc.NfcAdapter import android.nfc.Tag import android.os.Build +import com.tangem.core.analytics.Analytics +import com.tangem.tap.common.analytics.events.AnalyticsParam +import com.tangem.tap.common.analytics.events.Token import com.tangem.tap.common.extensions.removePrefixOrNull import com.tangem.tap.domain.walletconnect.WalletConnectManager import com.tangem.tap.features.details.redux.walletconnect.WalletConnectAction import com.tangem.tap.features.home.redux.HomeAction import com.tangem.tap.features.wallet.redux.WalletAction import com.tangem.tap.features.welcome.redux.WelcomeAction +import com.tangem.tap.network.exchangeServices.ExchangeUrlBuilder import com.tangem.tap.scope import com.tangem.tap.store import kotlinx.coroutines.delay @@ -27,6 +32,7 @@ class IntentHandler { fun handleIntent(intent: Intent?, hasSavedUserWallets: Boolean) { handleBackgroundScan(intent, hasSavedUserWallets) handleWalletConnectLink(intent) + handleBuyCurrencyCallback(intent) handleSellCurrencyCallback(intent) } @@ -72,6 +78,18 @@ class IntentHandler { return true } + private fun handleBuyCurrencyCallback(intent: Intent?) { + val data = intent?.data ?: return + + val successUri = Uri.parse(ExchangeUrlBuilder.SUCCESS_URL) + if (data.host == successUri.host && data.authority == successUri.authority) { + val currency = store.state.walletState.selectedCurrency ?: return + + val currencyType = AnalyticsParam.CurrencyType.Currency(currency) + Analytics.send(Token.Bought(currencyType)) + } + } + fun handleSellCurrencyCallback(intent: Intent?) { try { val transactionID = diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/Token.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/Token.kt index 0ad3ca514e..63dd109942 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/events/Token.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/Token.kt @@ -46,6 +46,12 @@ sealed class Token( params = mapOf("Token" to type.value), ) + class Bought(type: CurrencyType) : Token( + category = "Token", + event = "Token bought", + params = mapOf("Token" to type.value), + ) + sealed class Receive( event: String, params: Map = mapOf(), 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 9dac430e4c..b963a290d4 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 @@ -146,7 +146,8 @@ class WalletConnectSdkHelper { ) return when (result) { SimpleResult.Success -> { - Analytics.send(Basic.TransactionSent(AnalyticsParam.TxSentFrom.WalletConnect)) + val sentFrom = AnalyticsParam.TxSentFrom.WalletConnect + Analytics.send(Basic.TransactionSent(sentFrom)) HEX_PREFIX + data.walletManager.wallet.recentTransactions.last().hash } is SimpleResult.Failure -> {