diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/cardsettings/model/CardSettingsModel.kt b/app/src/main/java/com/tangem/tap/features/details/ui/cardsettings/model/CardSettingsModel.kt index 3178d30e40..026de703ee 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/cardsettings/model/CardSettingsModel.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/cardsettings/model/CardSettingsModel.kt @@ -105,7 +105,7 @@ internal class CardSettingsModel @Inject constructor( private fun scanCard() = modelScope.launch { scanCardProcessor.scan( - analyticsSource = com.tangem.core.analytics.models.AnalyticsParam.ScreensSources.Settings, + analyticsSource = com.tangem.core.analytics.models.AnalyticsParam.ScreensSources.CardSettings, shouldCheckIsAlreadyActivated = false, allowsRequestAccessCodeFromRepository = true, ) diff --git a/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt b/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt index d146fe91d5..1e1942f867 100644 --- a/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt +++ b/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt @@ -539,7 +539,7 @@ internal class ChildFactory @Inject constructor( is AppRoute.CreateHardwareWallet -> { createComponentChild( context = context, - params = Unit, + params = CreateHardwareWalletComponent.Params(source = route.source), componentFactory = createHardwareWalletComponentFactory, ) } diff --git a/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt b/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt index 5f2986c8dc..12df52d117 100644 --- a/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt +++ b/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt @@ -387,7 +387,9 @@ sealed class AppRoute(val path: String) : Route { } @Serializable - object CreateHardwareWallet : AppRoute(path = "/create_hardware_wallet") + data class CreateHardwareWallet( + val source: AnalyticsParam.ScreensSources, + ) : AppRoute(path = "/create_hardware_wallet") @Serializable data class CreateMobileWallet( diff --git a/core/analytics/models/src/main/java/com/tangem/core/analytics/models/AnalyticsParam.kt b/core/analytics/models/src/main/java/com/tangem/core/analytics/models/AnalyticsParam.kt index 97d5033769..7aeb9f791d 100644 --- a/core/analytics/models/src/main/java/com/tangem/core/analytics/models/AnalyticsParam.kt +++ b/core/analytics/models/src/main/java/com/tangem/core/analytics/models/AnalyticsParam.kt @@ -71,6 +71,7 @@ sealed class AnalyticsParam { @Serializable enum class ScreensSources(val value: String) { Settings("Settings"), + CardSettings("Card Settings"), Main("Main"), SignIn("Sign In"), Send("Send"), diff --git a/features/create-wallet-selection/impl/src/main/kotlin/com/tangem/features/createwalletselection/CreateWalletSelectionModel.kt b/features/create-wallet-selection/impl/src/main/kotlin/com/tangem/features/createwalletselection/CreateWalletSelectionModel.kt index 5cd91beff4..943ca587a9 100644 --- a/features/create-wallet-selection/impl/src/main/kotlin/com/tangem/features/createwalletselection/CreateWalletSelectionModel.kt +++ b/features/create-wallet-selection/impl/src/main/kotlin/com/tangem/features/createwalletselection/CreateWalletSelectionModel.kt @@ -100,7 +100,7 @@ internal class CreateWalletSelectionModel @Inject constructor( } private fun onHardwareWalletClick() { - router.push(AppRoute.CreateHardwareWallet) + router.push(AppRoute.CreateHardwareWallet(source = AnalyticsParam.ScreensSources.AddNew)) } private fun onBuyClick() { diff --git a/features/create-wallet-start/impl/src/main/kotlin/com/tangem/features/createwalletstart/CreateWalletStartModel.kt b/features/create-wallet-start/impl/src/main/kotlin/com/tangem/features/createwalletstart/CreateWalletStartModel.kt index b53525f33f..049dd1a59f 100644 --- a/features/create-wallet-start/impl/src/main/kotlin/com/tangem/features/createwalletstart/CreateWalletStartModel.kt +++ b/features/create-wallet-start/impl/src/main/kotlin/com/tangem/features/createwalletstart/CreateWalletStartModel.kt @@ -189,7 +189,7 @@ internal class CreateWalletStartModel @Inject constructor( isBiometricsRequestPolicy = shouldSaveAccessCodes, ) - val analyticsSource = AnalyticsParam.ScreensSources.Intro + val analyticsSource = AnalyticsParam.ScreensSources.CreateWalletIntro scanCardProcessor.scan( analyticsSource = analyticsSource, diff --git a/features/create-wallet-start/impl/src/test/kotlin/com/tangem/features/createwalletstart/CreateWalletStartModelTest.kt b/features/create-wallet-start/impl/src/test/kotlin/com/tangem/features/createwalletstart/CreateWalletStartModelTest.kt index e2358cc73f..caa12bd14b 100644 --- a/features/create-wallet-start/impl/src/test/kotlin/com/tangem/features/createwalletstart/CreateWalletStartModelTest.kt +++ b/features/create-wallet-start/impl/src/test/kotlin/com/tangem/features/createwalletstart/CreateWalletStartModelTest.kt @@ -112,7 +112,7 @@ internal class CreateWalletStartModelTest { } coVerify { scanCardProcessor.scan( - analyticsSource = AnalyticsParam.ScreensSources.Intro, + analyticsSource = AnalyticsParam.ScreensSources.CreateWalletIntro, shouldCheckIsAlreadyActivated = true, cardId = null, onProgressStateChange = any(), @@ -141,7 +141,7 @@ internal class CreateWalletStartModelTest { } coVerify { scanCardProcessor.scan( - analyticsSource = AnalyticsParam.ScreensSources.Intro, + analyticsSource = AnalyticsParam.ScreensSources.CreateWalletIntro, shouldCheckIsAlreadyActivated = true, cardId = null, onProgressStateChange = any(), @@ -258,7 +258,7 @@ internal class CreateWalletStartModelTest { verify { cardSdkConfigRepository.setAccessCodeRequestPolicy(isBiometricsRequestPolicy = true) } coVerify { scanCardProcessor.scan( - analyticsSource = AnalyticsParam.ScreensSources.Intro, + analyticsSource = AnalyticsParam.ScreensSources.CreateWalletIntro, shouldCheckIsAlreadyActivated = true, cardId = null, onProgressStateChange = any(), diff --git a/features/home/impl/src/main/kotlin/com/tangem/features/home/impl/model/HomeModel.kt b/features/home/impl/src/main/kotlin/com/tangem/features/home/impl/model/HomeModel.kt index 4460856afc..147e146fa6 100644 --- a/features/home/impl/src/main/kotlin/com/tangem/features/home/impl/model/HomeModel.kt +++ b/features/home/impl/src/main/kotlin/com/tangem/features/home/impl/model/HomeModel.kt @@ -78,7 +78,6 @@ internal class HomeModel @Inject constructor( HomeUM( scanInProgress = false, stories = getRestrictedStories().toImmutableList(), - onScanClick = ::onScanClick, onShopClick = ::onShopClick, onSearchTokensClick = ::onSearchTokensClick, onGetStartedClick = ::onGetStartedClick, @@ -121,11 +120,6 @@ internal class HomeModel @Inject constructor( } } - private fun onScanClick() { - analyticsEventHandler.send(IntroductionProcess.ButtonScanCardLegacy()) - scanCard() - } - private fun onShopClick() { analyticsEventHandler.send(IntroductionProcess.ButtonBuyCards()) analyticsEventHandler.send(Shop.ScreenOpened()) diff --git a/features/home/impl/src/main/kotlin/com/tangem/features/home/impl/ui/state/HomeUM.kt b/features/home/impl/src/main/kotlin/com/tangem/features/home/impl/ui/state/HomeUM.kt index e8f1e02f64..924ca985fb 100644 --- a/features/home/impl/src/main/kotlin/com/tangem/features/home/impl/ui/state/HomeUM.kt +++ b/features/home/impl/src/main/kotlin/com/tangem/features/home/impl/ui/state/HomeUM.kt @@ -5,7 +5,6 @@ import kotlinx.collections.immutable.ImmutableList data class HomeUM( val scanInProgress: Boolean, val stories: ImmutableList, - val onScanClick: () -> Unit, val onShopClick: () -> Unit, val onSearchTokensClick: () -> Unit, val onGetStartedClick: () -> Unit, diff --git a/features/hot-wallet/api/src/main/kotlin/com/tangem/features/hotwallet/CreateHardwareWalletComponent.kt b/features/hot-wallet/api/src/main/kotlin/com/tangem/features/hotwallet/CreateHardwareWalletComponent.kt index ec266c8c2f..a3c8a0a0cf 100644 --- a/features/hot-wallet/api/src/main/kotlin/com/tangem/features/hotwallet/CreateHardwareWalletComponent.kt +++ b/features/hot-wallet/api/src/main/kotlin/com/tangem/features/hotwallet/CreateHardwareWalletComponent.kt @@ -1,9 +1,14 @@ package com.tangem.features.hotwallet +import com.tangem.core.analytics.models.AnalyticsParam import com.tangem.core.decompose.factory.ComponentFactory import com.tangem.core.ui.decompose.ComposableContentComponent interface CreateHardwareWalletComponent : ComposableContentComponent { - interface Factory : ComponentFactory + data class Params( + val source: AnalyticsParam.ScreensSources, + ) + + interface Factory : ComponentFactory } \ No newline at end of file diff --git a/features/hot-wallet/impl/src/main/kotlin/com/tangem/features/hotwallet/createhardwarewallet/CreateHardwareWalletModel.kt b/features/hot-wallet/impl/src/main/kotlin/com/tangem/features/hotwallet/createhardwarewallet/CreateHardwareWalletModel.kt index 89da07442c..6de5725db6 100644 --- a/features/hot-wallet/impl/src/main/kotlin/com/tangem/features/hotwallet/createhardwarewallet/CreateHardwareWalletModel.kt +++ b/features/hot-wallet/impl/src/main/kotlin/com/tangem/features/hotwallet/createhardwarewallet/CreateHardwareWalletModel.kt @@ -4,11 +4,11 @@ import com.tangem.common.core.TangemError import com.tangem.common.core.TangemSdkError import com.tangem.common.routing.AppRoute import com.tangem.core.analytics.api.AnalyticsEventHandler -import com.tangem.core.analytics.models.AnalyticsParam import com.tangem.core.analytics.models.Basic import com.tangem.core.analytics.utils.TrackingContextProxy import com.tangem.core.decompose.di.ModelScoped import com.tangem.core.decompose.model.Model +import com.tangem.core.decompose.model.ParamsContainer import com.tangem.core.decompose.navigation.Router import com.tangem.core.decompose.ui.UiMessageSender import com.tangem.core.navigation.url.UrlOpener @@ -27,6 +27,7 @@ import com.tangem.domain.wallets.analytics.WalletSettingsAnalyticEvents import com.tangem.domain.wallets.builder.ColdUserWalletBuilder import com.tangem.domain.wallets.usecase.GenerateBuyTangemCardLinkUseCase import com.tangem.domain.wallets.usecase.SaveWalletUseCase +import com.tangem.features.hotwallet.CreateHardwareWalletComponent import com.tangem.features.hotwallet.createhardwarewallet.entity.CreateHardwareWalletUM import com.tangem.utils.coroutines.CoroutineDispatcherProvider import com.tangem.utils.logging.TangemLogger @@ -42,6 +43,7 @@ private const val HIDE_PROGRESS_DELAY = 400L @Suppress("LongParameterList") @ModelScoped internal class CreateHardwareWalletModel @Inject constructor( + paramsContainer: ParamsContainer, override val dispatchers: CoroutineDispatcherProvider, private val router: Router, private val generateBuyTangemCardLinkUseCase: GenerateBuyTangemCardLinkUseCase, @@ -57,6 +59,8 @@ internal class CreateHardwareWalletModel @Inject constructor( private val analyticsEventHandler: AnalyticsEventHandler, ) : Model() { + private val params = paramsContainer.require() + val uiState: StateFlow field = MutableStateFlow( CreateHardwareWalletUM( @@ -77,7 +81,7 @@ internal class CreateHardwareWalletModel @Inject constructor( } private fun onBuyTangemWalletClick() { - analyticsEventHandler.send(Basic.ButtonBuy(source = AnalyticsParam.ScreensSources.CreateWallet)) + analyticsEventHandler.send(Basic.ButtonBuy(source = params.source)) modelScope.launch { generateBuyTangemCardLinkUseCase .invoke(GenerateBuyTangemCardLinkUseCase.Source.Upgrade).let { urlOpener.openUrl(it) } @@ -86,7 +90,7 @@ internal class CreateHardwareWalletModel @Inject constructor( private fun onScanDeviceClick() { analyticsEventHandler.send( - event = IntroductionProcess.ButtonScanCard(AnalyticsParam.ScreensSources.CreateWallet), + event = IntroductionProcess.ButtonScanCard(params.source), ) scanCard() } @@ -100,10 +104,8 @@ internal class CreateHardwareWalletModel @Inject constructor( isBiometricsRequestPolicy = shouldSaveAccessCodes, ) - val analyticsSource = AnalyticsParam.ScreensSources.Intro - scanCardProcessor.scan( - analyticsSource = analyticsSource, + analyticsSource = params.source, shouldCheckIsAlreadyActivated = true, onProgressStateChange = { showProgress -> if (!showProgress) { @@ -136,7 +138,7 @@ internal class CreateHardwareWalletModel @Inject constructor( saveWalletUseCase( userWallet = userWallet, - analyticsSource = AnalyticsParam.ScreensSources.AddNew, + analyticsSource = params.source, ).fold( ifLeft = { saveWalletError -> delay(HIDE_PROGRESS_DELAY) @@ -183,7 +185,7 @@ internal class CreateHardwareWalletModel @Inject constructor( userWalletId = walletId, unlockMethod = UserWalletsListRepository.UnlockMethod.Scan( scanResponse = scanResponse, - source = AnalyticsParam.ScreensSources.AddNew, + source = params.source, ), ).onRight { router.replaceAll(AppRoute.Wallet) diff --git a/features/hot-wallet/impl/src/main/kotlin/com/tangem/features/hotwallet/createhardwarewallet/DefaultCreateHardwareWalletComponent.kt b/features/hot-wallet/impl/src/main/kotlin/com/tangem/features/hotwallet/createhardwarewallet/DefaultCreateHardwareWalletComponent.kt index 0f83065531..7ee945c024 100644 --- a/features/hot-wallet/impl/src/main/kotlin/com/tangem/features/hotwallet/createhardwarewallet/DefaultCreateHardwareWalletComponent.kt +++ b/features/hot-wallet/impl/src/main/kotlin/com/tangem/features/hotwallet/createhardwarewallet/DefaultCreateHardwareWalletComponent.kt @@ -15,7 +15,7 @@ import dagger.assisted.AssistedInject @Suppress("UnusedPrivateMember") internal class DefaultCreateHardwareWalletComponent @AssistedInject constructor( @Assisted private val context: AppComponentContext, - @Assisted private val params: Unit, + @Assisted private val params: CreateHardwareWalletComponent.Params, ) : CreateHardwareWalletComponent, AppComponentContext by context { private val model: CreateHardwareWalletModel = getOrCreateModel(params) @@ -31,6 +31,9 @@ internal class DefaultCreateHardwareWalletComponent @AssistedInject constructor( @AssistedFactory interface Factory : CreateHardwareWalletComponent.Factory { - override fun create(context: AppComponentContext, params: Unit): DefaultCreateHardwareWalletComponent + override fun create( + context: AppComponentContext, + params: CreateHardwareWalletComponent.Params, + ): DefaultCreateHardwareWalletComponent } } \ No newline at end of file diff --git a/features/hot-wallet/impl/src/main/kotlin/com/tangem/features/hotwallet/upgradewallet/UpgradeWalletModel.kt b/features/hot-wallet/impl/src/main/kotlin/com/tangem/features/hotwallet/upgradewallet/UpgradeWalletModel.kt index 09f0e2f4a2..dac3161efc 100644 --- a/features/hot-wallet/impl/src/main/kotlin/com/tangem/features/hotwallet/upgradewallet/UpgradeWalletModel.kt +++ b/features/hot-wallet/impl/src/main/kotlin/com/tangem/features/hotwallet/upgradewallet/UpgradeWalletModel.kt @@ -117,7 +117,7 @@ internal class UpgradeWalletModel @Inject constructor( tangemSdkManager .scanProduct( shouldCheckIsAlreadyActivated = true, - source = AnalyticsParam.ScreensSources.Upgrade, + source = AnalyticsParam.ScreensSources.CreateWallet, ) .doOnSuccess { scanResponse -> checkIsWalletSuitableToBeUsedAsUpgrade(scanResponse = scanResponse) { diff --git a/features/hot-wallet/impl/src/main/kotlin/com/tangem/features/hotwallet/wallethardwarebackup/model/WalletHardwareBackupModel.kt b/features/hot-wallet/impl/src/main/kotlin/com/tangem/features/hotwallet/wallethardwarebackup/model/WalletHardwareBackupModel.kt index d7a12e7a10..2f50bdf082 100644 --- a/features/hot-wallet/impl/src/main/kotlin/com/tangem/features/hotwallet/wallethardwarebackup/model/WalletHardwareBackupModel.kt +++ b/features/hot-wallet/impl/src/main/kotlin/com/tangem/features/hotwallet/wallethardwarebackup/model/WalletHardwareBackupModel.kt @@ -126,7 +126,7 @@ internal class WalletHardwareBackupModel @Inject constructor( private fun onCreateNewWalletClick() { analyticsEventHandler.send(WalletSettingsAnalyticEvents.ButtonCreateNewWallet()) - router.push(AppRoute.CreateHardwareWallet) + router.push(AppRoute.CreateHardwareWallet(source = AnalyticsParam.ScreensSources.CreateWallet)) } private fun onUpgradeCurrentWalletClick() {