diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/Onboarding.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/Onboarding.kt index 9612f2b972..a9432ad404 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/events/Onboarding.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/Onboarding.kt @@ -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( diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletAction.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletAction.kt index c021c9fad5..b1f339be2a 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletAction.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletAction.kt @@ -12,6 +12,7 @@ sealed class OnboardingWalletAction : Action { object GetToCreateWalletStep : OnboardingWalletAction() object CreateWallet : OnboardingWalletAction() data class WalletWasCreated( + val shouldSendAnalyticsEvent: Boolean, val result: CompletionResult, ) : OnboardingWalletAction() diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt index d1a927c252..2ec12176f7 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt @@ -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 diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/ResetBackupCardDialog.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/ResetBackupCardDialog.kt index 0da9a7063a..c8e883cdb8 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/ResetBackupCardDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/ResetBackupCardDialog.kt @@ -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 { diff --git a/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/analytics/SeedPhraseEvents.kt b/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/analytics/SeedPhraseEvents.kt index d593c179ed..9ae8093ab2 100644 --- a/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/analytics/SeedPhraseEvents.kt +++ b/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/analytics/SeedPhraseEvents.kt @@ -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 = 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 diff --git a/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/viewmodel/SeedPhraseViewModel.kt b/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/viewmodel/SeedPhraseViewModel.kt index 19e115cfe4..7cdaf16171 100644 --- a/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/viewmodel/SeedPhraseViewModel.kt +++ b/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/viewmodel/SeedPhraseViewModel.kt @@ -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) }