Updated on 2026-08-14

This commit is contained in:
Tangem 2025-12-12 15:11:21 +05:00
parent 5f938d6139
commit eb73a64054
3 changed files with 18 additions and 8 deletions

View file

@ -4,7 +4,6 @@ import androidx.compose.runtime.Stable
import arrow.core.getOrElse import arrow.core.getOrElse
import com.arkivanov.decompose.router.slot.activate import com.arkivanov.decompose.router.slot.activate
import com.arkivanov.decompose.router.slot.dismiss import com.arkivanov.decompose.router.slot.dismiss
import com.squareup.sqldelight.internal.AtomicBoolean
import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.core.analytics.api.AnalyticsEventHandler
import com.tangem.core.analytics.models.AnalyticsParam import com.tangem.core.analytics.models.AnalyticsParam
import com.tangem.core.analytics.models.event.MainScreenAnalyticsEvent import com.tangem.core.analytics.models.event.MainScreenAnalyticsEvent
@ -116,7 +115,6 @@ internal class WalletModel @Inject constructor(
private val updateTangemPayJobHolder = JobHolder() private val updateTangemPayJobHolder = JobHolder()
private var expressTxStatusTaskScheduler = SingleTaskScheduler<Unit>() private var expressTxStatusTaskScheduler = SingleTaskScheduler<Unit>()
private val hasMainScreenOpenedEventSent = AtomicBoolean(false)
init { init {
if (!hotWalletFeatureToggles.isHotWalletEnabled) { if (!hotWalletFeatureToggles.isHotWalletEnabled) {
@ -291,15 +289,13 @@ internal class WalletModel @Inject constructor(
.onEach { selectedWallet -> .onEach { selectedWallet ->
trackingContextProxy.setContext(selectedWallet) trackingContextProxy.setContext(selectedWallet)
if (hotWalletFeatureToggles.isHotWalletEnabled && !hasMainScreenOpenedEventSent.get()) { if (hotWalletFeatureToggles.isHotWalletEnabled) {
// send it here because we need context to be set
modelScope.launch { modelScope.launch {
val hasMobileWallet = userWalletsListRepository.userWalletsSync() val hasMobileWallet = userWalletsListRepository.userWalletsSync()
.any { it is UserWallet.Hot } .any { it is UserWallet.Hot }
analyticsEventsHandler.send( analyticsEventsHandler.send(
WalletScreenAnalyticsEvent.MainScreen.ScreenOpened(hasMobileWallet), WalletScreenAnalyticsEvent.MainScreen.ScreenOpened(hasMobileWallet),
) )
hasMainScreenOpenedEventSent.set(true)
} }
} }

View file

@ -62,9 +62,15 @@ sealed class WalletScreenAnalyticsEvent {
params = mapOf("Mobile Wallet" to if (hasMobileWallet) "Yes" else "No"), params = mapOf("Mobile Wallet" to if (hasMobileWallet) "Yes" else "No"),
) )
data class NoticeFinishActivation(private val activationState: ActivationState) : MainScreen( data class NoticeFinishActivation(
private val activationState: ActivationState,
private val balanceState: AnalyticsParam.EmptyFull,
) : MainScreen(
event = "Notice - Finish Activation", event = "Notice - Finish Activation",
params = mapOf("Activation State" to activationState.value), params = mapOf(
"Activation State" to activationState.value,
"Balance State" to balanceState.value,
),
) { ) {
enum class ActivationState(val value: String) { enum class ActivationState(val value: String) {
NotStarted("Not Started"), NotStarted("Not Started"),

View file

@ -5,6 +5,7 @@ import com.tangem.core.analytics.models.AnalyticsEvent
import com.tangem.core.analytics.models.AnalyticsParam import com.tangem.core.analytics.models.AnalyticsParam
import com.tangem.core.decompose.di.ModelScoped import com.tangem.core.decompose.di.ModelScoped
import com.tangem.domain.tokens.model.analytics.PromoAnalyticsEvent.* import com.tangem.domain.tokens.model.analytics.PromoAnalyticsEvent.*
import com.tangem.feature.wallet.child.wallet.model.WalletActivationBannerType
import com.tangem.feature.wallet.presentation.wallet.analytics.WalletScreenAnalyticsEvent import com.tangem.feature.wallet.presentation.wallet.analytics.WalletScreenAnalyticsEvent
import com.tangem.feature.wallet.presentation.wallet.analytics.WalletScreenAnalyticsEvent.MainScreen import com.tangem.feature.wallet.presentation.wallet.analytics.WalletScreenAnalyticsEvent.MainScreen
import com.tangem.feature.wallet.presentation.wallet.state.model.WalletNotification import com.tangem.feature.wallet.presentation.wallet.state.model.WalletNotification
@ -78,7 +79,14 @@ internal class WalletWarningsAnalyticsSender @Inject constructor(
} else { } else {
MainScreen.NoticeFinishActivation.ActivationState.NotStarted MainScreen.NoticeFinishActivation.ActivationState.NotStarted
} }
MainScreen.NoticeFinishActivation(activationState) val balanceState = when (warning.type) {
WalletActivationBannerType.Attention -> AnalyticsParam.EmptyFull.Empty
WalletActivationBannerType.Warning -> AnalyticsParam.EmptyFull.Full
}
MainScreen.NoticeFinishActivation(
activationState = activationState,
balanceState = balanceState,
)
} }
is WalletNotification.Critical.SeedPhraseNotification -> MainScreen.NoticeSeedPhraseSupport() is WalletNotification.Critical.SeedPhraseNotification -> MainScreen.NoticeSeedPhraseSupport()
is WalletNotification.Critical.SeedPhraseSecondNotification -> MainScreen.NoticeSeedPhraseSupportSecond() is WalletNotification.Critical.SeedPhraseSecondNotification -> MainScreen.NoticeSeedPhraseSupportSecond()