Updated on 2026-08-14

This commit is contained in:
Tangem 2023-02-17 13:40:03 +03:00
parent 61bd233942
commit 69fe86f07c
8 changed files with 70 additions and 11 deletions

View file

@ -61,7 +61,10 @@ sealed class AnalyticsParam {
}
companion object Key {
const val BatchId = "Batch"
const val Batch = "Batch"
const val ProductType = "Product Type"
const val Firmware = "Firmware"
const val Currency = "Currency"
const val ErrorDescription = "Error Description"
const val ErrorCode = "Error Code"
const val ErrorKey = "Error Key"

View file

@ -19,14 +19,14 @@ sealed class Basic(
event = "Signed in",
params = mapOf(
"State" to state.value,
"Currency" to currency.value,
AnalyticsParam.BatchId to batch,
AnalyticsParam.Currency to currency.value,
AnalyticsParam.Batch to batch,
),
)
class ToppedUp(currency: AnalyticsParam.CardCurrency) : Basic(
event = "Topped up",
params = mapOf("Currency" to currency.value),
params = mapOf(AnalyticsParam.Currency to currency.value),
)
class ScanError(error: Throwable) : Basic(

View file

@ -51,7 +51,7 @@ sealed class Onboarding(
class ButtonBuyCrypto(currency: AnalyticsParam.CurrencyType) : Topup(
event = "Button - Buy Crypto",
params = mapOf("Currency" to currency.value),
params = mapOf(AnalyticsParam.Currency to currency.value),
)
class ButtonShowWalletAddress : Topup("Button - Show the Wallet Address")

View file

@ -1,7 +1,7 @@
package com.tangem.tap.common.analytics.paramsInterceptor
import com.tangem.core.analytics.api.ParamsInterceptor
import com.tangem.core.analytics.AnalyticsEvent
import com.tangem.core.analytics.api.ParamsInterceptor
import com.tangem.tap.common.analytics.events.AnalyticsParam
/**
@ -16,6 +16,6 @@ class BatchIdParamsInterceptor(
override fun canBeAppliedTo(event: AnalyticsEvent): Boolean = true
override fun intercept(params: MutableMap<String, String>) {
params[AnalyticsParam.BatchId] = batchId
params[AnalyticsParam.Batch] = batchId
}
}

View file

@ -0,0 +1,56 @@
package com.tangem.tap.common.analytics.paramsInterceptor
import com.tangem.core.analytics.AnalyticsEvent
import com.tangem.core.analytics.api.ParamsInterceptor
import com.tangem.domain.common.ProductType
import com.tangem.domain.common.ScanResponse
import com.tangem.tap.common.analytics.converters.ParamCardCurrencyConverter
import com.tangem.tap.common.analytics.events.AnalyticsParam
import com.tangem.tap.features.demo.DemoHelper
/**
[REDACTED_AUTHOR]
*/
class CardContextInterceptor(
private val scanResponse: ScanResponse?,
) : ParamsInterceptor {
override fun id(): String = CardContextInterceptor.id()
override fun canBeAppliedTo(event: AnalyticsEvent): Boolean = true
override fun intercept(params: MutableMap<String, String>) {
scanResponse ?: return
val card = scanResponse.card
params[AnalyticsParam.Batch] = card.batchId
params[AnalyticsParam.ProductType] = getProductType(scanResponse)
params[AnalyticsParam.Firmware] = card.firmwareVersion.stringValue
ParamCardCurrencyConverter().convert(scanResponse)?.let {
params[AnalyticsParam.Currency] = it.value
}
}
private fun getProductType(scanResponse: ScanResponse): String {
return when (scanResponse.productType) {
ProductType.Note -> "Note"
ProductType.Twins -> "Twin"
ProductType.Wallet -> "Wallet"
ProductType.SaltPay -> when (scanResponse.isSaltPayVisa()) {
true -> "Visa"
else -> "Visa Backup"
}
ProductType.Start2Coin -> "Start2Coin"
else -> when (DemoHelper.isDemoCard(scanResponse)) {
// TODO: separate demo cards
true -> "Demo Wallet | Demo Note"
else -> "Other"
}
}
}
companion object {
fun id(): String = CardContextInterceptor::class.java.simpleName
}
}

View file

@ -54,8 +54,8 @@ object Analytics : GlobalAnalyticsEventHandler {
paramsInterceptors[interceptor.id()] = interceptor
}
override fun removeParamsInterceptor(interceptor: ParamsInterceptor): ParamsInterceptor? {
return paramsInterceptors.remove(interceptor.id())
override fun removeParamsInterceptor(interceptorId: String): ParamsInterceptor? {
return paramsInterceptors.remove(interceptorId)
}
override fun send(event: AnalyticsEvent) {

View file

@ -13,5 +13,5 @@ interface ParamsInterceptor {
interface ParamsInterceptorHolder {
fun addParamsInterceptor(interceptor: ParamsInterceptor)
fun removeParamsInterceptor(interceptor: ParamsInterceptor): ParamsInterceptor?
fun removeParamsInterceptor(interceptorId: String): ParamsInterceptor?
}

View file

@ -22,5 +22,5 @@ object NetworkLogConfig {
object AnalyticsHandlersLogConfig {
val firebase: Boolean = false
val appsFlyer: Boolean = false
val amplitude: Boolean = false
val amplitude: Boolean = true
}