diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt index cca03e068f..5e3f8a81c5 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt @@ -1,5 +1,7 @@ package com.tangem.tap.common.analytics.events +import com.tangem.tap.features.details.redux.SecurityOption + sealed class AnalyticsParam { sealed class CurrencyType(val value: String) { @@ -39,6 +41,14 @@ sealed class AnalyticsParam { object AccessCode : SecurityMode("Access Code") object Passcode : SecurityMode("Passcode") object LongTap : SecurityMode("Long Tap") + + companion object { + fun from(option: SecurityOption): SecurityMode = when(option){ + SecurityOption.AccessCode -> AccessCode + SecurityOption.PassCode -> Passcode + SecurityOption.LongTap -> LongTap + } + } } companion object Key { diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/Settings.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/Settings.kt index fff6794867..b24d6ef042 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/events/Settings.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/Settings.kt @@ -35,12 +35,12 @@ sealed class Settings( class UserCodeChanged : CardSettings("User Code Changed") class ButtonChangeSecurityMode : CardSettings("Button - Change Security Mode") - sealed class ButtonChangeUserCode(type: AnalyticsParam.UserCode) : CardSettings( + class ButtonChangeUserCode(type: AnalyticsParam.UserCode) : CardSettings( event = "Button - Change User Code", params = mapOf("Type" to type.value), ) - sealed class SecurityModeChanged(mode: AnalyticsParam.SecurityMode) : CardSettings( + class SecurityModeChanged(mode: AnalyticsParam.SecurityMode) : CardSettings( event = "Security Mode Changed", params = mapOf("Mode" to mode.value), ) diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsMiddleware.kt b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsMiddleware.kt index 6df912853f..13caeece31 100644 --- a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsMiddleware.kt @@ -6,6 +6,8 @@ import com.tangem.domain.common.TapWorkarounds.isTangemTwins import com.tangem.tap.common.analytics.Analytics import com.tangem.tap.common.analytics.AnalyticsAnOld import com.tangem.tap.common.analytics.AnalyticsParamAnOld +import com.tangem.tap.common.analytics.events.AnalyticsParam +import com.tangem.tap.common.analytics.events.Settings import com.tangem.tap.common.extensions.dispatchNotification import com.tangem.tap.common.extensions.dispatchOnMain import com.tangem.tap.common.redux.AppState @@ -107,6 +109,7 @@ class DetailsMiddleware { val result = tangemSdkManager.resetToFactorySettings(card) when (result) { is CompletionResult.Success -> { + Analytics.send(Settings.CardSettings.FactoryResetFinished()) store.dispatchOnMain(NavigationAction.PopBackTo(AppScreen.Home)) } is CompletionResult.Failure -> { @@ -133,6 +136,10 @@ class DetailsMiddleware { is DetailsAction.ManageSecurity.OpenSecurity -> { store.dispatch(NavigationAction.NavigateTo(AppScreen.DetailsSecurity)) } + is DetailsAction.ManageSecurity.SelectOption -> { + val modeParam = AnalyticsParam.SecurityMode.from(action.option) + Analytics.send(Settings.CardSettings.SecurityModeChanged(modeParam)) + } is DetailsAction.ManageSecurity.SaveChanges -> { val cardId = store.state.detailsState.scanResponse?.card?.cardId val selectedOption = @@ -176,7 +183,10 @@ class DetailsMiddleware { is DetailsAction.ManageSecurity.ChangeAccessCode -> { val card = store.state.detailsState.cardSettingsState?.card ?: return scope.launch { - tangemSdkManager.setAccessCode(card.cardId) + when(tangemSdkManager.setAccessCode(card.cardId)){ + is CompletionResult.Success -> Analytics.send(Settings.CardSettings.UserCodeChanged()) + is CompletionResult.Failure -> {} + } } } else -> { /* no-op */ diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/cardsettings/CardSettingsViewModel.kt b/app/src/main/java/com/tangem/tap/features/details/ui/cardsettings/CardSettingsViewModel.kt index b238ffe8f2..44f5cdb8d2 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/cardsettings/CardSettingsViewModel.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/cardsettings/CardSettingsViewModel.kt @@ -2,6 +2,9 @@ package com.tangem.tap.features.details.ui.cardsettings import com.tangem.domain.common.TapWorkarounds.isTangemTwins import com.tangem.domain.common.getTwinCardIdForUser +import com.tangem.tap.common.analytics.Analytics +import com.tangem.tap.common.analytics.events.AnalyticsParam +import com.tangem.tap.common.analytics.events.Settings import com.tangem.tap.common.redux.AppState import com.tangem.tap.features.details.redux.CardSettingsState import com.tangem.tap.features.details.redux.DetailsAction @@ -59,12 +62,15 @@ class CardSettingsViewModel(private val store: Store) { private fun handleClickingItem(item: CardInfo) { when (item) { is CardInfo.ChangeAccessCode -> { + Analytics.send(Settings.CardSettings.ButtonChangeUserCode(AnalyticsParam.UserCode.AccessCode)) store.dispatch(DetailsAction.ManageSecurity.ChangeAccessCode) } is CardInfo.ResetToFactorySettings -> { + Analytics.send(Settings.CardSettings.ButtonFactoryReset()) store.dispatch(DetailsAction.ResetToFactory.Start) } is CardInfo.SecurityMode -> { + Analytics.send(Settings.CardSettings.ButtonChangeSecurityMode()) store.dispatch(DetailsAction.ManageSecurity.OpenSecurity) } else -> {}