Updated on 2026-08-14

This commit is contained in:
Tangem 2023-09-04 18:48:54 +03:00
parent 5167916bb6
commit d01d6e995f
6 changed files with 38 additions and 12 deletions

View file

@ -45,6 +45,16 @@ sealed class Onboarding(
event = "Backup Finished",
params = mapOf("Cards count" to "$cardsCount"),
)
object ResetCancelEvent : Backup(
event = "Reset Card Notification",
params = mapOf("Option" to "Cancel"),
)
object ResetPerformEvent : Backup(
event = "Reset Card Notification",
params = mapOf("Option" to "Reset"),
)
}
sealed class Topup(

View file

@ -12,6 +12,7 @@ sealed class OnboardingWalletAction : Action {
object GetToCreateWalletStep : OnboardingWalletAction()
object CreateWallet : OnboardingWalletAction()
data class WalletWasCreated(
val shouldSendAnalyticsEvent: Boolean,
val result: CompletionResult<CreateProductWalletTaskResponse>,
) : OnboardingWalletAction()

View file

@ -104,14 +104,16 @@ private fun handleWalletAction(action: Action) {
scanResponse ?: return
scope.launch {
val result = tangemSdkManager.createProductWallet(scanResponse)
store.dispatchOnMain(OnboardingWalletAction.WalletWasCreated(result))
store.dispatchOnMain(OnboardingWalletAction.WalletWasCreated(true, result))
}
}
is OnboardingWalletAction.WalletWasCreated -> {
scanResponse ?: return
when (val result = action.result) {
is CompletionResult.Success -> {
Analytics.send(Onboarding.CreateWallet.WalletCreatedSuccessfully())
if (action.shouldSendAnalyticsEvent) {
Analytics.send(Onboarding.CreateWallet.WalletCreatedSuccessfully())
}
// here we must use updated scanResponse after createWallet & derivation
val updatedResponse = globalState.onboardingState.onboardingManager.scanResponse.copy(
card = result.data.card,
@ -268,7 +270,8 @@ private fun handleWallet2Action(action: OnboardingWallet2Action) {
CompletionResult.Failure(mediateResult.error)
}
}
store.dispatchOnMain(OnboardingWalletAction.WalletWasCreated(result))
// do not send analytics event for wallet2 flow, cause its already sent
store.dispatchOnMain(OnboardingWalletAction.WalletWasCreated(false, result))
}
else -> Unit

View file

@ -2,6 +2,8 @@ package com.tangem.tap.features.onboarding.products.wallet.ui.dialogs
import android.content.Context
import androidx.appcompat.app.AlertDialog
import com.tangem.core.analytics.Analytics
import com.tangem.tap.common.analytics.events.Onboarding
import com.tangem.tap.common.redux.global.GlobalAction
import com.tangem.tap.features.onboarding.products.wallet.redux.BackupAction
import com.tangem.tap.store
@ -13,9 +15,10 @@ object ResetBackupCardDialog {
setTitle(R.string.common_attention)
setMessage(R.string.onboarding_linking_error_card_with_wallets)
setPositiveButton(R.string.common_cancel) { _, _ ->
/* no-op */
Analytics.send(Onboarding.Backup.ResetCancelEvent)
}
setNegativeButton(R.string.common_reset) { _, _ ->
Analytics.send(Onboarding.Backup.ResetPerformEvent)
store.dispatch(BackupAction.ResetBackupCard(cardId))
}
setOnDismissListener {

View file

@ -23,10 +23,18 @@ sealed class SeedPhraseEvents(
}
}
object OnboardingSeedButtonOtherOptions : AnalyticsEvent(
category = "Onboarding / Create Wallet",
event = "Button - Other Options",
)
sealed class CreateWalletEvents(
event: String,
params: Map<String, String> = mapOf(),
) : AnalyticsEvent(ONBOARDING_CREATE_WALLET, event, params) {
object OnboardingSeedButtonCreateWallet : CreateWalletEvents("Button - Create Wallet")
object OnboardingSeedButtonOtherOptions : CreateWalletEvents("Button - Other Options")
companion object {
const val ONBOARDING_CREATE_WALLET = "Onboarding / Create Wallet"
}
}
enum class SeedPhraseSource {
IMPORTED, GENERATED

View file

@ -13,7 +13,7 @@ import com.tangem.data.common.locale.LocaleProvider
import com.tangem.feature.onboarding.data.model.CreateWalletResponse
import com.tangem.feature.onboarding.domain.SeedPhraseError
import com.tangem.feature.onboarding.domain.SeedPhraseInteractor
import com.tangem.feature.onboarding.presentation.wallet2.analytics.OnboardingSeedButtonOtherOptions
import com.tangem.feature.onboarding.presentation.wallet2.analytics.CreateWalletEvents
import com.tangem.feature.onboarding.presentation.wallet2.analytics.SeedPhraseEvents
import com.tangem.feature.onboarding.presentation.wallet2.analytics.SeedPhraseSource
import com.tangem.feature.onboarding.presentation.wallet2.model.*
@ -88,10 +88,11 @@ class SeedPhraseViewModel @Inject constructor(
router.currentScreen.onEach { screen ->
when (screen) {
SeedPhraseScreen.Intro -> {
analyticsEventHandler.send(SeedPhraseEvents.IntroScreenOpened)
/* no-op */
}
SeedPhraseScreen.AboutSeedPhrase -> {
analyticsEventHandler.send(SeedPhraseEvents.IntroScreenOpened)
mediator.allowScreenshots(true)
}
@ -271,6 +272,7 @@ class SeedPhraseViewModel @Inject constructor(
// region ButtonClickHandlers
private fun buttonCreateWalletClick() {
viewModelScope.launch(dispatchers.io) {
analyticsEventHandler.send(CreateWalletEvents.OnboardingSeedButtonCreateWallet)
mediator.createWallet(::handleWalletCreationResult)
}
}
@ -305,7 +307,7 @@ class SeedPhraseViewModel @Inject constructor(
}
private fun buttonOtherOptionsClick() {
analyticsEventHandler.send(OnboardingSeedButtonOtherOptions)
analyticsEventHandler.send(CreateWalletEvents.OnboardingSeedButtonOtherOptions)
router.openScreen(SeedPhraseScreen.AboutSeedPhrase)
}
@ -374,7 +376,6 @@ class SeedPhraseViewModel @Inject constructor(
}
private fun buttonContinueClick() {
analyticsEventHandler.send(SeedPhraseEvents.CheckingScreenOpened)
router.openScreen(SeedPhraseScreen.CheckSeedPhrase)
}