From b119c29d09eebb0f05a64142da9ce20df11c81b3 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 22 Feb 2023 17:18:44 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../LinkedCardContextInterceptor.kt | 26 +++++++++++++ .../tangem/tap/common/extensions/Analytics.kt | 37 ++++++++++++++++--- .../com/tangem/tap/domain/TapWalletManager.kt | 3 ++ .../tap/domain/scanCard/ScanCardProcessor.kt | 19 ++++++++-- .../tap/features/home/redux/HomeMiddleware.kt | 4 +- .../features/onboarding/OnboardingHelper.kt | 10 ++++- .../products/note/OnboardingNoteFragment.kt | 5 +++ .../note/redux/OnboardingNoteAction.kt | 1 + .../note/redux/OnboardingNoteMiddleware.kt | 5 ++- .../OnboardingOtherCardsFragment.kt | 5 +++ .../redux/OnboardingOtherCardsAction.kt | 1 + .../redux/OnboardingOtherCardsMiddleware.kt | 14 +++---- .../products/twins/redux/TwinCardsAction.kt | 4 +- .../twins/redux/TwinCardsMiddleware.kt | 7 ++-- .../products/twins/ui/TwinsCardsFragment.kt | 4 +- .../redux/OnboardingWalletMiddleware.kt | 2 + .../middlewares/MultiWalletMiddleware.kt | 2 + .../redux/WalletSelectorMiddleware.kt | 3 -- .../welcome/redux/WelcomeMiddleware.kt | 6 +-- 19 files changed, 124 insertions(+), 34 deletions(-) create mode 100644 app/src/main/java/com/tangem/tap/common/analytics/paramsInterceptor/LinkedCardContextInterceptor.kt diff --git a/app/src/main/java/com/tangem/tap/common/analytics/paramsInterceptor/LinkedCardContextInterceptor.kt b/app/src/main/java/com/tangem/tap/common/analytics/paramsInterceptor/LinkedCardContextInterceptor.kt new file mode 100644 index 0000000000..9dcfd80714 --- /dev/null +++ b/app/src/main/java/com/tangem/tap/common/analytics/paramsInterceptor/LinkedCardContextInterceptor.kt @@ -0,0 +1,26 @@ +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.ScanResponse + +/** +[REDACTED_AUTHOR] + */ +class LinkedCardContextInterceptor( + private val scanResponse: ScanResponse, + val parent: LinkedCardContextInterceptor? = null, +) : ParamsInterceptor { + + private val contextInterceptor = CardContextInterceptor(scanResponse) + + override fun id(): String = LinkedCardContextInterceptor.id() + + override fun canBeAppliedTo(event: AnalyticsEvent): Boolean = contextInterceptor.canBeAppliedTo(event) + + override fun intercept(params: MutableMap) = contextInterceptor.intercept(params) + + companion object { + fun id(): String = LinkedCardContextInterceptor::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/common/extensions/Analytics.kt b/app/src/main/java/com/tangem/tap/common/extensions/Analytics.kt index 3772f86a71..8d3ce8e5ad 100644 --- a/app/src/main/java/com/tangem/tap/common/extensions/Analytics.kt +++ b/app/src/main/java/com/tangem/tap/common/extensions/Analytics.kt @@ -2,15 +2,42 @@ package com.tangem.tap.common.extensions import com.tangem.core.analytics.Analytics import com.tangem.domain.common.ScanResponse -import com.tangem.tap.common.analytics.paramsInterceptor.CardContextInterceptor +import com.tangem.tap.common.analytics.paramsInterceptor.LinkedCardContextInterceptor /** [REDACTED_AUTHOR] */ -fun Analytics.addCardContext(scanResponse: ScanResponse) { - addParamsInterceptor(CardContextInterceptor(scanResponse)) + +/** + * Sets the new context + */ +fun Analytics.setContext(scanResponse: ScanResponse) { + addParamsInterceptor(LinkedCardContextInterceptor(scanResponse)) } -fun Analytics.eraseCardContext() { - removeParamsInterceptor(CardContextInterceptor.id()) +/** + * Erases the context + */ +fun Analytics.eraseContext() { + removeParamsInterceptor(LinkedCardContextInterceptor.id()) +} + +/** + * Adds a new context and keeps a previous context as the parent of the new one + */ +fun Analytics.addContext(scanResponse: ScanResponse) { + val currentContext = removeParamsInterceptor(LinkedCardContextInterceptor.id()) as? LinkedCardContextInterceptor + val newContext = LinkedCardContextInterceptor(scanResponse, parent = currentContext) + + addParamsInterceptor(newContext) +} + +/** + * Removes the current context and restores the previous one if it was present. + */ +fun Analytics.removeContext() { + val currentContext = removeParamsInterceptor(LinkedCardContextInterceptor.id()) as? LinkedCardContextInterceptor + val previousContext = currentContext?.parent ?: return + + addParamsInterceptor(previousContext) } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt index df19afc1c4..1800235d68 100644 --- a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt @@ -10,6 +10,7 @@ import com.tangem.blockchain.common.WalletManagerFactory import com.tangem.common.doOnFailure import com.tangem.common.doOnSuccess import com.tangem.common.services.Result +import com.tangem.core.analytics.Analytics import com.tangem.domain.common.CardDTO import com.tangem.domain.common.ScanResponse import com.tangem.domain.common.TapWorkarounds.isStart2Coin @@ -19,6 +20,7 @@ import com.tangem.domain.common.extensions.withMainContext import com.tangem.operations.attestation.Attestation import com.tangem.tap.common.extensions.dispatchOnMain import com.tangem.tap.common.extensions.safeUpdate +import com.tangem.tap.common.extensions.setContext import com.tangem.tap.common.redux.global.GlobalAction import com.tangem.tap.domain.configurable.config.ConfigManager import com.tangem.tap.domain.extensions.isMultiwalletAllowed @@ -94,6 +96,7 @@ class TapWalletManager { } suspend fun onWalletSelected(userWallet: UserWallet, refresh: Boolean) { + Analytics.setContext(userWallet.scanResponse) val scanResponse = userWallet.scanResponse val card = scanResponse.card val attestationFailed = card.attestation.status == Attestation.Status.Failed diff --git a/app/src/main/java/com/tangem/tap/domain/scanCard/ScanCardProcessor.kt b/app/src/main/java/com/tangem/tap/domain/scanCard/ScanCardProcessor.kt index 3317a70315..46a53c4fec 100644 --- a/app/src/main/java/com/tangem/tap/domain/scanCard/ScanCardProcessor.kt +++ b/app/src/main/java/com/tangem/tap/domain/scanCard/ScanCardProcessor.kt @@ -13,9 +13,11 @@ import com.tangem.domain.common.extensions.withMainContext import com.tangem.operations.backup.BackupService import com.tangem.tap.DELAY_SDK_DIALOG_CLOSE import com.tangem.tap.backupService -import com.tangem.tap.common.extensions.addCardContext +import com.tangem.tap.common.analytics.paramsInterceptor.CardContextInterceptor +import com.tangem.tap.common.extensions.addContext import com.tangem.tap.common.extensions.dispatchOnMain import com.tangem.tap.common.extensions.primaryCardIsSaltPayVisa +import com.tangem.tap.common.extensions.setContext import com.tangem.tap.common.redux.global.GlobalAction import com.tangem.tap.common.redux.navigation.AppScreen import com.tangem.tap.common.redux.navigation.NavigationAction @@ -105,8 +107,15 @@ object ScanCardProcessor { analyticsEvent: AnalyticsEvent?, scanResponse: ScanResponse, ) { - Analytics.addCardContext(scanResponse) - analyticsEvent?.let { Analytics.send(it) } + analyticsEvent?.let { + // this workaround needed to send CardWasScannedEvent without adding a context + val interceptor = CardContextInterceptor(scanResponse) + val params = it.params.toMutableMap() + interceptor.intercept(params) + it.params = params.toMap() + + Analytics.send(it) + } } /** @@ -196,6 +205,7 @@ object ScanCardProcessor { withMainContext { when (result) { is Result.Success -> { + Analytics.addContext(scanResponse) val isOnboardingCase = result.data if (isOnboardingCase) { onWalletNotCreated() @@ -222,16 +232,19 @@ object ScanCardProcessor { SaltPayExceptionHandler.handle(error) onFailure(TangemSdkError.ExceptionError(error)) } else { + Analytics.setContext(scanResponse) onSuccess(scanResponse) } } } else { if (OnboardingHelper.isOnboardingCase(scanResponse)) { + Analytics.addContext(scanResponse) onWalletNotCreated() store.dispatchOnMain(GlobalAction.Onboarding.Start(scanResponse, canSkipBackup = true)) val appScreen = OnboardingHelper.whereToNavigate(scanResponse) navigateTo(appScreen) { onProgressStateChange(it) } } else { + Analytics.setContext(scanResponse) if (scanResponse.twinsIsTwinned() && !preferencesStorage.wasTwinsOnboardingShown()) { onWalletNotCreated() store.dispatchOnMain(TwinCardsAction.SetStepOfScreen(TwinCardsStep.WelcomeOnly(scanResponse))) diff --git a/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt b/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt index afcb5c7a14..bfb9dec130 100644 --- a/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt @@ -10,7 +10,7 @@ import com.tangem.tap.common.analytics.events.Shop import com.tangem.tap.common.entities.IndeterminateProgressButton import com.tangem.tap.common.extensions.dispatchOnMain import com.tangem.tap.common.extensions.dispatchOpenUrl -import com.tangem.tap.common.extensions.eraseCardContext +import com.tangem.tap.common.extensions.eraseContext import com.tangem.tap.common.extensions.onCardScanned import com.tangem.tap.common.extensions.onUserWalletSelected import com.tangem.tap.common.redux.AppState @@ -54,7 +54,7 @@ private val homeMiddleware: Middleware = { _, _ -> private fun handleHomeAction(action: Action) { when (action) { is HomeAction.OnCreate -> { - Analytics.eraseCardContext() + Analytics.eraseContext() Analytics.send(IntroductionProcess.ScreenOpened()) } is HomeAction.Init -> { diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingHelper.kt b/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingHelper.kt index cb01879840..253c05232f 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingHelper.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingHelper.kt @@ -1,9 +1,12 @@ package com.tangem.tap.features.onboarding +import com.tangem.core.analytics.Analytics import com.tangem.domain.common.ProductType import com.tangem.domain.common.ScanResponse import com.tangem.tap.common.extensions.dispatchOnMain import com.tangem.tap.common.extensions.onCardScanned +import com.tangem.tap.common.extensions.removeContext +import com.tangem.tap.common.extensions.setContext import com.tangem.tap.common.redux.navigation.AppScreen import com.tangem.tap.common.redux.navigation.NavigationAction import com.tangem.tap.features.saveWallet.redux.SaveWalletAction @@ -47,7 +50,7 @@ class OnboardingHelper { ProductType.Twins -> AppScreen.OnboardingTwins ProductType.SaltPay -> AppScreen.OnboardingWallet ProductType.Start2Coin -> throw java.lang.UnsupportedOperationException( - "Onboarding for Start2Coin cards is not supported" + "Onboarding for Start2Coin cards is not supported", ) } } @@ -57,6 +60,7 @@ class OnboardingHelper { accessCode: String? = null, backupCardsIds: List? = null, ) { + Analytics.setContext(scanResponse) when { // When should save user wallets, then save card without navigate to save wallet screen preferencesStorage.shouldSaveUserWallets -> scope.launch { @@ -94,5 +98,9 @@ class OnboardingHelper { store.dispatchOnMain(NavigationAction.NavigateTo(AppScreen.Wallet)) } + + fun onInterrupted() { + Analytics.removeContext() + } } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/OnboardingNoteFragment.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/OnboardingNoteFragment.kt index c4b34eba62..6ca9b0c26a 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/OnboardingNoteFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/OnboardingNoteFragment.kt @@ -210,4 +210,9 @@ class OnboardingNoteFragment : BaseOnboardingFragment() { TransitionManager.beginDelayedTransition(onboardingWalletContainer, transition) } } + + override fun handleOnBackPressed() { + store.dispatch(OnboardingNoteAction.OnBackPressed) + super.handleOnBackPressed() + } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteAction.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteAction.kt index 8e7046f114..337aaada28 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteAction.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteAction.kt @@ -21,6 +21,7 @@ sealed class OnboardingNoteAction : Action { data class SetWalletManager(val walletManager: WalletManager) : OnboardingNoteAction() object DetermineStepOfScreen : OnboardingNoteAction() object Done : OnboardingNoteAction() + object OnBackPressed : OnboardingNoteAction() data class SetStepOfScreen(val step: OnboardingNoteStep) : OnboardingNoteAction() diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteMiddleware.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteMiddleware.kt index c4f112770f..aa64534889 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteMiddleware.kt @@ -2,9 +2,9 @@ package com.tangem.tap.features.onboarding.products.note.redux import com.tangem.common.CompletionResult import com.tangem.common.extensions.guard +import com.tangem.core.analytics.Analytics import com.tangem.domain.common.extensions.withMainContext import com.tangem.tap.DELAY_SDK_DIALOG_CLOSE -import com.tangem.core.analytics.Analytics import com.tangem.tap.common.analytics.events.AnalyticsParam import com.tangem.tap.common.analytics.events.Onboarding import com.tangem.tap.common.extensions.dispatchDebugErrorNotification @@ -190,5 +190,8 @@ private fun handleNoteAction(appState: () -> AppState?, action: Action, dispatch store.dispatch(GlobalAction.Onboarding.Stop) OnboardingHelper.trySaveWalletAndNavigateToWalletScreen(scanResponse) } + OnboardingNoteAction.OnBackPressed -> { + OnboardingHelper.onInterrupted() + } } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/OnboardingOtherCardsFragment.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/OnboardingOtherCardsFragment.kt index 5439b76612..c974a92b72 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/OnboardingOtherCardsFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/OnboardingOtherCardsFragment.kt @@ -118,4 +118,9 @@ class OnboardingOtherCardsFragment : BaseOnboardingFragment { -// do nothing - } + is CompletionResult.Failure -> Unit } } } @@ -130,9 +128,9 @@ private fun handleOtherCardsAction(action: Action) { store.dispatch(GlobalAction.Onboarding.Stop) OnboardingHelper.trySaveWalletAndNavigateToWalletScreen(onboardingManager.scanResponse) } - is OnboardingOtherCardsAction.Confetti.Hide, - is OnboardingOtherCardsAction.SetArtworkUrl, - is OnboardingOtherCardsAction.Confetti.Show, - -> Unit + OnboardingOtherCardsAction.OnBackPressed -> { + OnboardingHelper.onInterrupted() + } + else -> Unit } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsAction.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsAction.kt index 8b25bf8e00..c6f9dcea27 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsAction.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsAction.kt @@ -28,9 +28,9 @@ sealed class TwinCardsAction : Action { } sealed class Wallet : TwinCardsAction() { - data class HandleOnBackPressed( + data class OnBackPressed( // this is necessary for the correct animation of the return of cards to the Home screen - val shouldResetTwinCardsWidget: (should: Boolean, popAction: VoidCallback) -> Unit + val shouldResetTwinCardsWidget: (should: Boolean, popAction: VoidCallback) -> Unit, ) : TwinCardsAction() data class ShowInterruptDialog(val onOk: VoidCallback) : TwinCardsAction(), StateDialog diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsMiddleware.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsMiddleware.kt index 6c913f0b1e..5626ea170a 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsMiddleware.kt @@ -3,10 +3,10 @@ package com.tangem.tap.features.onboarding.products.twins.redux import com.tangem.blockchain.extensions.Result import com.tangem.common.CompletionResult import com.tangem.common.extensions.guard +import com.tangem.core.analytics.Analytics import com.tangem.domain.common.ScanResponse import com.tangem.domain.common.extensions.withMainContext import com.tangem.tap.DELAY_SDK_DIALOG_CLOSE -import com.tangem.core.analytics.Analytics import com.tangem.tap.common.analytics.events.AnalyticsParam import com.tangem.tap.common.analytics.events.Onboarding import com.tangem.tap.common.extensions.dispatchDebugErrorNotification @@ -26,8 +26,8 @@ import com.tangem.tap.domain.TapError import com.tangem.tap.domain.extensions.makePrimaryWalletManager import com.tangem.tap.domain.model.builders.UserWalletIdBuilder import com.tangem.tap.domain.twins.TwinCardsManager -import com.tangem.tap.features.onboarding.OnboardingHelper import com.tangem.tap.features.home.RUSSIA_COUNTRY_CODE +import com.tangem.tap.features.onboarding.OnboardingHelper import com.tangem.tap.features.wallet.models.Currency import com.tangem.tap.features.wallet.redux.ProgressState import com.tangem.tap.features.wallet.redux.WalletAction @@ -121,7 +121,7 @@ private fun handle(action: Action, dispatch: DispatchFunction) { } } } - is TwinCardsAction.Wallet.HandleOnBackPressed -> { + is TwinCardsAction.Wallet.OnBackPressed -> { val shouldReturnCardBack = twinCardsState.mode == CreateTwinWalletMode.CreateWallet && twinCardsState.currentStep != TwinCardsStep.TopUpWallet && twinCardsState.currentStep != TwinCardsStep.Done @@ -136,6 +136,7 @@ private fun handle(action: Action, dispatch: DispatchFunction) { val stateDialog = TwinCardsAction.Wallet.ShowInterruptDialog(onInterruptPrompt) store.dispatchDialogShow(stateDialog) } else { + OnboardingHelper.onInterrupted() store.dispatch(TwinCardsAction.CardsManager.Release) action.shouldResetTwinCardsWidget(shouldReturnCardBack) { store.dispatch(NavigationAction.PopBackTo()) diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/TwinsCardsFragment.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/TwinsCardsFragment.kt index 9d7b99a2a6..2dae95f066 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/TwinsCardsFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/TwinsCardsFragment.kt @@ -13,12 +13,12 @@ import coil.load import com.tangem.Message import com.tangem.blockchain.common.Blockchain import com.tangem.common.extensions.VoidCallback +import com.tangem.core.analytics.Analytics import com.tangem.core.ui.fragments.setStatusBarColor import com.tangem.domain.common.ScanResponse import com.tangem.domain.common.TwinCardNumber import com.tangem.tangem_sdk_new.ui.widget.leapfrogWidget.LeapfrogWidget import com.tangem.tap.common.AndroidAssetReader -import com.tangem.core.analytics.Analytics import com.tangem.tap.common.analytics.events.Onboarding import com.tangem.tap.common.extensions.beginDelayedTransition import com.tangem.tap.common.extensions.getDrawableCompat @@ -401,7 +401,7 @@ class TwinsCardsFragment : BaseOnboardingFragment() { override fun handleOnBackPressed() { store.dispatch( - TwinCardsAction.Wallet.HandleOnBackPressed { should, popAction -> + TwinCardsAction.Wallet.OnBackPressed { should, popAction -> store.dispatch(TwinCardsAction.Confetti.Hide) showConfetti(false) if (should) switchToCard(TwinCardNumber.First, true, popAction) 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 3397e56980..83493c41b6 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 @@ -426,6 +426,7 @@ private fun handleOnBackPressed(state: OnboardingWalletState) { if (state.isSaltPay) { showInterruptOnboardingDialog() } else { + OnboardingHelper.onInterrupted() store.dispatch(NavigationAction.PopBackTo()) } } @@ -436,6 +437,7 @@ private fun showInterruptOnboardingDialog() { store.dispatchDialogShow( OnboardingDialog.InterruptOnboarding( onOk = { + OnboardingHelper.onInterrupted() store.dispatch(BackupAction.DiscardBackup) store.dispatch(NavigationAction.PopBackTo()) }, diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/MultiWalletMiddleware.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/MultiWalletMiddleware.kt index e6798ea6ca..4f56266142 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/MultiWalletMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/MultiWalletMiddleware.kt @@ -9,6 +9,7 @@ import com.tangem.core.analytics.Analytics import com.tangem.domain.common.extensions.withMainContext import com.tangem.tap.common.analytics.events.AnalyticsParam import com.tangem.tap.common.analytics.events.Token.ButtonRemoveToken +import com.tangem.tap.common.extensions.addContext import com.tangem.tap.common.extensions.dispatchDialogShow import com.tangem.tap.common.extensions.dispatchErrorNotification import com.tangem.tap.common.extensions.dispatchOnMain @@ -163,6 +164,7 @@ class MultiWalletMiddleware { is WalletAction.MultiWallet.ShowWalletBackupWarning -> Unit is WalletAction.MultiWallet.BackupWallet -> { store.state.globalState.scanResponse?.let { + Analytics.addContext(it) store.dispatch(GlobalAction.Onboarding.Start(it, canSkipBackup = false)) store.dispatch(NavigationAction.NavigateTo(AppScreen.OnboardingWallet)) } diff --git a/app/src/main/java/com/tangem/tap/features/walletSelector/redux/WalletSelectorMiddleware.kt b/app/src/main/java/com/tangem/tap/features/walletSelector/redux/WalletSelectorMiddleware.kt index 1a98a9c93d..505bfc2629 100644 --- a/app/src/main/java/com/tangem/tap/features/walletSelector/redux/WalletSelectorMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/walletSelector/redux/WalletSelectorMiddleware.kt @@ -12,7 +12,6 @@ import com.tangem.domain.common.util.UserWalletId import com.tangem.tap.common.analytics.events.AnalyticsParam import com.tangem.tap.common.analytics.events.Basic import com.tangem.tap.common.analytics.events.MyWallets -import com.tangem.tap.common.extensions.addCardContext import com.tangem.tap.common.extensions.dispatchOnMain import com.tangem.tap.common.extensions.onUserWalletSelected import com.tangem.tap.common.redux.AppState @@ -199,8 +198,6 @@ internal class WalletSelectorMiddleware { .doOnSuccess { val selectedUserWallet = userWalletsListManager.selectedUserWalletSync if (selectedUserWallet != null) { - Analytics.addCardContext(selectedUserWallet.scanResponse) - store.dispatchOnMain(NavigationAction.PopBackTo(AppScreen.Wallet)) store.onUserWalletSelected(selectedUserWallet) } diff --git a/app/src/main/java/com/tangem/tap/features/welcome/redux/WelcomeMiddleware.kt b/app/src/main/java/com/tangem/tap/features/welcome/redux/WelcomeMiddleware.kt index 76c0a2319e..166796287b 100644 --- a/app/src/main/java/com/tangem/tap/features/welcome/redux/WelcomeMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/welcome/redux/WelcomeMiddleware.kt @@ -9,9 +9,8 @@ import com.tangem.domain.common.ScanResponse import com.tangem.tap.common.analytics.events.AnalyticsParam import com.tangem.tap.common.analytics.events.Basic import com.tangem.tap.common.analytics.events.SignIn -import com.tangem.tap.common.extensions.addCardContext import com.tangem.tap.common.extensions.dispatchOnMain -import com.tangem.tap.common.extensions.eraseCardContext +import com.tangem.tap.common.extensions.eraseContext import com.tangem.tap.common.extensions.onUserWalletSelected import com.tangem.tap.common.redux.AppState import com.tangem.tap.common.redux.navigation.AppScreen @@ -44,7 +43,7 @@ internal class WelcomeMiddleware { private fun handleAction(action: WelcomeAction, state: WelcomeState) { when (action) { is WelcomeAction.OnCreate -> { - Analytics.eraseCardContext() + Analytics.eraseContext() Analytics.send(SignIn.ScreenOpened()) } is WelcomeAction.ProceedWithBiometrics -> { @@ -71,7 +70,6 @@ internal class WelcomeMiddleware { } .doOnSuccess { selectedUserWallet -> if (selectedUserWallet != null) { - Analytics.addCardContext(selectedUserWallet.scanResponse) store.dispatchOnMain(NavigationAction.NavigateTo(AppScreen.Wallet)) store.dispatchOnMain(WelcomeAction.ProceedWithBiometrics.Success) store.onUserWalletSelected(selectedUserWallet)