Updated on 2026-08-14
This commit is contained in:
parent
65ff4a4b49
commit
9112d2bab8
55 changed files with 492 additions and 389 deletions
|
|
@ -2,15 +2,15 @@ package com.tangem.tap.common.analytics.converters
|
|||
|
||||
import com.tangem.blockchain.common.Blockchain
|
||||
import com.tangem.common.Converter
|
||||
import com.tangem.domain.common.CardTypesResolver
|
||||
import com.tangem.domain.card.CardTypeResolver
|
||||
import com.tangem.tap.common.analytics.events.AnalyticsParam
|
||||
|
||||
/**
|
||||
[REDACTED_AUTHOR]
|
||||
*/
|
||||
class ParamCardCurrencyConverter : Converter<CardTypesResolver, AnalyticsParam.CardCurrency?> {
|
||||
class ParamCardCurrencyConverter : Converter<CardTypeResolver, AnalyticsParam.CardCurrency?> {
|
||||
|
||||
override fun convert(value: CardTypesResolver): AnalyticsParam.CardCurrency? {
|
||||
override fun convert(value: CardTypeResolver): AnalyticsParam.CardCurrency? {
|
||||
if (value.isMultiwalletAllowed()) return AnalyticsParam.CardCurrency.MultiCurrency
|
||||
|
||||
val type = when {
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
package com.tangem.tap.common.analytics.converters
|
||||
|
||||
import com.tangem.common.Converter
|
||||
import com.tangem.domain.common.CardTypesResolver
|
||||
import com.tangem.domain.card.CardTypeResolver
|
||||
import com.tangem.tap.common.analytics.events.Basic
|
||||
|
||||
/**
|
||||
[REDACTED_AUTHOR]
|
||||
*/
|
||||
class TopUpEventConverter : Converter<CardTypesResolver, Basic.ToppedUp?> {
|
||||
class TopUpEventConverter : Converter<CardTypeResolver, Basic.ToppedUp?> {
|
||||
|
||||
override fun convert(value: CardTypesResolver): Basic.ToppedUp? {
|
||||
override fun convert(value: CardTypeResolver): Basic.ToppedUp? {
|
||||
val paramCardCurrency = ParamCardCurrencyConverter().convert(value) ?: return null
|
||||
|
||||
return Basic.ToppedUp(paramCardCurrency)
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ 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.util.cardTypesResolver
|
||||
import com.tangem.domain.card.CardTypeResolver
|
||||
import com.tangem.domain.models.scan.ProductType
|
||||
import com.tangem.domain.models.scan.ScanResponse
|
||||
import com.tangem.tap.common.analytics.converters.ParamCardCurrencyConverter
|
||||
|
|
@ -16,6 +16,7 @@ import com.tangem.tap.features.demo.DemoHelper
|
|||
*/
|
||||
class CardContextInterceptor(
|
||||
private val scanResponse: ScanResponse?,
|
||||
private val cardTypeResolver: CardTypeResolver,
|
||||
) : ParamsInterceptor {
|
||||
|
||||
override fun id(): String = CardContextInterceptor.id()
|
||||
|
|
@ -35,7 +36,7 @@ class CardContextInterceptor(
|
|||
params[AnalyticsParam.PRODUCT_TYPE] = getProductType(scanResponse)
|
||||
params[AnalyticsParam.FIRMWARE] = card.firmwareVersion.stringValue
|
||||
|
||||
ParamCardCurrencyConverter().convert(scanResponse.cardTypesResolver)?.let {
|
||||
ParamCardCurrencyConverter().convert(cardTypeResolver)?.let {
|
||||
params[AnalyticsParam.CURRENCY] = it.value
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,17 +2,19 @@ package com.tangem.tap.common.analytics.paramsInterceptor
|
|||
|
||||
import com.tangem.core.analytics.AnalyticsEvent
|
||||
import com.tangem.core.analytics.api.ParamsInterceptor
|
||||
import com.tangem.domain.card.CardTypeResolver
|
||||
import com.tangem.domain.models.scan.ScanResponse
|
||||
|
||||
/**
|
||||
[REDACTED_AUTHOR]
|
||||
*/
|
||||
class LinkedCardContextInterceptor(
|
||||
private val scanResponse: ScanResponse,
|
||||
scanResponse: ScanResponse,
|
||||
cardTypeResolver: CardTypeResolver,
|
||||
val parent: LinkedCardContextInterceptor? = null,
|
||||
) : ParamsInterceptor {
|
||||
|
||||
private val contextInterceptor = CardContextInterceptor(scanResponse)
|
||||
private val contextInterceptor = CardContextInterceptor(scanResponse, cardTypeResolver)
|
||||
|
||||
override fun id(): String = LinkedCardContextInterceptor.id()
|
||||
|
||||
|
|
|
|||
|
|
@ -5,9 +5,8 @@ import com.tangem.common.extensions.isZero
|
|||
import com.tangem.core.analytics.Analytics
|
||||
import com.tangem.data.source.preferences.model.DataSourceTopupInfo
|
||||
import com.tangem.data.source.preferences.storage.ToppedUpWalletStorage
|
||||
import com.tangem.domain.common.CardTypesResolver
|
||||
import com.tangem.domain.card.CardTypeResolver
|
||||
import com.tangem.domain.common.util.UserWalletId
|
||||
import com.tangem.domain.common.util.cardTypesResolver
|
||||
import com.tangem.domain.models.scan.ScanResponse
|
||||
import com.tangem.tap.common.analytics.converters.TopUpEventConverter
|
||||
import com.tangem.tap.common.analytics.events.AnalyticsParam
|
||||
|
|
@ -32,6 +31,7 @@ class TopUpController(
|
|||
var scanResponseProvider: (() -> ScanResponse?)? = null,
|
||||
var walletStoresManagerProvider: (() -> WalletStoresManager)? = null,
|
||||
private val topupWalletStorage: ToppedUpWalletStorage,
|
||||
private val cardTypeResolver: CardTypeResolver,
|
||||
) : WalletCurrenciesManager.Listener {
|
||||
|
||||
private var hadMissedDerivations: Boolean = false
|
||||
|
|
@ -100,7 +100,7 @@ class TopUpController(
|
|||
}
|
||||
|
||||
val cardBalanceState = BalanceCalculator(walletDataModels).calculate().toCardBalanceState()
|
||||
send(userWalletId, cardBalanceState, scanResponse.cardTypesResolver)
|
||||
send(userWalletId, cardBalanceState, cardTypeResolver)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -120,14 +120,14 @@ class TopUpController(
|
|||
|
||||
fun send(scanResponse: ScanResponse, cardBalanceState: AnalyticsParam.CardBalanceState) {
|
||||
UserWalletIdBuilder.scanResponse(scanResponse).build()?.let {
|
||||
send(it, cardBalanceState, scanResponse.cardTypesResolver)
|
||||
send(it, cardBalanceState, cardTypeResolver)
|
||||
}
|
||||
}
|
||||
|
||||
fun send(
|
||||
userWalletId: UserWalletId,
|
||||
cardBalanceState: AnalyticsParam.CardBalanceState,
|
||||
cardTypesResolver: CardTypesResolver,
|
||||
cardTypeResolver: CardTypeResolver,
|
||||
) {
|
||||
val topupInfo = topupWalletStorage.restore(userWalletId.stringValue).guard {
|
||||
val topupInfo = DataSourceTopupInfo(
|
||||
|
|
@ -152,7 +152,7 @@ class TopUpController(
|
|||
|
||||
if (cardBalanceState.isToppedUp()) {
|
||||
topupWalletStorage.save(topupInfo.copy(cardBalanceState = DataSourceTopupInfo.CardBalanceState.Full))
|
||||
TopUpEventConverter().convert(cardTypesResolver)?.let {
|
||||
TopUpEventConverter().convert(cardTypeResolver)?.let {
|
||||
Analytics.send(it)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.tangem.tap.common.extensions
|
||||
|
||||
import com.tangem.core.analytics.Analytics
|
||||
import com.tangem.domain.card.CardTypeResolver
|
||||
import com.tangem.domain.models.scan.ScanResponse
|
||||
import com.tangem.tap.common.analytics.paramsInterceptor.LinkedCardContextInterceptor
|
||||
|
||||
|
|
@ -11,8 +12,8 @@ import com.tangem.tap.common.analytics.paramsInterceptor.LinkedCardContextInterc
|
|||
/**
|
||||
* Sets the new context
|
||||
*/
|
||||
fun Analytics.setContext(scanResponse: ScanResponse) {
|
||||
addParamsInterceptor(LinkedCardContextInterceptor(scanResponse))
|
||||
fun Analytics.setContext(scanResponse: ScanResponse, cardTypeResolver: CardTypeResolver) {
|
||||
addParamsInterceptor(LinkedCardContextInterceptor(scanResponse, cardTypeResolver))
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -25,9 +26,13 @@ fun Analytics.eraseContext() {
|
|||
/**
|
||||
* Adds a new context and keeps a previous context as the parent of the new one
|
||||
*/
|
||||
fun Analytics.addContext(scanResponse: ScanResponse) {
|
||||
fun Analytics.addContext(scanResponse: ScanResponse, cardTypeResolver: CardTypeResolver) {
|
||||
val currentContext = removeParamsInterceptor(LinkedCardContextInterceptor.id()) as? LinkedCardContextInterceptor
|
||||
val newContext = LinkedCardContextInterceptor(scanResponse, parent = currentContext)
|
||||
val newContext = LinkedCardContextInterceptor(
|
||||
scanResponse = scanResponse,
|
||||
cardTypeResolver = cardTypeResolver,
|
||||
parent = currentContext,
|
||||
)
|
||||
|
||||
addParamsInterceptor(newContext)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue