Updated on 2026-08-14
This commit is contained in:
parent
5f938d6139
commit
eb73a64054
3 changed files with 18 additions and 8 deletions
|
|
@ -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)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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"),
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue