diff --git a/app/src/main/java/com/tangem/tap/MainActivity.kt b/app/src/main/java/com/tangem/tap/MainActivity.kt index 8db7434ef7..076a21b682 100644 --- a/app/src/main/java/com/tangem/tap/MainActivity.kt +++ b/app/src/main/java/com/tangem/tap/MainActivity.kt @@ -367,7 +367,7 @@ class MainActivity : AppCompatActivity(), ActivityResultCallbackHolder { val isFromPush = intent.extras?.containsKey(OPENED_FROM_GCM_PUSH) == true if (isFromPush) { - analyticsEventsHandler.send(Push.PushNotificationOpened) + analyticsEventsHandler.send(Push.PushNotificationOpened()) } handleDeepLink(intent = intent, isFromOnNewIntent = true) diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/Push.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/Push.kt index c4345c597f..acdec4105e 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/events/Push.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/Push.kt @@ -8,5 +8,5 @@ internal sealed class Push(event: String) : AnalyticsEvent( params = emptyMap(), ) { - data object PushNotificationOpened : Push(event = "Push Notification Opened") + class PushNotificationOpened : Push(event = "Push Notification Opened") } \ No newline at end of file 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 3ac65172d2..c303a9cbba 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 @@ -67,7 +67,7 @@ sealed class Settings( params = mapOf("State" to state.value), ) - object ButtonEnableBiometricAuthentication : AppSettings(event = "Button - Enable Biometric Authentication") + class ButtonEnableBiometricAuthentication : AppSettings(event = "Button - Enable Biometric Authentication") class MainCurrencyChanged(currencyType: String) : AppSettings( event = "Main Currency Changed", @@ -79,7 +79,7 @@ sealed class Settings( params = mapOf("State" to theme.value), ) - object EnableBiometrics : AppSettings(event = "Notice - Enable Biometric") + class EnableBiometrics : AppSettings(event = "Notice - Enable Biometric") class HideBalanceChanged(state: AnalyticsParam.OnOffState) : AppSettings( event = "Hide Balance Changed", 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 3a4901f8e3..e3e1923c6b 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 @@ -196,7 +196,7 @@ class DetailsMiddleware { } private fun enrollBiometrics() { - Analytics.send(Settings.AppSettings.ButtonEnableBiometricAuthentication) + Analytics.send(Settings.AppSettings.ButtonEnableBiometricAuthentication()) store.inject(DaggerGraphState::settingsManager).openBiometricSettings() } diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/appsettings/analytics/AppSettingsItemsAnalyticsSender.kt b/app/src/main/java/com/tangem/tap/features/details/ui/appsettings/analytics/AppSettingsItemsAnalyticsSender.kt index 64a5832a8c..520610a058 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/appsettings/analytics/AppSettingsItemsAnalyticsSender.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/appsettings/analytics/AppSettingsItemsAnalyticsSender.kt @@ -25,7 +25,7 @@ internal class AppSettingsItemsAnalyticsSender @Inject constructor( private fun getEvent(item: AppSettingsScreenState.Item): AnalyticsEvent? { return when (item.id) { - AppSettingsItemsFactory.ID_ENROLL_BIOMETRICS_CARD -> Settings.AppSettings.EnableBiometrics + AppSettingsItemsFactory.ID_ENROLL_BIOMETRICS_CARD -> Settings.AppSettings.EnableBiometrics() else -> null } } diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/UnfinishedBackupFoundDialog.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/UnfinishedBackupFoundDialog.kt index fbeff5f6f4..df8cc61880 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/UnfinishedBackupFoundDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/UnfinishedBackupFoundDialog.kt @@ -18,12 +18,12 @@ object UnfinishedBackupFoundDialog { setTitle(R.string.common_warning) setMessage(R.string.welcome_interrupted_backup_alert_message) setPositiveButton(R.string.welcome_interrupted_backup_alert_resume) { _, _ -> - Analytics.send(OnboardingEvent.Backup.ResumeInterruptedBackup) + Analytics.send(OnboardingEvent.Backup.ResumeInterruptedBackup()) store.dispatch(GlobalAction.HideDialog) store.dispatch(BackupAction.ResumeFoundUnfinishedBackup(scanResponse)) } setNegativeButton(R.string.welcome_interrupted_backup_alert_discard) { _, _ -> - Analytics.send(OnboardingEvent.Backup.CancelInterruptedBackup) + Analytics.send(OnboardingEvent.Backup.CancelInterruptedBackup()) store.dispatch(GlobalAction.HideDialog) store.dispatch(GlobalAction.ShowDialog(BackupDialog.ConfirmDiscardingBackup(scanResponse))) } diff --git a/core/analytics/models/src/main/java/com/tangem/core/analytics/models/event/MainScreenAnalyticsEvent.kt b/core/analytics/models/src/main/java/com/tangem/core/analytics/models/event/MainScreenAnalyticsEvent.kt index c8864d3617..a1a2ef6911 100644 --- a/core/analytics/models/src/main/java/com/tangem/core/analytics/models/event/MainScreenAnalyticsEvent.kt +++ b/core/analytics/models/src/main/java/com/tangem/core/analytics/models/event/MainScreenAnalyticsEvent.kt @@ -36,23 +36,23 @@ sealed class MainScreenAnalyticsEvent( }, ) - data object ButtonReceive : MainScreenAnalyticsEvent( + class ButtonReceive : MainScreenAnalyticsEvent( event = "Button - Receive", ) - data object LimitsClicked : MainScreenAnalyticsEvent( + class LimitsClicked : MainScreenAnalyticsEvent( event = "Limits Clicked", ) - data object NoticeBalancesInfo : MainScreenAnalyticsEvent( + class NoticeBalancesInfo : MainScreenAnalyticsEvent( event = "Notice - Balances Info", ) - data object NoticeLimitsInfo : MainScreenAnalyticsEvent( + class NoticeLimitsInfo : MainScreenAnalyticsEvent( event = "Notice - Limits Info", ) - data object ButtonExplore : MainScreenAnalyticsEvent( + class ButtonExplore : MainScreenAnalyticsEvent( event = "Button - Explore", ) @@ -66,11 +66,11 @@ sealed class MainScreenAnalyticsEvent( params = mapOf(AnalyticsParam.STATUS to status.value), ) - data object BuyScreenOpened : MainScreenAnalyticsEvent(event = "Buy Screen Opened") + class BuyScreenOpened : MainScreenAnalyticsEvent(event = "Buy Screen Opened") - data object SwapScreenOpened : MainScreenAnalyticsEvent(event = "Swap Screen Opened") + class SwapScreenOpened : MainScreenAnalyticsEvent(event = "Swap Screen Opened") - data object SellScreenOpened : MainScreenAnalyticsEvent(event = "Sell Screen Opened") + class SellScreenOpened : MainScreenAnalyticsEvent(event = "Sell Screen Opened") data class BuyTokenClicked(val currencySymbol: String) : MainScreenAnalyticsEvent( event = "Buy Token Clicked", diff --git a/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/DefaultWcPairUseCase.kt b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/DefaultWcPairUseCase.kt index d060e85384..6e6396e89a 100644 --- a/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/DefaultWcPairUseCase.kt +++ b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/DefaultWcPairUseCase.kt @@ -166,7 +166,7 @@ internal class DefaultWcPairUseCase @AssistedInject constructor( } override fun approve(sessionForApprove: WcSessionApprove) { - analytics.send(WcAnalyticEvents.PairButtonConnect) + analytics.send(WcAnalyticEvents.PairButtonConnect()) onCallTerminalAction.trySend(TerminalAction.Approve(sessionForApprove)) } diff --git a/domain/card/src/main/kotlin/com/tangem/domain/card/analytics/IntroductionProcess.kt b/domain/card/src/main/kotlin/com/tangem/domain/card/analytics/IntroductionProcess.kt index 06b18ef403..b6ec1affa6 100644 --- a/domain/card/src/main/kotlin/com/tangem/domain/card/analytics/IntroductionProcess.kt +++ b/domain/card/src/main/kotlin/com/tangem/domain/card/analytics/IntroductionProcess.kt @@ -8,10 +8,10 @@ sealed class IntroductionProcess( params: Map = emptyMap(), ) : AnalyticsEvent("Introduction Process", event, params) { - object ScreenOpened : IntroductionProcess("Introduction Process Screen Opened") - object ButtonTokensList : IntroductionProcess("Button - Tokens List") - object ButtonBuyCards : IntroductionProcess("Button - Buy Cards") - object ButtonScanCardLegacy : IntroductionProcess("Button - Scan Card") + class ScreenOpened : IntroductionProcess("Introduction Process Screen Opened") + class ButtonTokensList : IntroductionProcess("Button - Tokens List") + class ButtonBuyCards : IntroductionProcess("Button - Buy Cards") + class ButtonScanCardLegacy : IntroductionProcess("Button - Scan Card") class ButtonScanCard( val source: AnalyticsParam.ScreensSources, diff --git a/domain/card/src/main/kotlin/com/tangem/domain/card/analytics/Shop.kt b/domain/card/src/main/kotlin/com/tangem/domain/card/analytics/Shop.kt index 11536725f8..37ae7f2702 100644 --- a/domain/card/src/main/kotlin/com/tangem/domain/card/analytics/Shop.kt +++ b/domain/card/src/main/kotlin/com/tangem/domain/card/analytics/Shop.kt @@ -7,5 +7,5 @@ sealed class Shop( params: Map = emptyMap(), ) : AnalyticsEvent("Shop", event, params) { - object ScreenOpened : Shop("Shop Screen Opened") + class ScreenOpened : Shop("Shop Screen Opened") } \ No newline at end of file diff --git a/domain/nft/src/main/kotlin/com/tangem/domain/nft/analytics/NFTAnalyticsEvent.kt b/domain/nft/src/main/kotlin/com/tangem/domain/nft/analytics/NFTAnalyticsEvent.kt index 0c0e7d83cd..ade188cf05 100644 --- a/domain/nft/src/main/kotlin/com/tangem/domain/nft/analytics/NFTAnalyticsEvent.kt +++ b/domain/nft/src/main/kotlin/com/tangem/domain/nft/analytics/NFTAnalyticsEvent.kt @@ -34,7 +34,7 @@ sealed class NFTAnalyticsEvent( ) object Receive { - data object ScreenOpened : NFTAnalyticsEvent(event = "Receive NFT Screen Opened") + class ScreenOpened : NFTAnalyticsEvent(event = "Receive NFT Screen Opened") data class BlockchainChosen( private val blockchain: String, @@ -63,9 +63,9 @@ sealed class NFTAnalyticsEvent( }, ) - data object ButtonReadMore : NFTAnalyticsEvent(event = "Button - Read More") - data object ButtonSeeAll : NFTAnalyticsEvent(event = "Button - See All") - data object ButtonExplore : NFTAnalyticsEvent(event = "Button - Explore") - data object ButtonSend : NFTAnalyticsEvent(event = "Button - Send") + class ButtonReadMore : NFTAnalyticsEvent(event = "Button - Read More") + class ButtonSeeAll : NFTAnalyticsEvent(event = "Button - See All") + class ButtonExplore : NFTAnalyticsEvent(event = "Button - Explore") + class ButtonSend : NFTAnalyticsEvent(event = "Button - Send") } } \ No newline at end of file diff --git a/domain/onramp/src/main/java/com/tangem/domain/onramp/analytics/OnrampAnalyticsEvent.kt b/domain/onramp/src/main/java/com/tangem/domain/onramp/analytics/OnrampAnalyticsEvent.kt index b7da9150d6..d9d98eac03 100644 --- a/domain/onramp/src/main/java/com/tangem/domain/onramp/analytics/OnrampAnalyticsEvent.kt +++ b/domain/onramp/src/main/java/com/tangem/domain/onramp/analytics/OnrampAnalyticsEvent.kt @@ -30,7 +30,7 @@ sealed class OnrampAnalyticsEvent( ), ) - data object SelectCurrencyScreenOpened : OnrampAnalyticsEvent(event = "Currency Screen Opened") + class SelectCurrencyScreenOpened : OnrampAnalyticsEvent(event = "Currency Screen Opened") data class FiatCurrencyChosen( private val currency: String, @@ -39,11 +39,11 @@ sealed class OnrampAnalyticsEvent( params = mapOf("Currency Type" to currency), ) - data object CloseOnramp : OnrampAnalyticsEvent(event = "Button - Close") + class CloseOnramp : OnrampAnalyticsEvent(event = "Button - Close") - data object SettingsOpened : OnrampAnalyticsEvent(event = "Onramp Settings Screen Opened") + class SettingsOpened : OnrampAnalyticsEvent(event = "Onramp Settings Screen Opened") - data object SelectResidenceOpened : OnrampAnalyticsEvent(event = "Residence Screen Opened") + class SelectResidenceOpened : OnrampAnalyticsEvent(event = "Residence Screen Opened") data class OnResidenceChosen( private val residence: String, @@ -59,7 +59,7 @@ sealed class OnrampAnalyticsEvent( params = mapOf(RESIDENCE to residence), ) - data object OnResidenceChange : OnrampAnalyticsEvent(event = "Button - Change") + class OnResidenceChange : OnrampAnalyticsEvent(event = "Button - Change") data class OnResidenceConfirm( private val residence: String, @@ -68,7 +68,7 @@ sealed class OnrampAnalyticsEvent( params = mapOf(RESIDENCE to residence), ) - data object ProvidersScreenOpened : OnrampAnalyticsEvent(event = "Providers Screen Opened") + class ProvidersScreenOpened : OnrampAnalyticsEvent(event = "Providers Screen Opened") data class ProviderCalculated( private val providerName: String, @@ -83,7 +83,7 @@ sealed class OnrampAnalyticsEvent( ), ) - data object PaymentMethodsScreenOpened : OnrampAnalyticsEvent(event = "Payment Method Screen Opened") + class PaymentMethodsScreenOpened : OnrampAnalyticsEvent(event = "Payment Method Screen Opened") data class OnPaymentMethodChosen( private val paymentMethod: String, @@ -135,8 +135,8 @@ sealed class OnrampAnalyticsEvent( ), ) - data object MinAmountError : OnrampAnalyticsEvent(event = "Error - Min Amount") - data object MaxAmountError : OnrampAnalyticsEvent(event = "Error - Max Amount") + class MinAmountError : OnrampAnalyticsEvent(event = "Error - Min Amount") + class MaxAmountError : OnrampAnalyticsEvent(event = "Error - Max Amount") data class Errors( private val tokenSymbol: String, @@ -203,7 +203,7 @@ sealed class OnrampAnalyticsEvent( ), ) - data object AllOffersClicked : OnrampAnalyticsEvent( + class AllOffersClicked : OnrampAnalyticsEvent( event = "Button - All Offers", params = emptyMap(), ) diff --git a/domain/staking/src/main/java/com/tangem/domain/staking/analytics/StakingAnalyticsEvent.kt b/domain/staking/src/main/java/com/tangem/domain/staking/analytics/StakingAnalyticsEvent.kt index 42da91d04f..e2950b602d 100644 --- a/domain/staking/src/main/java/com/tangem/domain/staking/analytics/StakingAnalyticsEvent.kt +++ b/domain/staking/src/main/java/com/tangem/domain/staking/analytics/StakingAnalyticsEvent.kt @@ -2,7 +2,6 @@ package com.tangem.domain.staking.analytics import com.tangem.core.analytics.models.AnalyticsEvent import com.tangem.core.analytics.models.AnalyticsParam -import com.tangem.domain.staking.analytics.StakingAnalyticsEvent.ButtonRewards.addIfValueIsNotNull import com.tangem.domain.staking.model.stakekit.StakingError import com.tangem.domain.models.staking.action.StakingActionType @@ -24,11 +23,11 @@ sealed class StakingAnalyticsEvent( ), ) - data object WhatIsStaking : StakingAnalyticsEvent( + class WhatIsStaking : StakingAnalyticsEvent( event = "Link - What Is Staking", ) - data object AmountScreenOpened : StakingAnalyticsEvent( + class AmountScreenOpened : StakingAnalyticsEvent( event = "Amount Screen Opened", ) @@ -54,7 +53,7 @@ sealed class StakingAnalyticsEvent( ), ) - data object RewardScreenOpened : StakingAnalyticsEvent( + class RewardScreenOpened : StakingAnalyticsEvent( event = "Reward Screen Opened", ) @@ -67,7 +66,7 @@ sealed class StakingAnalyticsEvent( ), ) - data object ButtonMax : StakingAnalyticsEvent( + class ButtonMax : StakingAnalyticsEvent( event = "Button - Max", ) @@ -98,7 +97,7 @@ sealed class StakingAnalyticsEvent( ), ) - data object ButtonRewards : StakingAnalyticsEvent( + class ButtonRewards : StakingAnalyticsEvent( event = "Button - Rewards", ) @@ -112,9 +111,9 @@ sealed class StakingAnalyticsEvent( ), ) - data object ButtonShare : StakingAnalyticsEvent(event = "Button - Share") + class ButtonShare : StakingAnalyticsEvent(event = "Button - Share") - data object ButtonExplore : StakingAnalyticsEvent(event = "Button - Explore") + class ButtonExplore : StakingAnalyticsEvent(event = "Button - Explore") data class StakeKitApiError( val stakingError: StakingError.StakeKitApiError, @@ -145,12 +144,6 @@ sealed class StakingAnalyticsEvent( }, ) - fun MutableMap.addIfValueIsNotNull(key: String, value: Any?) { - if (value != null) { - put(key, value.toString()) - } - } - data class TransactionError( val errorCode: String, ) : StakingAnalyticsEvent( @@ -178,4 +171,11 @@ sealed class StakingAnalyticsEvent( enum class StakeScreenSource { Info, Amount, Confirmation, Validators, +} + +@Suppress("CanBeNonNullable") +fun MutableMap.addIfValueIsNotNull(key: String, value: Any?) { + if (value != null) { + put(key, value.toString()) + } } \ No newline at end of file diff --git a/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/analytics/PromoAnalyticsEvent.kt b/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/analytics/PromoAnalyticsEvent.kt index e0c863bf61..dcacf45e9e 100644 --- a/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/analytics/PromoAnalyticsEvent.kt +++ b/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/analytics/PromoAnalyticsEvent.kt @@ -31,22 +31,22 @@ sealed class PromoAnalyticsEvent( ), ) { sealed class BannerAction(val action: String) { - data object Clicked : BannerAction(action = "Clicked") - data object Closed : BannerAction(action = "Closed") + class Clicked : BannerAction(action = "Clicked") + class Closed : BannerAction(action = "Closed") } } // region visa waitlist promo - data object VisaWaitlistPromo : PromoAnalyticsEvent(event = "Visa Waitlist") + class VisaWaitlistPromo : PromoAnalyticsEvent(event = "Visa Waitlist") - data object VisaWaitlistPromoJoin : PromoAnalyticsEvent( + class VisaWaitlistPromoJoin : PromoAnalyticsEvent( event = "Button - Join Now", params = mapOf( "Program Name" to "Visa Waitlist", ), ) - data object VisaWaitlistPromoDismiss : PromoAnalyticsEvent( + class VisaWaitlistPromoDismiss : PromoAnalyticsEvent( event = "Button - Close", params = mapOf( "Program Name" to "Visa Waitlist", diff --git a/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/analytics/TokenOnrampAnalyticsEvent.kt b/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/analytics/TokenOnrampAnalyticsEvent.kt index ffa78172b9..8261c75b29 100644 --- a/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/analytics/TokenOnrampAnalyticsEvent.kt +++ b/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/analytics/TokenOnrampAnalyticsEvent.kt @@ -30,7 +30,7 @@ sealed class TokenOnrampAnalyticsEvent( ), ) - data object GoToProvider : TokenOnrampAnalyticsEvent(event = "Button - Go To Provider") + class GoToProvider : TokenOnrampAnalyticsEvent(event = "Button - Go To Provider") data class NoticeKYC( val tokenSymbol: String, diff --git a/domain/visa/src/main/kotlin/com/tangem/domain/tangempay/TangemPayAnalyticsEvents.kt b/domain/visa/src/main/kotlin/com/tangem/domain/tangempay/TangemPayAnalyticsEvents.kt index af92401e5b..50240853c7 100644 --- a/domain/visa/src/main/kotlin/com/tangem/domain/tangempay/TangemPayAnalyticsEvents.kt +++ b/domain/visa/src/main/kotlin/com/tangem/domain/tangempay/TangemPayAnalyticsEvents.kt @@ -8,42 +8,42 @@ sealed class TangemPayAnalyticsEvents( params: Map = emptyMap(), ) : AnalyticsEvent(category = categoryName, event = event, params = params) { - data object ActivationScreenOpened : TangemPayAnalyticsEvents( + class ActivationScreenOpened : TangemPayAnalyticsEvents( categoryName = "Visa Onboarding", event = "Activation Screen Opened", ) - data object ViewTermsClicked : TangemPayAnalyticsEvents( + class ViewTermsClicked : TangemPayAnalyticsEvents( categoryName = "Visa Onboarding", event = "Button - Visa View Terms", ) - data object GetCardClicked : TangemPayAnalyticsEvents( + class GetCardClicked : TangemPayAnalyticsEvents( categoryName = "Visa Onboarding", event = "Button - Visa Get Card", ) - data object KycFlowOpened : TangemPayAnalyticsEvents( + class KycFlowOpened : TangemPayAnalyticsEvents( categoryName = "Visa Onboarding", event = "Visa KYC Flow Opened", ) - data object IssuingBannerDisplayed : TangemPayAnalyticsEvents( + class IssuingBannerDisplayed : TangemPayAnalyticsEvents( categoryName = "Visa Onboarding", event = "Visa Issuing Banner Displayed", ) - data object MainScreenOpened : TangemPayAnalyticsEvents( + class MainScreenOpened : TangemPayAnalyticsEvents( categoryName = "Visa Screen", event = "Visa Main Screen Opened", ) - data object ReceiveFundsClicked : TangemPayAnalyticsEvents( + class ReceiveFundsClicked : TangemPayAnalyticsEvents( categoryName = "Visa Screen", event = "Button - Visa Receive", ) - data object SwapClicked : TangemPayAnalyticsEvents( + class SwapClicked : TangemPayAnalyticsEvents( categoryName = "Visa Screen", event = "Button - Visa Swap", ) diff --git a/domain/wallet-connect/src/main/kotlin/com/tangem/domain/walletconnect/WcAnalyticEvents.kt b/domain/wallet-connect/src/main/kotlin/com/tangem/domain/walletconnect/WcAnalyticEvents.kt index 8bcf3eb116..6a0ac90cb8 100644 --- a/domain/wallet-connect/src/main/kotlin/com/tangem/domain/walletconnect/WcAnalyticEvents.kt +++ b/domain/wallet-connect/src/main/kotlin/com/tangem/domain/walletconnect/WcAnalyticEvents.kt @@ -5,7 +5,7 @@ import com.domain.blockaid.models.dapp.CheckDAppResult.* import com.tangem.core.analytics.models.AnalyticsEvent import com.tangem.core.analytics.models.AnalyticsParam import com.tangem.domain.models.network.Network -import com.tangem.domain.walletconnect.WcAnalyticEvents.ButtonDisconnectAll.toAnalyticVerificationStatus +import com.tangem.domain.walletconnect.WcAnalyticEvents.DAppVerificationStatus import com.tangem.domain.walletconnect.model.WcPairRequest import com.tangem.domain.walletconnect.model.WcSession import com.tangem.domain.walletconnect.model.WcSessionApprove @@ -19,7 +19,7 @@ sealed class WcAnalyticEvents( params: Map = emptyMap(), ) : AnalyticsEvent(category = WC_CATEGORY_NAME, event = event, params = params) { - object ScreenOpened : WcAnalyticEvents(event = "WC Screen Opened") + class ScreenOpened : WcAnalyticEvents(event = "WC Screen Opened") class NewPairInitiated(source: WcPairRequest.Source) : WcAnalyticEvents( event = "Session Initiated", params = mapOf( @@ -32,7 +32,7 @@ sealed class WcAnalyticEvents( ), ) - data object PairButtonConnect : WcAnalyticEvents( + class PairButtonConnect : WcAnalyticEvents( event = "Button - Connect", ) @@ -203,7 +203,7 @@ sealed class WcAnalyticEvents( } } - data object ButtonDisconnectAll : WcAnalyticEvents( + class ButtonDisconnectAll : WcAnalyticEvents( event = "Button - Disconnect All", ) @@ -265,16 +265,16 @@ sealed class WcAnalyticEvents( Unknown("Unknown"), } - fun CheckDAppResult.toAnalyticVerificationStatus(): String = when (this) { - SAFE -> DAppVerificationStatus.Verified - UNSAFE -> DAppVerificationStatus.Risky - FAILED_TO_VERIFY -> DAppVerificationStatus.Unknown - }.status - companion object { const val NETWORKS = "Networks" const val DOMAIN_VERIFICATION = "Domain Verification" const val WC_CATEGORY_NAME = "Wallet Connect" } -} \ No newline at end of file +} + +fun CheckDAppResult.toAnalyticVerificationStatus(): String = when (this) { + SAFE -> DAppVerificationStatus.Verified + UNSAFE -> DAppVerificationStatus.Risky + FAILED_TO_VERIFY -> DAppVerificationStatus.Unknown +}.status \ No newline at end of file diff --git a/domain/wallet-connect/src/main/kotlin/com/tangem/domain/walletconnect/usecase/disconnect/WcDisconnectUseCase.kt b/domain/wallet-connect/src/main/kotlin/com/tangem/domain/walletconnect/usecase/disconnect/WcDisconnectUseCase.kt index cb6c3a2497..8c73940afe 100644 --- a/domain/wallet-connect/src/main/kotlin/com/tangem/domain/walletconnect/usecase/disconnect/WcDisconnectUseCase.kt +++ b/domain/wallet-connect/src/main/kotlin/com/tangem/domain/walletconnect/usecase/disconnect/WcDisconnectUseCase.kt @@ -15,7 +15,7 @@ class WcDisconnectUseCase( ) { suspend fun disconnectAll() { - analytics.send(WcAnalyticEvents.ButtonDisconnectAll) + analytics.send(WcAnalyticEvents.ButtonDisconnectAll()) sessionsManager.sessions.first() .flatMap { it.value } .map { session -> flow { emit(internalDisconnect(session)) } } diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/analytics/Settings.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/analytics/Settings.kt index 6bc640e1e2..703dcb8cbb 100644 --- a/domain/wallets/src/main/java/com/tangem/domain/wallets/analytics/Settings.kt +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/analytics/Settings.kt @@ -8,7 +8,5 @@ sealed class Settings( params: Map = emptyMap(), ) : AnalyticsEvent(category, event, params) { - data object ButtonCreateBackup : Settings(event = "Button - Create Backup") - - data object ButtonManageTokens : Settings(event = "Button - Manage Tokens") + class ButtonManageTokens : Settings(event = "Button - Manage Tokens") } \ No newline at end of file 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 a02c3c4543..1dbc4c7a1f 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 @@ -93,7 +93,7 @@ internal class HomeModel @Inject constructor( val uiState = _uiState.asStateFlow() init { - analyticsEventHandler.send(IntroductionProcess.ScreenOpened) + analyticsEventHandler.send(IntroductionProcess.ScreenOpened()) observeUserCountryChanges() when (params.launchMode) { @@ -127,20 +127,20 @@ internal class HomeModel @Inject constructor( } private fun onScanClick() { - analyticsEventHandler.send(IntroductionProcess.ButtonScanCardLegacy) + analyticsEventHandler.send(IntroductionProcess.ButtonScanCardLegacy()) scanCard() } private fun onShopClick() { - analyticsEventHandler.send(IntroductionProcess.ButtonBuyCards) - analyticsEventHandler.send(Shop.ScreenOpened) + analyticsEventHandler.send(IntroductionProcess.ButtonBuyCards()) + analyticsEventHandler.send(Shop.ScreenOpened()) modelScope.launch { generateBuyTangemCardLinkUseCase.invoke().let { urlOpener.openUrl(it) } } } private fun onSearchTokensClick() { - analyticsEventHandler.send(IntroductionProcess.ButtonTokensList) + analyticsEventHandler.send(IntroductionProcess.ButtonTokensList()) router.push(AppRoute.ManageTokens(Source.STORIES)) } diff --git a/features/kyc/impl/src/main/kotlin/com/tangem/features/kyc/DefaultKycModel.kt b/features/kyc/impl/src/main/kotlin/com/tangem/features/kyc/DefaultKycModel.kt index 2d7b7e1558..ba0446ea8a 100644 --- a/features/kyc/impl/src/main/kotlin/com/tangem/features/kyc/DefaultKycModel.kt +++ b/features/kyc/impl/src/main/kotlin/com/tangem/features/kyc/DefaultKycModel.kt @@ -30,7 +30,7 @@ class DefaultKycModel @Inject constructor( val uiState = _uiState.asStateFlow() init { - analytics.send(TangemPayAnalyticsEvents.KycFlowOpened) + analytics.send(TangemPayAnalyticsEvents.KycFlowOpened()) modelScope.launch { try { kycRepository.getKycStartInfo(params.userWalletId).getOrNull()?.let { _uiState.emit(it) } diff --git a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/analytics/ManageTokensAnalyticEvent.kt b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/analytics/ManageTokensAnalyticEvent.kt index 4ef52f5c05..01f9d2a5d0 100644 --- a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/analytics/ManageTokensAnalyticEvent.kt +++ b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/analytics/ManageTokensAnalyticEvent.kt @@ -49,7 +49,7 @@ internal sealed class ManageTokensAnalyticEvent( AnalyticsParam.Key.SOURCE to source.analyticsName, ), ) - data object ButtonLater : ManageTokensAnalyticEvent( + class ButtonLater : ManageTokensAnalyticEvent( event = "Button - Later", params = mapOf(AnalyticsParam.SOURCE to ManageTokensSource.ONBOARDING.analyticsName), ) diff --git a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/model/OnboardingManageTokensModel.kt b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/model/OnboardingManageTokensModel.kt index ae218b4341..50267c156a 100644 --- a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/model/OnboardingManageTokensModel.kt +++ b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/model/OnboardingManageTokensModel.kt @@ -287,7 +287,7 @@ internal class OnboardingManageTokensModel @Inject constructor( } }, ) { - analyticsEventHandler.send(ManageTokensAnalyticEvent.ButtonLater) + analyticsEventHandler.send(ManageTokensAnalyticEvent.ButtonLater()) useCasesFacade.saveManagedTokensUseCase( currenciesToAdd = manageTokensListManager.currenciesToAdd.value, diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/tokenlist/impl/analytics/MarketsListAnalyticsEvent.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/tokenlist/impl/analytics/MarketsListAnalyticsEvent.kt index f1916f48bb..c5f92d0700 100644 --- a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/tokenlist/impl/analytics/MarketsListAnalyticsEvent.kt +++ b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/tokenlist/impl/analytics/MarketsListAnalyticsEvent.kt @@ -9,7 +9,7 @@ internal sealed class MarketsListAnalyticsEvent( params: Map = mapOf(), ) : AnalyticsEvent(category = "Markets", event = event, params = params) { - data object BottomSheetOpened : MarketsListAnalyticsEvent(event = "Markets Screen Opened") + class BottomSheetOpened : MarketsListAnalyticsEvent(event = "Markets Screen Opened") data class SortBy( val sortByTypeUM: SortByTypeUM, @@ -33,11 +33,11 @@ internal sealed class MarketsListAnalyticsEvent( ), ) - data object StakingPromoShown : MarketsListAnalyticsEvent(event = "Notice - Staking Promo") + class StakingPromoShown : MarketsListAnalyticsEvent(event = "Notice - Staking Promo") - data object StakingPromoClosed : MarketsListAnalyticsEvent(event = "Staking Promo Closed") + class StakingPromoClosed : MarketsListAnalyticsEvent(event = "Staking Promo Closed") - data object StakingMoreInfoClicked : MarketsListAnalyticsEvent(event = "Staking More Info") + class StakingMoreInfoClicked : MarketsListAnalyticsEvent(event = "Staking More Info") data class TokenSearched(val tokenFound: Boolean) : MarketsListAnalyticsEvent( event = "Token Searched", @@ -46,5 +46,5 @@ internal sealed class MarketsListAnalyticsEvent( ), ) - data object ShowTokens : MarketsListAnalyticsEvent(event = "Button - Show Tokens") + class ShowTokens : MarketsListAnalyticsEvent(event = "Button - Show Tokens") } \ No newline at end of file diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/tokenlist/impl/model/MarketsListModel.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/tokenlist/impl/model/MarketsListModel.kt index 2018d1eb53..22574f445e 100644 --- a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/tokenlist/impl/model/MarketsListModel.kt +++ b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/tokenlist/impl/model/MarketsListModel.kt @@ -69,9 +69,9 @@ internal class MarketsListModel @Inject constructor( visibleItemsChanged = { visibleItemIds.value = it }, onRetryButtonClicked = { activeListManager.reload() }, onTokenClick = { onTokenUIClicked(it) }, - onStakingNotificationClick = { analyticsEventHandler.send(MarketsListAnalyticsEvent.StakingMoreInfoClicked) }, + onStakingNotificationClick = { analyticsEventHandler.send(MarketsListAnalyticsEvent.StakingMoreInfoClicked()) }, onStakingNotificationCloseClick = { onStakingNotificationCloseClick() }, - onShowTokensUnder100kClicked = { analyticsEventHandler.send(MarketsListAnalyticsEvent.ShowTokens) }, + onShowTokensUnder100kClicked = { analyticsEventHandler.send(MarketsListAnalyticsEvent.ShowTokens()) }, ) private val mainMarketsListManager = MarketsListBatchFlowManager( @@ -150,7 +150,7 @@ internal class MarketsListModel @Inject constructor( if (marketsListUMStateManager.state.value.stakingNotificationMaxApy == null && stakingNotificationMaxApy != null ) { - analyticsEventHandler.send(MarketsListAnalyticsEvent.StakingPromoShown) + analyticsEventHandler.send(MarketsListAnalyticsEvent.StakingPromoShown()) } marketsListUMStateManager.onUiItemsChanged( @@ -267,9 +267,9 @@ internal class MarketsListModel @Inject constructor( } private fun initAnalytics() { - containerBottomSheetState.onEach { - if (it == BottomSheetState.EXPANDED) { - analyticsEventHandler.send(MarketsListAnalyticsEvent.BottomSheetOpened) + containerBottomSheetState.onEach { bottomSheetState -> + if (bottomSheetState == BottomSheetState.EXPANDED) { + analyticsEventHandler.send(MarketsListAnalyticsEvent.BottomSheetOpened()) } }.launchIn(modelScope) @@ -303,7 +303,7 @@ internal class MarketsListModel @Inject constructor( } private fun onStakingNotificationCloseClick() { - analyticsEventHandler.send(MarketsListAnalyticsEvent.StakingPromoClosed) + analyticsEventHandler.send(MarketsListAnalyticsEvent.StakingPromoClosed()) modelScope.launch { promoRepository.setMarketsStakingNotificationHideClicked() } diff --git a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/details/model/NFTDetailsModel.kt b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/details/model/NFTDetailsModel.kt index 966c793b66..e47a5fca31 100644 --- a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/details/model/NFTDetailsModel.kt +++ b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/details/model/NFTDetailsModel.kt @@ -69,7 +69,7 @@ internal class NFTDetailsModel @Inject constructor( onBackClick = { params.onBackClick() }, onReadMoreClick = ::onReadMoreClick, onSeeAllTraitsClick = { - analyticsEventHandler.send(NFTAnalyticsEvent.Details.ButtonSeeAll) + analyticsEventHandler.send(NFTAnalyticsEvent.Details.ButtonSeeAll()) params.onAllTraitsClick() }, onExploreClick = ::onExploreClick, @@ -161,7 +161,7 @@ internal class NFTDetailsModel @Inject constructor( } private fun onInfoBlockClick(title: TextReference, text: TextReference) { - analyticsEventHandler.send(NFTAnalyticsEvent.Details.ButtonReadMore) + analyticsEventHandler.send(NFTAnalyticsEvent.Details.ButtonReadMore()) bottomSheetNavigation.activate( NFTDetailsBottomSheetConfig.Info( title = title, @@ -171,7 +171,7 @@ internal class NFTDetailsModel @Inject constructor( } private fun onReadMoreClick() { - analyticsEventHandler.send(NFTAnalyticsEvent.Details.ButtonReadMore) + analyticsEventHandler.send(NFTAnalyticsEvent.Details.ButtonReadMore()) when (val topInfo = _state.value.nftAsset.topInfo) { is NFTAssetUM.TopInfo.Empty -> Unit is NFTAssetUM.TopInfo.Content -> { @@ -186,7 +186,7 @@ internal class NFTDetailsModel @Inject constructor( } private fun onExploreClick() { - analyticsEventHandler.send(NFTAnalyticsEvent.Details.ButtonExplore) + analyticsEventHandler.send(NFTAnalyticsEvent.Details.ButtonExplore()) modelScope.launch { val url = getNFTExploreUrlUseCase.invoke( network = params.nftAsset.network, @@ -199,7 +199,7 @@ internal class NFTDetailsModel @Inject constructor( } private fun onSendClick() { - analyticsEventHandler.send(NFTAnalyticsEvent.Details.ButtonSend) + analyticsEventHandler.send(NFTAnalyticsEvent.Details.ButtonSend()) router.push( AppRoute.NFTSend( userWalletId = params.userWalletId, diff --git a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/model/NFTReceiveModel.kt b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/model/NFTReceiveModel.kt index e9ebb194f0..889afd28d6 100644 --- a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/model/NFTReceiveModel.kt +++ b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/model/NFTReceiveModel.kt @@ -89,7 +89,7 @@ internal class NFTReceiveModel @Inject constructor( val state: StateFlow get() = _state init { - analyticsEventHandler.send(NFTAnalyticsEvent.Receive.ScreenOpened) + analyticsEventHandler.send(NFTAnalyticsEvent.Receive.ScreenOpened()) subscribeToNFTAvailableNetworks() loadPortfolioName() } diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/common/analytics/OnboardingEvent.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/common/analytics/OnboardingEvent.kt index 33016dc2eb..2050039cc6 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/common/analytics/OnboardingEvent.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/common/analytics/OnboardingEvent.kt @@ -2,7 +2,6 @@ package com.tangem.features.onboarding.v2.common.analytics import com.tangem.core.analytics.models.AnalyticsEvent import com.tangem.core.analytics.models.AnalyticsParam -import com.tangem.domain.models.currency.CryptoCurrency sealed class OnboardingEvent( category: String, @@ -10,16 +9,16 @@ sealed class OnboardingEvent( params: Map = mapOf(), ) : AnalyticsEvent(category, event, params) { - data object Started : OnboardingEvent("Onboarding", "Onboarding Started") - data object Finished : OnboardingEvent("Onboarding", "Onboarding Finished") + class Started : OnboardingEvent("Onboarding", "Onboarding Started") + class Finished : OnboardingEvent("Onboarding", "Onboarding Finished") sealed class CreateWallet( event: String, params: Map = mapOf(), ) : OnboardingEvent("Onboarding / Create Wallet", event, params) { - data object ScreenOpened : CreateWallet("Create Wallet Screen Opened") - data object ButtonCreateWallet : CreateWallet("Button - Create Wallet") + class ScreenOpened : CreateWallet("Create Wallet Screen Opened") + class ButtonCreateWallet : CreateWallet("Button - Create Wallet") class WalletCreatedSuccessfully( creationType: WalletCreationType = WalletCreationType.PrivateKey, seedPhraseLength: Int? = null, @@ -40,54 +39,39 @@ sealed class OnboardingEvent( } } - sealed class Topup( - event: String, - params: Map = mapOf(), - ) : OnboardingEvent("Onboarding / Top Up", event, params) { - - object ScreenOpened : Topup("Activation Screen Opened") - - object ButtonShowWalletAddress : Topup("Button - Show the Wallet Address") - - class ButtonBuyCrypto(currency: CryptoCurrency) : Topup( - event = "Button - Buy Crypto", - params = mapOf(AnalyticsParam.CURRENCY to currency.symbol), - ) - } - sealed class Backup( event: String, params: Map = mapOf(), ) : OnboardingEvent("Onboarding / Backup", event, params) { - data object ScreenOpened : Backup("Backup Screen Opened") - data object Started : Backup("Backup Started") - data object Skipped : Backup("Backup Skipped") - data object SettingAccessCodeStarted : Backup("Setting Access Code Started") - data object AccessCodeEntered : Backup("Access Code Entered") - data object AccessCodeReEntered : Backup("Access Code Re-entered") + class ScreenOpened : Backup("Backup Screen Opened") + class Started : Backup("Backup Started") + class Skipped : Backup("Backup Skipped") + class SettingAccessCodeStarted : Backup("Setting Access Code Started") + class AccessCodeEntered : Backup("Access Code Entered") + class AccessCodeReEntered : Backup("Access Code Re-entered") class Finished(cardsCount: Int) : Backup( event = "Backup Finished", params = mapOf("Cards count" to "$cardsCount"), ) - data object ResetCancelEvent : Backup( + class ResetCancelEvent : Backup( event = "Reset Card Notification", params = mapOf("Option" to "Cancel"), ) - data object ResetPerformEvent : Backup( + class ResetPerformEvent : Backup( event = "Reset Card Notification", params = mapOf("Option" to "Reset"), ) - data object ResumeInterruptedBackup : Backup( + class ResumeInterruptedBackup : Backup( event = "Notice - Backup Canceled", params = mapOf("Action" to "Resume"), ) - data object CancelInterruptedBackup : Backup( + class CancelInterruptedBackup : Backup( event = "Notice - Backup Canceled", params = mapOf("Action" to "Cancel"), ) @@ -98,9 +82,9 @@ sealed class OnboardingEvent( params: Map = mapOf(), ) : OnboardingEvent("Onboarding / Twins", event, params) { - data object ScreenOpened : Twins("Twinning Screen Opened") - data object SetupStarted : Twins("Twin Setup Started") - data object SetupFinished : Twins("Twin Setup Finished") + class ScreenOpened : Twins("Twinning Screen Opened") + class SetupStarted : Twins("Twin Setup Started") + class SetupFinished : Twins("Twin Setup Finished") } data class OfflineAttestationFailed( diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/entry/impl/model/OnboardingEntryModel.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/entry/impl/model/OnboardingEntryModel.kt index 0827c50a61..6f3f8945e9 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/entry/impl/model/OnboardingEntryModel.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/entry/impl/model/OnboardingEntryModel.kt @@ -157,14 +157,14 @@ internal class OnboardingEntryModel @Inject constructor( modelScope.launch { if (tangemSdkManager.checkCanUseBiometry() && settingsRepository.shouldShowAskBiometry()) { doIfVisa { - analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.BiometricScreenOpened) + analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.BiometricScreenOpened()) } stackNavigation.replaceAll( OnboardingRoute.AskBiometry(modelCallbacks = AskBiometryModelCallbacks(doneMode)), ) } else { doIfVisa { - analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.SuccessScreenOpened) + analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.SuccessScreenOpened()) } stackNavigation.replaceAll( OnboardingRoute.Done( @@ -182,7 +182,7 @@ internal class OnboardingEntryModel @Inject constructor( override fun onAllowed() { analyticsEventHandler.send(OnboardingEntryEvent.Biometric(OnboardingEntryEvent.Biometric.State.On)) doIfVisa { - analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.SuccessScreenOpened) + analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.SuccessScreenOpened()) } stackNavigation.replaceAll( OnboardingRoute.Done( @@ -195,7 +195,7 @@ internal class OnboardingEntryModel @Inject constructor( override fun onDenied() { analyticsEventHandler.send(OnboardingEntryEvent.Biometric(OnboardingEntryEvent.Biometric.State.Off)) doIfVisa { - analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.SuccessScreenOpened) + analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.SuccessScreenOpened()) } stackNavigation.replaceAll( OnboardingRoute.Done( diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/DefaultOnboardingMultiWalletComponent.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/DefaultOnboardingMultiWalletComponent.kt index f13142d4d5..6526071a17 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/DefaultOnboardingMultiWalletComponent.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/DefaultOnboardingMultiWalletComponent.kt @@ -209,7 +209,7 @@ internal class DefaultOnboardingMultiWalletComponent @AssistedInject constructor } Done -> { // final step - navigate to parent - analyticsHandler.send(OnboardingEvent.Finished) + analyticsHandler.send(OnboardingEvent.Finished()) val userWallet = childParams.multiWalletState.value.resultUserWallet ?: return params.onDone(userWallet) } diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/accesscode/model/MultiWalletAccessCodeModel.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/accesscode/model/MultiWalletAccessCodeModel.kt index a432deb8d0..cc9e104b95 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/accesscode/model/MultiWalletAccessCodeModel.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/accesscode/model/MultiWalletAccessCodeModel.kt @@ -37,7 +37,7 @@ internal class MultiWalletAccessCodeModel @Inject constructor( val onDismiss = MutableSharedFlow() init { - analyticsHandler.send(OnboardingEvent.Backup.SettingAccessCodeStarted) + analyticsHandler.send(OnboardingEvent.Backup.SettingAccessCodeStarted()) params.multiWalletState.update { it.copy(accessCode = null) @@ -112,7 +112,7 @@ internal class MultiWalletAccessCodeModel @Inject constructor( } } - analyticsHandler.send(OnboardingEvent.Backup.AccessCodeEntered) + analyticsHandler.send(OnboardingEvent.Backup.AccessCodeEntered()) } MultiWalletAccessCodeUM.Step.ConfirmAccessCode -> { if (checkAccessCode()) { @@ -125,7 +125,7 @@ internal class MultiWalletAccessCodeModel @Inject constructor( modelScope.launch { onDismiss.emit(Unit) } } - analyticsHandler.send(OnboardingEvent.Backup.AccessCodeReEntered) + analyticsHandler.send(OnboardingEvent.Backup.AccessCodeReEntered()) } } } diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/backup/model/MultiWalletBackupModel.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/backup/model/MultiWalletBackupModel.kt index 609e1e7b6d..d070a4ffed 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/backup/model/MultiWalletBackupModel.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/backup/model/MultiWalletBackupModel.kt @@ -80,10 +80,10 @@ class MultiWalletBackupModel @Inject constructor( init { // for wallet 1 this event is sent in Wallet1ChooseOptionModel if (scanResponse.productType == ProductType.Wallet2 || scanResponse.productType == ProductType.Ring) { - analyticsEventHandler.send(OnboardingEvent.Backup.ScreenOpened) + analyticsEventHandler.send(OnboardingEvent.Backup.ScreenOpened()) } - analyticsEventHandler.send(OnboardingEvent.Backup.Started) + analyticsEventHandler.send(OnboardingEvent.Backup.Started()) // Clear any saved backup before starting the backup process // also clears the primary card if it was set @@ -226,7 +226,7 @@ class MultiWalletBackupModel @Inject constructor( _uiState.update { it.copy(dialog = null) } }, onDismissClick = { - analyticsEventHandler.send(OnboardingEvent.Backup.ResetCancelEvent) + analyticsEventHandler.send(OnboardingEvent.Backup.ResetCancelEvent()) }, ), ) @@ -270,7 +270,7 @@ class MultiWalletBackupModel @Inject constructor( } private fun resetBackupCard(cardId: String) { - analyticsEventHandler.send(OnboardingEvent.Backup.ResetPerformEvent) + analyticsEventHandler.send(OnboardingEvent.Backup.ResetPerformEvent()) modelScope.launch { tangemSdkManager.resetToFactorySettings( diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/chooseoption/model/Wallet1ChooseOptionModel.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/chooseoption/model/Wallet1ChooseOptionModel.kt index e17f81fcdb..8d508c9a4b 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/chooseoption/model/Wallet1ChooseOptionModel.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/chooseoption/model/Wallet1ChooseOptionModel.kt @@ -35,7 +35,7 @@ internal class Wallet1ChooseOptionModel @Inject constructor( val returnToParentFlow = MutableSharedFlow() init { - analyticsHandler.send(OnboardingEvent.Backup.ScreenOpened) + analyticsHandler.send(OnboardingEvent.Backup.ScreenOpened()) } val canSkipBackup = params.multiWalletState.value.currentScanResponse.card.canSkipBackup @@ -44,7 +44,7 @@ internal class Wallet1ChooseOptionModel @Inject constructor( if (skipClicked) return skipClicked = true - analyticsHandler.send(OnboardingEvent.Backup.Skipped) + analyticsHandler.send(OnboardingEvent.Backup.Skipped()) modelScope.launch { val scanResponse = params.multiWalletState.value.currentScanResponse diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/createwallet/model/MultiWalletCreateWalletModel.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/createwallet/model/MultiWalletCreateWalletModel.kt index 1567ffe625..45bb77cd1c 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/createwallet/model/MultiWalletCreateWalletModel.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/createwallet/model/MultiWalletCreateWalletModel.kt @@ -63,7 +63,7 @@ internal class MultiWalletCreateWalletModel @Inject constructor( resourceReference(R.string.onboarding_create_wallet_body) }, onCreateWalletClick = { - analyticsHandler.send(OnboardingEvent.CreateWallet.ButtonCreateWallet) + analyticsHandler.send(OnboardingEvent.CreateWallet.ButtonCreateWallet()) createWallet(false) }, showOtherOptionsButton = params.parentParams.withSeedPhraseFlow, @@ -80,7 +80,7 @@ internal class MultiWalletCreateWalletModel @Inject constructor( val onDone = MutableSharedFlow() init { - analyticsHandler.send(OnboardingEvent.CreateWallet.ScreenOpened) + analyticsHandler.send(OnboardingEvent.CreateWallet.ScreenOpened()) } private fun createWallet(shouldReset: Boolean) { diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/model/OnboardingMultiWalletModel.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/model/OnboardingMultiWalletModel.kt index 9895662a0a..d254fca350 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/model/OnboardingMultiWalletModel.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/model/OnboardingMultiWalletModel.kt @@ -58,7 +58,7 @@ internal class OnboardingMultiWalletModel @Inject constructor( val uiState = _uiState.asStateFlow() init { - analyticsHandler.send(OnboardingEvent.Started) + analyticsHandler.send(OnboardingEvent.Started()) initScreenTitle() loadCardArtwork() subscribeToBackups() diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/note/impl/child/create/model/OnboardingNoteCreateWalletModel.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/note/impl/child/create/model/OnboardingNoteCreateWalletModel.kt index efecb19956..50850543c5 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/note/impl/child/create/model/OnboardingNoteCreateWalletModel.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/note/impl/child/create/model/OnboardingNoteCreateWalletModel.kt @@ -41,11 +41,11 @@ internal class OnboardingNoteCreateWalletModel @Inject constructor( ) init { - Analytics.send(OnboardingEvent.CreateWallet.ScreenOpened) + Analytics.send(OnboardingEvent.CreateWallet.ScreenOpened()) modelScope.launch { val scanResponse = params.childParams.commonState.value.scanResponse ?: return@launch if (!cardRepository.isActivationStarted(scanResponse.card.cardId)) { - Analytics.send(OnboardingEvent.Started) + Analytics.send(OnboardingEvent.Started()) } } observeArtwork() diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/twin/impl/model/OnboardingTwinModel.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/twin/impl/model/OnboardingTwinModel.kt index f1559c092d..efa215b517 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/twin/impl/model/OnboardingTwinModel.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/twin/impl/model/OnboardingTwinModel.kt @@ -103,7 +103,7 @@ internal class OnboardingTwinModel @Inject constructor( init { when (_uiState.value) { is OnboardingTwinUM.Welcome -> { - analyticsEventHandler.send(OnboardingEvent.Twins.ScreenOpened) + analyticsEventHandler.send(OnboardingEvent.Twins.ScreenOpened()) modelScope.launch { saveTwinsOnboardingShownUseCase() } @@ -272,7 +272,7 @@ internal class OnboardingTwinModel @Inject constructor( } private fun scanComplete(scanResponse: ScanResponse) { - analyticsEventHandler.send(OnboardingEvent.Twins.SetupFinished) + analyticsEventHandler.send(OnboardingEvent.Twins.SetupFinished()) when (params.mode) { Mode.WelcomeOnly -> saveWalletAndDone() diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/accesscode/model/OnboardingVisaAccessCodeModel.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/accesscode/model/OnboardingVisaAccessCodeModel.kt index b921e0641d..2d81af1b09 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/accesscode/model/OnboardingVisaAccessCodeModel.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/accesscode/model/OnboardingVisaAccessCodeModel.kt @@ -71,7 +71,7 @@ internal class OnboardingVisaAccessCodeModel @Inject constructor( val onDone = MutableSharedFlow() init { - analyticsEventsHandler.send(OnboardingVisaAnalyticsEvent.SettingAccessCodeStarted) + analyticsEventsHandler.send(OnboardingVisaAnalyticsEvent.SettingAccessCodeStarted()) } fun onBack() { @@ -115,14 +115,14 @@ internal class OnboardingVisaAccessCodeModel @Inject constructor( private fun onContinue() { when (uiState.value.step) { OnboardingVisaAccessCodeUM.Step.Enter -> { - analyticsEventsHandler.send(OnboardingVisaAnalyticsEvent.AccessCodeEntered) + analyticsEventsHandler.send(OnboardingVisaAnalyticsEvent.AccessCodeEntered()) if (checkAccessCodeMinChars().not()) return _uiState.update { it.copy(step = OnboardingVisaAccessCodeUM.Step.ReEnter) } - analyticsEventsHandler.send(OnboardingVisaAnalyticsEvent.AccessCodeReenterScreen) + analyticsEventsHandler.send(OnboardingVisaAnalyticsEvent.AccessCodeReenterScreen()) } OnboardingVisaAccessCodeUM.Step.ReEnter -> { if (checkAccessCodesMatch().not()) return - analyticsEventsHandler.send(OnboardingVisaAnalyticsEvent.OnboardingVisa) + analyticsEventsHandler.send(OnboardingVisaAnalyticsEvent.OnboardingVisa()) startActivationProcess(accessCode = uiState.value.accessCodeFirst.text) } } diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/approve/model/OnboardingVisaApproveModel.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/approve/model/OnboardingVisaApproveModel.kt index ba23fac765..cf38445872 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/approve/model/OnboardingVisaApproveModel.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/approve/model/OnboardingVisaApproveModel.kt @@ -55,7 +55,7 @@ internal class OnboardingVisaApproveModel @Inject constructor( val onDone = MutableSharedFlow() init { - analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.WalletPrepare) + analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.WalletPrepare()) } private fun getInitialState(): OnboardingVisaApproveUM { @@ -67,7 +67,7 @@ internal class OnboardingVisaApproveModel @Inject constructor( private fun onApproveClick() { loading(true) - analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.ButtonApprove) + analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.ButtonApprove()) modelScope.launch { val dataToSign = diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/inprogress/model/OnboardingVisaInProgressModel.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/inprogress/model/OnboardingVisaInProgressModel.kt index 3e7fbaa01c..235c201961 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/inprogress/model/OnboardingVisaInProgressModel.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/inprogress/model/OnboardingVisaInProgressModel.kt @@ -61,7 +61,7 @@ internal class OnboardingVisaInProgressModel @Inject constructor( val onDone = MutableSharedFlow() init { - analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.ActivationInProgressScreen) + analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.ActivationInProgressScreen()) runShortPolling() } diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/otherwallet/model/OnboardingVisaOtherWalletModel.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/otherwallet/model/OnboardingVisaOtherWalletModel.kt index 13e71e07f0..ace03f9a08 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/otherwallet/model/OnboardingVisaOtherWalletModel.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/otherwallet/model/OnboardingVisaOtherWalletModel.kt @@ -52,7 +52,7 @@ internal class OnboardingVisaOtherWalletModel @Inject constructor( val onDone = MutableSharedFlow() init { - analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.GoToWebsiteOpened) + analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.GoToWebsiteOpened()) modelScope.launch { while (true) { visaActivationRepository.getActivationRemoteState() @@ -81,12 +81,12 @@ internal class OnboardingVisaOtherWalletModel @Inject constructor( } private fun onShareClicked() { - analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.ButtonShareLink) + analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.ButtonShareLink()) shareManager.shareText("https://tangem.com/") // TODO } private fun onOpenInBrowserClicked() { - analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.ButtonBrowser) + analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.ButtonBrowser()) urlOpener.openUrl("https://tangem.com/") // TODO } } \ No newline at end of file diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/pincode/model/OnboardingVisaPinCodeModel.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/pincode/model/OnboardingVisaPinCodeModel.kt index 5ba1dd3aee..ae3bf7d96e 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/pincode/model/OnboardingVisaPinCodeModel.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/pincode/model/OnboardingVisaPinCodeModel.kt @@ -47,7 +47,7 @@ internal class OnboardingVisaPinCodeModel @Inject constructor( val onDone = MutableSharedFlow() init { - analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.PinCodeScreenOpened) + analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.PinCodeScreenOpened()) } private fun getInitialState(): OnboardingVisaPinCodeUM { @@ -67,12 +67,12 @@ internal class OnboardingVisaPinCodeModel @Inject constructor( if (PinCodeValidation.validateAllDigits(pin)) { val isError = PinCodeValidation.validateLength(pin) && PinCodeValidation.validate(pin).not() - _uiState.update { - it.copy( + _uiState.update { currentState -> + currentState.copy( pinCode = pin, submitButtonEnabled = PinCodeValidation.validate(pin), error = if (isError) { - analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.ErrorPinValidation) + analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.ErrorPinValidation()) resourceReference(R.string.visa_onboarding_pin_validation_error_message) } else { null @@ -83,7 +83,7 @@ internal class OnboardingVisaPinCodeModel @Inject constructor( } private fun onSubmitClick() { - analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.PinEntered) + analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.PinEntered()) val pinCode = _uiState.value.pinCode if (PinCodeValidation.validate(pinCode).not()) return diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/welcome/model/OnboardingVisaWelcomeModel.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/welcome/model/OnboardingVisaWelcomeModel.kt index 9e63e68fc3..8660ff65d0 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/welcome/model/OnboardingVisaWelcomeModel.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/welcome/model/OnboardingVisaWelcomeModel.kt @@ -50,7 +50,7 @@ internal class OnboardingVisaWelcomeModel @Inject constructor( val onDone = MutableSharedFlow() init { - analyticsEventsHandler.send(OnboardingVisaAnalyticsEvent.ActivationScreenOpened) + analyticsEventsHandler.send(OnboardingVisaAnalyticsEvent.ActivationScreenOpened()) } private fun getInitialState(): OnboardingVisaWelcomeUM { @@ -65,7 +65,7 @@ internal class OnboardingVisaWelcomeModel @Inject constructor( } private fun onContinueClick() { - analyticsEventsHandler.send(OnboardingVisaAnalyticsEvent.ButtonActivate) + analyticsEventsHandler.send(OnboardingVisaAnalyticsEvent.ButtonActivate()) if (params !is Config.WelcomeBack) { modelScope.launch { onDone.emit(DoneEvent.WelcomeDone) } return diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/welcome/model/analytics/OnboardingVisaAnalyticsEvent.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/welcome/model/analytics/OnboardingVisaAnalyticsEvent.kt index 25759dce3a..f2abbfba47 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/welcome/model/analytics/OnboardingVisaAnalyticsEvent.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/visa/impl/child/welcome/model/analytics/OnboardingVisaAnalyticsEvent.kt @@ -7,27 +7,27 @@ internal sealed class OnboardingVisaAnalyticsEvent( params: Map = mapOf(), ) : AnalyticsEvent("Onboarding / Visa", event, params) { - data object ActivationScreenOpened : OnboardingVisaAnalyticsEvent( + class ActivationScreenOpened : OnboardingVisaAnalyticsEvent( event = "Activation Screen Opened", ) - data object ButtonActivate : OnboardingVisaAnalyticsEvent( + class ButtonActivate : OnboardingVisaAnalyticsEvent( event = "Button - Activate", ) - data object SettingAccessCodeStarted : OnboardingVisaAnalyticsEvent( + class SettingAccessCodeStarted : OnboardingVisaAnalyticsEvent( event = "Setting Access Code Started", ) - data object AccessCodeEntered : OnboardingVisaAnalyticsEvent( + class AccessCodeEntered : OnboardingVisaAnalyticsEvent( event = "Access Code Entered", ) - data object AccessCodeReenterScreen : OnboardingVisaAnalyticsEvent( + class AccessCodeReenterScreen : OnboardingVisaAnalyticsEvent( event = "Access Code Re-enter Screen", ) - data object OnboardingVisa : OnboardingVisaAnalyticsEvent( + class OnboardingVisa : OnboardingVisaAnalyticsEvent( event = "Onboarding / Visa", ) @@ -38,48 +38,48 @@ internal sealed class OnboardingVisaAnalyticsEvent( params = mapOf("Type" to type), ) - data object WalletPrepare : OnboardingVisaAnalyticsEvent( + class WalletPrepare : OnboardingVisaAnalyticsEvent( event = "Wallet Prepare", ) - data object ButtonApprove : OnboardingVisaAnalyticsEvent( + class ButtonApprove : OnboardingVisaAnalyticsEvent( event = "Button - Approve", ) - data object GoToWebsiteOpened : OnboardingVisaAnalyticsEvent( + class GoToWebsiteOpened : OnboardingVisaAnalyticsEvent( event = "Go To Website Opened", ) - data object ButtonBrowser : OnboardingVisaAnalyticsEvent( + class ButtonBrowser : OnboardingVisaAnalyticsEvent( event = "Button - Browser", ) - data object ButtonShareLink : OnboardingVisaAnalyticsEvent( + class ButtonShareLink : OnboardingVisaAnalyticsEvent( event = "Button - Share Link", ) - data object ActivationInProgressScreen : OnboardingVisaAnalyticsEvent( + class ActivationInProgressScreen : OnboardingVisaAnalyticsEvent( event = "Activation In Progress Screen", ) - data object PinCodeScreenOpened : OnboardingVisaAnalyticsEvent( + class PinCodeScreenOpened : OnboardingVisaAnalyticsEvent( event = "PIN Code Screen Opened", ) - data object PinEntered : OnboardingVisaAnalyticsEvent( + class PinEntered : OnboardingVisaAnalyticsEvent( event = "PIN Entered", params = mapOf("Type" to "Visa"), ) - data object BiometricScreenOpened : OnboardingVisaAnalyticsEvent( + class BiometricScreenOpened : OnboardingVisaAnalyticsEvent( event = "Biometric Screen Opened", ) - data object SuccessScreenOpened : OnboardingVisaAnalyticsEvent( + class SuccessScreenOpened : OnboardingVisaAnalyticsEvent( event = "Success Screen Opened", ) - data object ErrorPinValidation : OnboardingVisaAnalyticsEvent( + class ErrorPinValidation : OnboardingVisaAnalyticsEvent( event = "Error - Pin Validation", ) } \ No newline at end of file diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/entity/AllOffersStateFactory.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/entity/AllOffersStateFactory.kt index 6035f80287..4a29045354 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/entity/AllOffersStateFactory.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/entity/AllOffersStateFactory.kt @@ -86,7 +86,7 @@ internal class AllOffersStateFactory( fun getPaymentsState(): AllOffersStateUM { return when (val currentState = currentStateProvider.invoke()) { is AllOffersStateUM.Content -> { - analyticsEventHandler.send(OnrampAnalyticsEvent.PaymentMethodsScreenOpened) + analyticsEventHandler.send(OnrampAnalyticsEvent.PaymentMethodsScreenOpened()) currentState.copy(currentMethod = null) } AllOffersStateUM.Loading, diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/model/AllOffersModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/model/AllOffersModel.kt index cf2c6af946..b29663f8cc 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/model/AllOffersModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/model/AllOffersModel.kt @@ -48,8 +48,8 @@ internal class AllOffersModel @Inject constructor( init { subscribeOnAllOffers() - analyticsEventHandler.send(OnrampAnalyticsEvent.PaymentMethodsScreenOpened) - analyticsEventHandler.send(OnrampAnalyticsEvent.AllOffersClicked) + analyticsEventHandler.send(OnrampAnalyticsEvent.PaymentMethodsScreenOpened()) + analyticsEventHandler.send(OnrampAnalyticsEvent.AllOffersClicked()) } fun dismiss() { diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/confirmresidency/model/ConfirmResidencyModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/confirmresidency/model/ConfirmResidencyModel.kt index 989bebc335..e2d8f30195 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/confirmresidency/model/ConfirmResidencyModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/confirmresidency/model/ConfirmResidencyModel.kt @@ -69,7 +69,7 @@ internal class ConfirmResidencyModel @Inject constructor( } else { ConfirmResidencyUM.ActionButtonConfig( onClick = { - analyticsEventHandler.send(OnrampAnalyticsEvent.CloseOnramp) + analyticsEventHandler.send(OnrampAnalyticsEvent.CloseOnramp()) router.pop() }, text = resourceReference(R.string.common_close), @@ -77,7 +77,7 @@ internal class ConfirmResidencyModel @Inject constructor( } private fun onChangeClick() { - analyticsEventHandler.send(OnrampAnalyticsEvent.OnResidenceChange) + analyticsEventHandler.send(OnrampAnalyticsEvent.OnResidenceChange()) bottomSheetNavigation.activate(ConfirmResidencyBottomSheetConfig.SelectCountry(params.onDismiss)) } } \ No newline at end of file diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/entity/factory/amount/OnrampAmountStateFactory.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/entity/factory/amount/OnrampAmountStateFactory.kt index b3569cec78..24010b69e9 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/entity/factory/amount/OnrampAmountStateFactory.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/entity/factory/amount/OnrampAmountStateFactory.kt @@ -240,11 +240,11 @@ internal class OnrampAmountStateFactory( val errorTextRes = when (error) { is OnrampError.AmountError.TooBigError -> { - analyticsEventHandler.send(OnrampAnalyticsEvent.MaxAmountError) + analyticsEventHandler.send(OnrampAnalyticsEvent.MaxAmountError()) R.string.onramp_max_amount_restriction } is OnrampError.AmountError.TooSmallError -> { - analyticsEventHandler.send(OnrampAnalyticsEvent.MinAmountError) + analyticsEventHandler.send(OnrampAnalyticsEvent.MinAmountError()) R.string.onramp_min_amount_restriction } } diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt index 18b31bb447..7c501be535 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt @@ -288,7 +288,7 @@ internal class OnrampMainComponentModel @Inject constructor( } override fun openCurrenciesList() { - analyticsEventHandler.send(OnrampAnalyticsEvent.SelectCurrencyScreenOpened) + analyticsEventHandler.send(OnrampAnalyticsEvent.SelectCurrencyScreenOpened()) bottomSheetNavigation.activate(OnrampMainBottomSheetConfig.CurrenciesList) } @@ -333,7 +333,7 @@ internal class OnrampMainComponentModel @Inject constructor( } private fun onCloseClick() { - analyticsEventHandler.send(OnrampAnalyticsEvent.CloseOnramp) + analyticsEventHandler.send(OnrampAnalyticsEvent.CloseOnramp()) router.pop() } diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampV2AmountStateFactory.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampV2AmountStateFactory.kt index 2af5055bd7..c46937ac48 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampV2AmountStateFactory.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampV2AmountStateFactory.kt @@ -112,11 +112,11 @@ internal class OnrampV2AmountStateFactory( val errorTextRes = when (error) { is OnrampError.AmountError.TooBigError -> { - analyticsEventHandler.send(OnrampAnalyticsEvent.MaxAmountError) + analyticsEventHandler.send(OnrampAnalyticsEvent.MaxAmountError()) R.string.onramp_max_amount_restriction } is OnrampError.AmountError.TooSmallError -> { - analyticsEventHandler.send(OnrampAnalyticsEvent.MinAmountError) + analyticsEventHandler.send(OnrampAnalyticsEvent.MinAmountError()) R.string.onramp_min_amount_restriction } } diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt index 1fc8da3ee7..82de8c4f75 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt @@ -124,7 +124,7 @@ internal class OnrampV2MainComponentModel @Inject constructor( } override fun openCurrenciesList() { - analyticsEventHandler.send(OnrampAnalyticsEvent.SelectCurrencyScreenOpened) + analyticsEventHandler.send(OnrampAnalyticsEvent.SelectCurrencyScreenOpened()) bottomSheetNavigation.activate(OnrampV2MainBottomSheetConfig.CurrenciesList) } @@ -225,7 +225,7 @@ internal class OnrampV2MainComponentModel @Inject constructor( } private fun onCloseClick() { - analyticsEventHandler.send(OnrampAnalyticsEvent.CloseOnramp) + analyticsEventHandler.send(OnrampAnalyticsEvent.CloseOnramp()) router.pop() } diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/providers/model/SelectProviderModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/providers/model/SelectProviderModel.kt index 7c5493ae04..95cab56383 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/providers/model/SelectProviderModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/providers/model/SelectProviderModel.kt @@ -66,7 +66,7 @@ internal class SelectProviderModel @Inject constructor( userCountry = getUserCountryUseCase.invokeSync().getOrNull() ?: UserCountry.Other(Locale.getDefault().country) - analyticsEventHandler.send(OnrampAnalyticsEvent.ProvidersScreenOpened) + analyticsEventHandler.send(OnrampAnalyticsEvent.ProvidersScreenOpened()) getPaymentMethods() getProviders(params.selectedPaymentMethod) } @@ -140,7 +140,7 @@ internal class SelectProviderModel @Inject constructor( } private fun openPaymentMethods() { - analyticsEventHandler.send(OnrampAnalyticsEvent.PaymentMethodsScreenOpened) + analyticsEventHandler.send(OnrampAnalyticsEvent.PaymentMethodsScreenOpened()) bottomSheetNavigation.activate( ProviderListBottomSheetConfig.PaymentMethods( selectedMethodId = state.value.selectedPaymentMethod.paymentMethod.id, diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/selectcountry/model/OnrampSelectCountryModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/selectcountry/model/OnrampSelectCountryModel.kt index 8c22aeb96a..a383d11e9a 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/selectcountry/model/OnrampSelectCountryModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/selectcountry/model/OnrampSelectCountryModel.kt @@ -60,7 +60,7 @@ internal class OnrampSelectCountryModel @Inject constructor( val state: StateFlow get() = controller.state init { - analyticsEventHandler.send(OnrampAnalyticsEvent.SelectResidenceOpened) + analyticsEventHandler.send(OnrampAnalyticsEvent.SelectResidenceOpened()) updateCountriesList() modelScope.launch { subscribeOnUpdateState() } } diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/selecttoken/model/OnrampOperationModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/selecttoken/model/OnrampOperationModel.kt index cad8e72a0a..1c618de087 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/selecttoken/model/OnrampOperationModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/selecttoken/model/OnrampOperationModel.kt @@ -60,8 +60,8 @@ internal class OnrampOperationModel @Inject constructor( init { analyticsEventHandler.send( event = when (params) { - is Params.Buy -> MainScreenAnalyticsEvent.BuyScreenOpened - is Params.Sell -> MainScreenAnalyticsEvent.SellScreenOpened + is Params.Buy -> MainScreenAnalyticsEvent.BuyScreenOpened() + is Params.Sell -> MainScreenAnalyticsEvent.SellScreenOpened() }, ) } diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/settings/model/OnrampSettingsModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/settings/model/OnrampSettingsModel.kt index e7eba0a83f..7c6d7899b8 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/settings/model/OnrampSettingsModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/settings/model/OnrampSettingsModel.kt @@ -37,7 +37,7 @@ internal class OnrampSettingsModel @Inject constructor( val bottomSheetNavigation: SlotNavigation = SlotNavigation() init { - analyticsEventHandler.send(OnrampAnalyticsEvent.SettingsOpened) + analyticsEventHandler.send(OnrampAnalyticsEvent.SettingsOpened()) subscribeOnUpdateState() } diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/model/OnrampSuccessComponentModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/model/OnrampSuccessComponentModel.kt index ad9f3c8d31..5f318b6a4f 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/model/OnrampSuccessComponentModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/model/OnrampSuccessComponentModel.kt @@ -74,7 +74,7 @@ internal class OnrampSuccessComponentModel @Inject constructor( } override fun goToProviderClick(providerLink: String) { - analyticsEventHandler.send(TokenOnrampAnalyticsEvent.GoToProvider) + analyticsEventHandler.send(TokenOnrampAnalyticsEvent.GoToProvider()) urlOpener.openUrl(providerLink) } diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/DefaultSwapSelectTokensComponent.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/DefaultSwapSelectTokensComponent.kt index 5040c07c57..d9b66c559d 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/DefaultSwapSelectTokensComponent.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/DefaultSwapSelectTokensComponent.kt @@ -50,7 +50,7 @@ internal class DefaultSwapSelectTokensComponent @AssistedInject constructor( ) init { - analyticsEventHandler.send(event = MainScreenAnalyticsEvent.SwapScreenOpened) + analyticsEventHandler.send(event = MainScreenAnalyticsEvent.SwapScreenOpened()) } @Composable diff --git a/features/referral/impl/src/main/java/com/tangem/feature/referral/analytics/ReferralEvents.kt b/features/referral/impl/src/main/java/com/tangem/feature/referral/analytics/ReferralEvents.kt index 20a2fe5ecd..f92ffd3549 100644 --- a/features/referral/impl/src/main/java/com/tangem/feature/referral/analytics/ReferralEvents.kt +++ b/features/referral/impl/src/main/java/com/tangem/feature/referral/analytics/ReferralEvents.kt @@ -4,12 +4,12 @@ import com.tangem.core.analytics.models.AnalyticsEvent sealed class ReferralEvents(event: String) : AnalyticsEvent(REFERRAL_PROGRAM_CATEGORY, event) { - data object ReferralScreenOpened : ReferralEvents(event = "Referral Screen Opened") - data object ClickParticipate : ReferralEvents(event = "Button - Participate") - data object ClickCopy : ReferralEvents(event = "Button - Copy") - data object ClickShare : ReferralEvents(event = "Button - Share") - data object ClickTaC : ReferralEvents(event = "Link - TaC") - data object ParticipateSuccessful : ReferralEvents(event = "Participate Successful") + class ReferralScreenOpened : ReferralEvents(event = "Referral Screen Opened") + class ClickParticipate : ReferralEvents(event = "Button - Participate") + class ClickCopy : ReferralEvents(event = "Button - Copy") + class ClickShare : ReferralEvents(event = "Button - Share") + class ClickTaC : ReferralEvents(event = "Link - TaC") + class ParticipateSuccessful : ReferralEvents(event = "Participate Successful") } private const val REFERRAL_PROGRAM_CATEGORY = "Referral Program" \ No newline at end of file diff --git a/features/referral/impl/src/main/java/com/tangem/feature/referral/model/ReferralModel.kt b/features/referral/impl/src/main/java/com/tangem/feature/referral/model/ReferralModel.kt index fd6d531d4f..ac7b852a3a 100644 --- a/features/referral/impl/src/main/java/com/tangem/feature/referral/model/ReferralModel.kt +++ b/features/referral/impl/src/main/java/com/tangem/feature/referral/model/ReferralModel.kt @@ -90,7 +90,7 @@ internal class ReferralModel @Inject constructor( } init { - analyticsEventHandler.send(ReferralEvents.ReferralScreenOpened) + analyticsEventHandler.send(ReferralEvents.ReferralScreenOpened()) if (accountsFeatureToggles.isFeatureEnabled) { combine( flow = referralData.filterNotNull().onEach(::selectAccount), @@ -178,7 +178,7 @@ internal class ReferralModel @Inject constructor( if (userWallet is UserWallet.Cold && isDemoCardUseCase(cardId = userWallet.cardId)) { showErrorSnackbar(DemoModeException()) } else { - analyticsEventHandler.send(ReferralEvents.ClickParticipate) + analyticsEventHandler.send(ReferralEvents.ClickParticipate()) val lastInfoState = uiState.referralInfoState uiState = uiState.copy(referralInfoState = ReferralInfoState.Loading) modelScope.launch { @@ -187,9 +187,9 @@ internal class ReferralModel @Inject constructor( false -> PortfolioId(params.userWalletId) } runCatching { referralInteractor.startReferral(portfolioId) } - .onSuccess { - analyticsEventHandler.send(ReferralEvents.ParticipateSuccessful) - referralData.value = it + .onSuccess { referral -> + analyticsEventHandler.send(ReferralEvents.ParticipateSuccessful()) + referralData.value = referral } .onFailure { throwable -> if (throwable is ReferralError.UserCancelledException) { @@ -213,17 +213,17 @@ internal class ReferralModel @Inject constructor( } private fun onAgreementClicked() { - analyticsEventHandler.send(ReferralEvents.ClickTaC) + analyticsEventHandler.send(ReferralEvents.ClickTaC()) lastReferralData?.tosLink?.let(urlOpener::openUrl) } private fun onCopyClicked() { - analyticsEventHandler.send(ReferralEvents.ClickCopy) + analyticsEventHandler.send(ReferralEvents.ClickCopy()) } private fun onShareClicked(text: String) { - analyticsEventHandler.send(ReferralEvents.ClickShare) + analyticsEventHandler.send(ReferralEvents.ClickShare()) shareManager.shareText(text = text) } diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/model/StakingModel.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/model/StakingModel.kt index e4b046c12c..48e2fd54fc 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/model/StakingModel.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/model/StakingModel.kt @@ -466,7 +466,7 @@ internal class StakingModel @Inject constructor( } override fun onInitialInfoBannerClick() { - analyticsEventHandler.send(StakingAnalyticsEvent.WhatIsStaking) + analyticsEventHandler.send(StakingAnalyticsEvent.WhatIsStaking()) innerRouter.openUrl(WHAT_IS_STAKING_ARTICLE_URL) } @@ -512,7 +512,7 @@ internal class StakingModel @Inject constructor( } override fun onMaxValueClick() { - analyticsEventHandler.send(StakingAnalyticsEvent.ButtonMax) + analyticsEventHandler.send(StakingAnalyticsEvent.ButtonMax()) stateController.update( AmountMaxValueStateTransformer( cryptoCurrencyStatus = cryptoCurrencyStatus, @@ -554,7 +554,7 @@ internal class StakingModel @Inject constructor( } override fun openRewardsValidators() { - analyticsEventHandler.send(StakingAnalyticsEvent.ButtonRewards) + analyticsEventHandler.send(StakingAnalyticsEvent.ButtonRewards()) val rewardsValidators = stateController.value.rewardsValidatorsState as? StakingStates.RewardsValidatorsState.Data @@ -878,7 +878,7 @@ internal class StakingModel @Inject constructor( } override fun onExploreClick() { - analyticsEventHandler.send(StakingAnalyticsEvent.ButtonExplore) + analyticsEventHandler.send(StakingAnalyticsEvent.ButtonExplore()) val confirmationDataState = uiState.value.confirmationState as? StakingStates.ConfirmationState.Data val transactionDoneState = confirmationDataState?.transactionDoneState as? TransactionDoneState.Content val txUrl = transactionDoneState?.txUrl @@ -892,7 +892,7 @@ internal class StakingModel @Inject constructor( val transactionDoneState = confirmationDataState?.transactionDoneState as? TransactionDoneState.Content val txUrl = transactionDoneState?.txUrl - analyticsEventHandler.send(StakingAnalyticsEvent.ButtonShare) + analyticsEventHandler.send(StakingAnalyticsEvent.ButtonShare()) if (txUrl != null) { vibratorHapticManager.performOneTime(TangemHapticEffect.OneTime.Click) shareManager.shareText(txUrl) diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/StakingStateRouter.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/StakingStateRouter.kt index 673dc355c0..294890807d 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/StakingStateRouter.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/StakingStateRouter.kt @@ -81,12 +81,12 @@ internal class StakingStateRouter( } fun showRewardsValidators() { - analyticsEventsHandler.send(StakingAnalyticsEvent.RewardScreenOpened) + analyticsEventsHandler.send(StakingAnalyticsEvent.RewardScreenOpened()) stateController.update { it.copy(currentStep = StakingStep.RewardsValidators) } } private fun showAmount() { - analyticsEventsHandler.send(StakingAnalyticsEvent.AmountScreenOpened) + analyticsEventsHandler.send(StakingAnalyticsEvent.AmountScreenOpened()) stateController.update { it.copy(currentStep = StakingStep.Amount) } } diff --git a/features/swap/impl/src/main/java/com/tangem/feature/swap/analytics/SwapEvents.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/analytics/SwapEvents.kt index 8d8ed4d072..f9f65022bc 100644 --- a/features/swap/impl/src/main/java/com/tangem/feature/swap/analytics/SwapEvents.kt +++ b/features/swap/impl/src/main/java/com/tangem/feature/swap/analytics/SwapEvents.kt @@ -23,7 +23,7 @@ sealed class SwapEvents( params = mapOf("Token" to token), ) - data object SendTokenBalanceClicked : SwapEvents(event = "Send Token Balance Clicked") + class SendTokenBalanceClicked : SwapEvents(event = "Send Token Balance Clicked") data class ChooseTokenScreenOpened(val availableTokens: Boolean) : SwapEvents( event = "Choose Token Screen Opened", @@ -43,7 +43,7 @@ sealed class SwapEvents( params = mapOf("Send Token" to sendToken, "Receive Token" to receiveToken), ) - data object ButtonGivePermissionClicked : SwapEvents(event = "Button - Give permission") + class ButtonGivePermissionClicked : SwapEvents(event = "Button - Give permission") data class ButtonPermissionApproveClicked( val sendToken: String, @@ -58,9 +58,9 @@ sealed class SwapEvents( ), ) - data object ButtonPermissionCancelClicked : SwapEvents(event = "Button - Permission Cancel") + class ButtonPermissionCancelClicked : SwapEvents(event = "Button - Permission Cancel") - data object ButtonSwipeClicked : SwapEvents(event = "Button - Swipe") + class ButtonSwipeClicked : SwapEvents(event = "Button - Swipe") data class SwapInProgressScreen( val provider: SwapProvider, @@ -81,7 +81,7 @@ sealed class SwapEvents( ), ) - data object ProviderClicked : SwapEvents("Provider Clicked") + class ProviderClicked : SwapEvents("Provider Clicked") data class ProviderChosen(val provider: SwapProvider) : SwapEvents( event = "Provider Chosen", @@ -98,7 +98,7 @@ sealed class SwapEvents( params = mapOf("Token" to token), ) - data object NoticeNoAvailableTokensToSwap : SwapEvents("Notice - No Available Tokens To Swap") + class NoticeNoAvailableTokensToSwap : SwapEvents("Notice - No Available Tokens To Swap") data class NoticeNotEnoughFee(val token: String, val blockchain: String) : SwapEvents( event = "Notice - Not Enough Fee", diff --git a/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt index ffa4642c46..b9ed696598 100644 --- a/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt +++ b/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt @@ -375,7 +375,7 @@ internal class SwapModel @Inject constructor( ) { // exceptional case if (selectedCurrency == null) { - analyticsEventHandler.send(SwapEvents.NoticeNoAvailableTokensToSwap) + analyticsEventHandler.send(SwapEvents.NoticeNoAvailableTokensToSwap()) uiState = stateBuilder.createNoAvailableTokensToSwapState( uiStateHolder = uiState, fromToken = initialFromStatus, @@ -1271,7 +1271,7 @@ internal class SwapModel @Inject constructor( private fun onAmountSelected(selected: Boolean) { if (selected) { - analyticsEventHandler.send(SwapEvents.SendTokenBalanceClicked) + analyticsEventHandler.send(SwapEvents.SendTokenBalanceClicked()) } } @@ -1312,7 +1312,7 @@ internal class SwapModel @Inject constructor( }, onChangeCardsClicked = { onChangeCardsClicked() - analyticsEventHandler.send(SwapEvents.ButtonSwipeClicked) + analyticsEventHandler.send(SwapEvents.ButtonSwipeClicked()) }, onBackClicked = { val bottomSheet = uiState.bottomSheetConfig @@ -1331,10 +1331,10 @@ internal class SwapModel @Inject constructor( onReduceByAmount = ::onReduceAmountClicked, openPermissionBottomSheet = { singleTaskScheduler.cancelTask() - analyticsEventHandler.send(SwapEvents.ButtonGivePermissionClicked) + analyticsEventHandler.send(SwapEvents.ButtonGivePermissionClicked()) uiState = stateBuilder.showPermissionBottomSheet(uiState) { startLoadingQuotesFromLastState(isSilent = true) - analyticsEventHandler.send(SwapEvents.ButtonPermissionCancelClicked) + analyticsEventHandler.send(SwapEvents.ButtonPermissionCancelClicked()) uiState = stateBuilder.dismissBottomSheet(uiState) } }, @@ -1362,7 +1362,7 @@ internal class SwapModel @Inject constructor( } }, onProviderClick = { providerId -> - analyticsEventHandler.send(SwapEvents.ProviderClicked) + analyticsEventHandler.send(SwapEvents.ProviderClicked()) val states = dataState.lastLoadedSwapStates.getLastLoadedSuccessStates() val pricesLowerBest = getPricesLowerBest(providerId, states) uiState = stateBuilder.showSelectProviderBottomSheet( diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayDetailsModel.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayDetailsModel.kt index bfe48f97c9..774b5f2413 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayDetailsModel.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayDetailsModel.kt @@ -337,7 +337,7 @@ internal class TangemPayDetailsModel @Inject constructor( } override fun onClickSwap(data: TangemPayTopUpData) { - analytics.send(TangemPayAnalyticsEvents.SwapClicked) + analytics.send(TangemPayAnalyticsEvents.SwapClicked()) bottomSheetNavigation.dismiss() router.push( AppRoute.Swap( @@ -356,7 +356,7 @@ internal class TangemPayDetailsModel @Inject constructor( } override fun onClickReceive(data: TangemPayTopUpData) { - analytics.send(TangemPayAnalyticsEvents.ReceiveFundsClicked) + analytics.send(TangemPayAnalyticsEvents.ReceiveFundsClicked()) bottomSheetNavigation.dismiss() val config = TokenReceiveConfig( shouldShowWarning = false, diff --git a/features/tangempay/onboarding/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayOnboardingModel.kt b/features/tangempay/onboarding/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayOnboardingModel.kt index 17e4ea67e5..92f6853e72 100644 --- a/features/tangempay/onboarding/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayOnboardingModel.kt +++ b/features/tangempay/onboarding/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayOnboardingModel.kt @@ -50,7 +50,7 @@ internal class TangemPayOnboardingModel @Inject constructor( field = MutableStateFlow(getInitialState()) init { - analytics.send(TangemPayAnalyticsEvents.ActivationScreenOpened) + analytics.send(TangemPayAnalyticsEvents.ActivationScreenOpened()) modelScope.launch { when (params) { is TangemPayOnboardingComponent.Params.ContinueOnboarding -> { @@ -118,13 +118,13 @@ internal class TangemPayOnboardingModel @Inject constructor( } private fun onTermsClick() { - analytics.send(TangemPayAnalyticsEvents.ViewTermsClicked) + analytics.send(TangemPayAnalyticsEvents.ViewTermsClicked()) urlOpener.openUrl(TangemPayConstants.TERMS_AND_LIMITS_LINK) } @Suppress("NullableToStringCall") private fun onGetCardClick() { - analytics.send(TangemPayAnalyticsEvents.GetCardClicked) + analytics.send(TangemPayAnalyticsEvents.GetCardClicked()) uiState.transformerUpdate(TangemPayOnboardingButtonLoadingTransformer(isLoading = true)) modelScope.launch { // TODO implement selector diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/model/TokenDetailsModel.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/model/TokenDetailsModel.kt index 809fa4ea3f..1ec6d138b7 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/model/TokenDetailsModel.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/model/TokenDetailsModel.kt @@ -878,7 +878,7 @@ internal class TokenDetailsModel @Inject constructor( PromoAnalyticsEvent.PromotionBannerClicked( source = AnalyticsParam.ScreensSources.Token, program = PromoAnalyticsEvent.Program.Empty, // Use it on new promo action - action = PromoAnalyticsEvent.PromotionBannerClicked.BannerAction.Closed, + action = PromoAnalyticsEvent.PromotionBannerClicked.BannerAction.Closed(), ), ) } @@ -891,7 +891,7 @@ internal class TokenDetailsModel @Inject constructor( PromoAnalyticsEvent.PromotionBannerClicked( source = AnalyticsParam.ScreensSources.Token, program = PromoAnalyticsEvent.Program.Empty, // Use it on new promo action - action = PromoAnalyticsEvent.PromotionBannerClicked.BannerAction.Clicked, + action = PromoAnalyticsEvent.PromotionBannerClicked.BannerAction.Clicked(), ), ) } diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsOnrampTransactionStateConverter.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsOnrampTransactionStateConverter.kt index ec37185065..742e94dab2 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsOnrampTransactionStateConverter.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsOnrampTransactionStateConverter.kt @@ -83,9 +83,9 @@ internal class TokenDetailsOnrampTransactionStateConverter( fallbackResId = R.drawable.ic_currency_24, ), iconState = getIconState(value.status), - onGoToProviderClick = { - analyticsEventHandler.send(TokenOnrampAnalyticsEvent.GoToProvider) - clickIntents.onGoToProviderClick(it) + onGoToProviderClick = { url -> + analyticsEventHandler.send(TokenOnrampAnalyticsEvent.GoToProvider()) + clickIntents.onGoToProviderClick(url) }, onClick = { clickIntents.onExpressTransactionClick(value.txId) }, onDisposeExpressStatus = clickIntents::onConfirmDisposeExpressStatus, @@ -117,7 +117,7 @@ internal class TokenDetailsOnrampTransactionStateConverter( private fun onProviderClick(externalTxUrl: String?) = if (externalTxUrl != null) { { - analyticsEventHandler.send(TokenOnrampAnalyticsEvent.GoToProvider) + analyticsEventHandler.send(TokenOnrampAnalyticsEvent.GoToProvider()) clickIntents.onGoToProviderClick(externalTxUrl) } } else { @@ -269,7 +269,7 @@ internal class TokenDetailsOnrampTransactionStateConverter( icon = R.drawable.ic_arrow_top_right_24, text = resourceReference(R.string.common_go_to_provider), onClick = { - analyticsEventHandler.send(TokenOnrampAnalyticsEvent.GoToProvider) + analyticsEventHandler.send(TokenOnrampAnalyticsEvent.GoToProvider()) clickIntents.onGoToProviderClick(externalTxUrl) }, ) diff --git a/features/wallet-settings/impl/src/main/kotlin/com/tangem/feature/walletsettings/model/WalletSettingsModel.kt b/features/wallet-settings/impl/src/main/kotlin/com/tangem/feature/walletsettings/model/WalletSettingsModel.kt index a44d3ead1c..6b4d8784d1 100644 --- a/features/wallet-settings/impl/src/main/kotlin/com/tangem/feature/walletsettings/model/WalletSettingsModel.kt +++ b/features/wallet-settings/impl/src/main/kotlin/com/tangem/feature/walletsettings/model/WalletSettingsModel.kt @@ -220,7 +220,7 @@ internal class WalletSettingsModel @Inject constructor( }, onReferralClick = { onReferralClick(userWallet) }, onManageTokensClick = { - analyticsEventHandler.send(Settings.ButtonManageTokens) + analyticsEventHandler.send(Settings.ButtonManageTokens()) router.push( AppRoute.ManageTokens( source = Source.SETTINGS, diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/organizetokens/model/OrganizeTokensModel.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/organizetokens/model/OrganizeTokensModel.kt index 97057fd80e..fb310ec8be 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/organizetokens/model/OrganizeTokensModel.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/organizetokens/model/OrganizeTokensModel.kt @@ -95,7 +95,7 @@ internal class OrganizeTokensModel @Inject constructor( val onBack = MutableSharedFlow() init { - analyticsEventsHandler.send(PortfolioOrganizeTokensAnalyticsEvent.ScreenOpened) + analyticsEventsHandler.send(PortfolioOrganizeTokensAnalyticsEvent.ScreenOpened()) getBalanceHidingSettingsUseCase() .onEach { @@ -117,7 +117,7 @@ internal class OrganizeTokensModel @Inject constructor( val list = cachedAccountStatusList ?: return if (list.sortType == TokensSortType.BALANCE) return - analyticsEventsHandler.send(PortfolioOrganizeTokensAnalyticsEvent.ByBalance) + analyticsEventsHandler.send(PortfolioOrganizeTokensAnalyticsEvent.ByBalance()) modelScope.launch { toggleTokenListSortingUseCaseV2(list).fold( @@ -132,7 +132,7 @@ internal class OrganizeTokensModel @Inject constructor( val list = cachedTokenList ?: return if (list.sortedBy == TokensSortType.BALANCE) return - analyticsEventsHandler.send(PortfolioOrganizeTokensAnalyticsEvent.ByBalance) + analyticsEventsHandler.send(PortfolioOrganizeTokensAnalyticsEvent.ByBalance()) modelScope.launch { toggleTokenListSortingUseCase(list).fold( @@ -150,7 +150,7 @@ internal class OrganizeTokensModel @Inject constructor( if (accountsFeatureToggles.isFeatureEnabled) { val list = cachedAccountStatusList ?: return - analyticsEventsHandler.send(PortfolioOrganizeTokensAnalyticsEvent.Group) + analyticsEventsHandler.send(PortfolioOrganizeTokensAnalyticsEvent.Group()) modelScope.launch { toggleTokenListGroupingUseCaseV2(list).fold( @@ -164,7 +164,7 @@ internal class OrganizeTokensModel @Inject constructor( } else { val list = cachedTokenList ?: return - analyticsEventsHandler.send(PortfolioOrganizeTokensAnalyticsEvent.Group) + analyticsEventsHandler.send(PortfolioOrganizeTokensAnalyticsEvent.Group()) modelScope.launch { toggleTokenListGroupingUseCase(list).fold( @@ -228,7 +228,7 @@ internal class OrganizeTokensModel @Inject constructor( } override fun onCancelClick() { - analyticsEventsHandler.send(PortfolioOrganizeTokensAnalyticsEvent.Cancel) + analyticsEventsHandler.send(PortfolioOrganizeTokensAnalyticsEvent.Cancel()) modelScope.launch { onBack.emit(Unit) } } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/WalletModel.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/WalletModel.kt index 60d86ab17b..586ccfc586 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/WalletModel.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/WalletModel.kt @@ -118,7 +118,7 @@ internal class WalletModel @Inject constructor( init { if (!hotWalletFeatureToggles.isHotWalletEnabled) { - analyticsEventsHandler.send(WalletScreenAnalyticsEvent.MainScreen.ScreenOpenedLegacy) + analyticsEventsHandler.send(WalletScreenAnalyticsEvent.MainScreen.ScreenOpenedLegacy()) } suggestToOpenMarkets() diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/VisaWalletIntents.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/VisaWalletIntents.kt index 726ed11fa8..db28dc4b12 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/VisaWalletIntents.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/VisaWalletIntents.kt @@ -51,7 +51,7 @@ internal class VisaWalletIntentsImplementor @Inject constructor( } override fun onBalancesAndLimitsClick() { - analyticsEventHandler.send(MainScreenAnalyticsEvent.LimitsClicked) + analyticsEventHandler.send(MainScreenAnalyticsEvent.LimitsClicked()) modelScope.launch(dispatchers.main) { val userWalletId = stateController.getSelectedWalletId() val balancesAndLimits = getVisaCurrencyUseCase(userWalletId) @@ -92,7 +92,7 @@ internal class VisaWalletIntentsImplementor @Inject constructor( } override fun onExploreClick(exploreUrl: String) { - analyticsEventHandler.send(MainScreenAnalyticsEvent.ButtonExplore) + analyticsEventHandler.send(MainScreenAnalyticsEvent.ButtonExplore()) router.openUrl(exploreUrl) } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletCardClickIntents.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletCardClickIntents.kt index 466f15890e..ba738c15b9 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletCardClickIntents.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletCardClickIntents.kt @@ -54,7 +54,7 @@ internal class WalletCardClickIntentsImplementor @Inject constructor( ) : BaseWalletClickIntents(), WalletCardClickIntents { override fun onRenameBeforeConfirmationClick(userWalletId: UserWalletId) { - analyticsEventHandler.send(MainScreen.EditWalletTapped) + analyticsEventHandler.send(MainScreen.EditWalletTapped()) router.dialogNavigation.activate( configuration = WalletDialogConfig.RenameWallet( @@ -65,7 +65,7 @@ internal class WalletCardClickIntentsImplementor @Inject constructor( } override fun onDeleteBeforeConfirmationClick(userWalletId: UserWalletId) { - analyticsEventHandler.send(MainScreen.DeleteWalletTapped) + analyticsEventHandler.send(MainScreen.DeleteWalletTapped()) walletEventSender.send( event = WalletEvent.ShowAlert( diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletWarningsClickIntents.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletWarningsClickIntents.kt index 23a5a6ea50..7f79c77cb4 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletWarningsClickIntents.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletWarningsClickIntents.kt @@ -141,7 +141,7 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( ) : BaseWalletClickIntents(), WalletWarningsClickIntents { override fun onAddBackupCardClick() { - analyticsEventHandler.send(MainScreen.NoticeBackupYourWalletTapped) + analyticsEventHandler.send(MainScreen.NoticeBackupYourWalletTapped()) prepareAndStartOnboardingProcess() } @@ -169,7 +169,7 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( override fun onGenerateMissedAddressesClick(missedAddressCurrencies: List) { analyticsEventHandler.send(Basic.CardWasScanned(AnalyticsParam.ScreensSources.Main)) - analyticsEventHandler.send(MainScreen.NoticeScanYourCardTapped) + analyticsEventHandler.send(MainScreen.NoticeScanYourCardTapped()) modelScope.launch { val userWallet = getSelectedUserWallet() ?: return@launch @@ -187,7 +187,7 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( } override fun onOpenUnlockWalletsBottomSheetClick() { - analyticsEventHandler.send(MainScreen.WalletUnlockTapped) + analyticsEventHandler.send(MainScreen.WalletUnlockTapped()) if (hotWalletFeatureToggles.isHotWalletEnabled) { modelScope.launch { @@ -218,7 +218,7 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( @Deprecated("Will be removed with hot wallet release") override fun onUnlockWalletClick() { - analyticsEventHandler.send(MainScreen.UnlockAllWithBiometrics) + analyticsEventHandler.send(MainScreen.UnlockAllWithBiometrics()) modelScope.launch(dispatchers.main) { unlockWalletsUseCase(type = UnlockType.ALL_WITHOUT_SELECT) @@ -246,7 +246,7 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( @Deprecated("Will be removed with hot wallet release") override fun onScanToUnlockWalletClick() { - analyticsEventHandler.send(MainScreen.UnlockWithCardScan) + analyticsEventHandler.send(MainScreen.UnlockWithCardScan()) openScanCardDialog() } @@ -304,17 +304,17 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( override fun onClosePromoClick(promoId: PromoId) { analyticsEventHandler.send( when (promoId) { - PromoId.Referral -> MainScreen.ReferralPromoButtonDismiss + PromoId.Referral -> MainScreen.ReferralPromoButtonDismiss() PromoId.Sepa -> PromotionBannerClicked( source = AnalyticsParam.ScreensSources.Main, program = Program.Sepa, - action = PromotionBannerClicked.BannerAction.Closed, + action = PromotionBannerClicked.BannerAction.Closed(), ) - PromoId.VisaPresale -> PromoAnalyticsEvent.VisaWaitlistPromoDismiss + PromoId.VisaPresale -> PromoAnalyticsEvent.VisaWaitlistPromoDismiss() PromoId.BlackFriday -> PromotionBannerClicked( source = AnalyticsParam.ScreensSources.Main, program = Program.BlackFriday, - action = PromotionBannerClicked.BannerAction.Closed, + action = PromotionBannerClicked.BannerAction.Closed(), ) }, @@ -328,7 +328,7 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( val userWallet = getSelectedUserWallet() ?: return when (promoId) { PromoId.Referral -> { - analyticsEventHandler.send(MainScreen.ReferralPromoButtonParticipate) + analyticsEventHandler.send(MainScreen.ReferralPromoButtonParticipate()) appRouter.push(ReferralProgram(userWalletId = userWallet.walletId)) } PromoId.Sepa -> { @@ -336,7 +336,7 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( PromotionBannerClicked( source = AnalyticsParam.ScreensSources.Main, program = Program.Sepa, - action = PromotionBannerClicked.BannerAction.Clicked, + action = PromotionBannerClicked.BannerAction.Clicked(), ), ) cryptoCurrency ?: return @@ -350,7 +350,7 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( ) } PromoId.VisaPresale -> { - analyticsEventHandler.send(PromoAnalyticsEvent.VisaWaitlistPromoJoin) + analyticsEventHandler.send(PromoAnalyticsEvent.VisaWaitlistPromoJoin()) urlOpener.openUrl(VISA_PROMO_LINK) } PromoId.BlackFriday -> { @@ -358,7 +358,7 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( PromotionBannerClicked( source = AnalyticsParam.ScreensSources.Main, program = Program.BlackFriday, - action = PromotionBannerClicked.BannerAction.Clicked, + action = PromotionBannerClicked.BannerAction.Clicked(), ), ) urlOpener.openUrl(BLACK_FRIDAY_PROMO_LINK) @@ -376,7 +376,7 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( } override fun onNoteMigrationButtonClick(url: String) { - analyticsEventHandler.send(MainScreen.NotePromoButton) + analyticsEventHandler.send(MainScreen.NotePromoButton()) modelScope.launch(dispatchers.main) { router.openUrl(url) } @@ -385,7 +385,7 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( override fun onSeedPhraseNotificationConfirm() { val userWallet = getSelectedUserWallet() ?: return - analyticsEventHandler.send(MainScreen.NoticeSeedPhraseSupportButtonYes) + analyticsEventHandler.send(MainScreen.NoticeSeedPhraseSupportButtonYes()) walletEventSender.send( event = WalletEvent.ShowAlert( @@ -408,7 +408,7 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( override fun onSeedPhraseNotificationDecline() { val userWallet = getSelectedUserWallet() ?: return - analyticsEventHandler.send(MainScreen.NoticeSeedPhraseSupportButtonNo) + analyticsEventHandler.send(MainScreen.NoticeSeedPhraseSupportButtonNo()) walletEventSender.send( event = WalletEvent.ShowAlert( @@ -427,7 +427,7 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( override fun onSeedPhraseSecondNotificationAccept() { val userWallet = getSelectedUserWallet() ?: return - analyticsEventHandler.send(MainScreen.NoticeSeedPhraseSupportButtonUsed) + analyticsEventHandler.send(MainScreen.NoticeSeedPhraseSupportButtonUsed()) walletEventSender.send( event = WalletEvent.ShowAlert( @@ -450,7 +450,7 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( override fun onSeedPhraseSecondNotificationReject() { val userWallet = getSelectedUserWallet() ?: return - analyticsEventHandler.send(MainScreen.NoticeSeedPhraseSupportButtonDeclined) + analyticsEventHandler.send(MainScreen.NoticeSeedPhraseSupportButtonDeclined()) modelScope.launch { seedPhraseNotificationUseCase.rejectSecond(userWalletId = userWallet.walletId) @@ -458,13 +458,13 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( } override fun onFinishWalletActivationClick(isBackupExists: Boolean) { - analyticsEventHandler.send(MainScreen.ButtonFinalizeActivation) + analyticsEventHandler.send(MainScreen.ButtonFinalizeActivation()) val userWalletId = stateHolder.getSelectedWalletId() appRouter.push(WalletActivation(userWalletId, isBackupExists)) } override fun onAllowPermissions() { - analyticsEventHandler.send(WalletScreenAnalyticsEvent.PushBannerPromo.ButtonAllowPush) + analyticsEventHandler.send(WalletScreenAnalyticsEvent.PushBannerPromo.ButtonAllowPush()) walletEventSender.send( event = WalletEvent.RequestPushPermissions( onAllow = { @@ -490,7 +490,7 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( override fun onDenyPermissions() { modelScope.launch { - analyticsEventHandler.send(WalletScreenAnalyticsEvent.PushBannerPromo.ButtonLaterPush) + analyticsEventHandler.send(WalletScreenAnalyticsEvent.PushBannerPromo.ButtonLaterPush()) updateSubscribeOnPushPermissions(false) } } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/deeplink/DefaultPromoDeeplinkHandler.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/deeplink/DefaultPromoDeeplinkHandler.kt index e7f0ce0a1f..5c151cb3ef 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/deeplink/DefaultPromoDeeplinkHandler.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/deeplink/DefaultPromoDeeplinkHandler.kt @@ -49,7 +49,7 @@ internal class DefaultPromoDeeplinkHandler @AssistedInject constructor( ) : PromoDeeplinkHandler { init { - analyticsEventsHandler.send(PromoActivationAnalytics.PromoDeepLinkActivationStart) + analyticsEventsHandler.send(PromoActivationAnalytics.PromoDeepLinkActivationStart()) val promoCode = queryParams[PROMO_CODE_KEY].orEmpty() if (promoCode.isEmpty()) { showAlert(InvalidPromoCode) diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/deeplink/analytics/PromoActivationAnalytics.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/deeplink/analytics/PromoActivationAnalytics.kt index bd1bbc7dcc..ff1f1e2c1f 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/deeplink/analytics/PromoActivationAnalytics.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/deeplink/analytics/PromoActivationAnalytics.kt @@ -8,7 +8,7 @@ sealed class PromoActivationAnalytics( params: Map = mapOf(), ) : AnalyticsEvent(category = "Promotion", event = event, params = params) { - data object PromoDeepLinkActivationStart : PromoActivationAnalytics( + class PromoDeepLinkActivationStart : PromoActivationAnalytics( event = "Bitcoin Promo Deep Link Activation", params = emptyMap(), ) diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/analytics/PortfolioOrganizeTokensAnalyticsEvent.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/analytics/PortfolioOrganizeTokensAnalyticsEvent.kt index 4d5ccf9b2c..a0c96c2974 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/analytics/PortfolioOrganizeTokensAnalyticsEvent.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/analytics/PortfolioOrganizeTokensAnalyticsEvent.kt @@ -8,11 +8,11 @@ sealed class PortfolioOrganizeTokensAnalyticsEvent( params: Map = mapOf(), ) : AnalyticsEvent("Portfolio / Organize Tokens", event, params) { - object ScreenOpened : PortfolioOrganizeTokensAnalyticsEvent("Organize Tokens Screen Opened") + class ScreenOpened : PortfolioOrganizeTokensAnalyticsEvent("Organize Tokens Screen Opened") - object ByBalance : PortfolioOrganizeTokensAnalyticsEvent("Button - By Balance") + class ByBalance : PortfolioOrganizeTokensAnalyticsEvent("Button - By Balance") - object Group : PortfolioOrganizeTokensAnalyticsEvent("Button - Group") + class Group : PortfolioOrganizeTokensAnalyticsEvent("Button - Group") class Apply( grouping: AnalyticsParam.OnOffState, @@ -25,5 +25,5 @@ sealed class PortfolioOrganizeTokensAnalyticsEvent( ), ) - object Cancel : PortfolioOrganizeTokensAnalyticsEvent("Button - Cancel") + class Cancel : PortfolioOrganizeTokensAnalyticsEvent("Button - Cancel") } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/WalletScreenAnalyticsEvent.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/WalletScreenAnalyticsEvent.kt index 00a748830b..bdd61799ba 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/WalletScreenAnalyticsEvent.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/WalletScreenAnalyticsEvent.kt @@ -51,7 +51,7 @@ sealed class WalletScreenAnalyticsEvent { params: Map = mapOf(), ) : AnalyticsEvent(category = "Main Screen", event = event, params = params) { - data object ScreenOpenedLegacy : MainScreen( + class ScreenOpenedLegacy : MainScreen( event = "Screen opened", ) @@ -72,7 +72,7 @@ sealed class WalletScreenAnalyticsEvent { } } - data object ButtonFinalizeActivation : MainScreen( + class ButtonFinalizeActivation : MainScreen( event = "Button - Finalize Activation", ) @@ -93,9 +93,9 @@ sealed class WalletScreenAnalyticsEvent { params = mapOf("Result" to result.value), ) - data object NoticeBackupYourWalletTapped : MainScreen(event = "Notice - Backup Your Wallet Tapped") - data object NoticeScanYourCardTapped : MainScreen(event = "Notice - Scan Your Card Tapped") - data object WalletUnlockTapped : MainScreen(event = "Notice - Wallet Unlock Tapped") + class NoticeBackupYourWalletTapped : MainScreen(event = "Notice - Backup Your Wallet Tapped") + class NoticeScanYourCardTapped : MainScreen(event = "Notice - Scan Your Card Tapped") + class WalletUnlockTapped : MainScreen(event = "Notice - Wallet Unlock Tapped") class NetworksUnreachable( tokens: List, @@ -104,54 +104,54 @@ sealed class WalletScreenAnalyticsEvent { params = mapOf("Tokens" to tokens.joinToString()), ) - data object MissingAddresses : MainScreen(event = "Notice - Missing Addresses") + class MissingAddresses : MainScreen(event = "Notice - Missing Addresses") - data object CardSignedTransactions : MainScreen(event = "Notice - Card Signed Transactions") + class CardSignedTransactions : MainScreen(event = "Notice - Card Signed Transactions") - data object HowDoYouLikeTangem : MainScreen(event = "Notice - How Do You Like Tangem") + class HowDoYouLikeTangem : MainScreen(event = "Notice - How Do You Like Tangem") - data object ProductSampleCard : MainScreen(event = "Notice - Product Sample Card") + class ProductSampleCard : MainScreen(event = "Notice - Product Sample Card") - data object TestnetCard : MainScreen(event = "Notice - Testnet Card") + class TestnetCard : MainScreen(event = "Notice - Testnet Card") - data object DemoCard : MainScreen(event = "Notice - Demo Card") + class DemoCard : MainScreen(event = "Notice - Demo Card") - data object DevelopmentCard : MainScreen(event = "Notice - Development Card") + class DevelopmentCard : MainScreen(event = "Notice - Development Card") - data object WalletUnlock : MainScreen(event = "Notice - Wallet Unlock") + class WalletUnlock : MainScreen(event = "Notice - Wallet Unlock") - data object BackupYourWallet : MainScreen(event = "Notice - Backup Your Wallet") + class BackupYourWallet : MainScreen(event = "Notice - Backup Your Wallet") - data object BackupError : MainScreen(event = "Notice - Backup Error") + class BackupError : MainScreen(event = "Notice - Backup Error") - data object NotePromo : MainScreen(event = "Notice - Note Promo") + class NotePromo : MainScreen(event = "Notice - Note Promo") - data object NotePromoButton : MainScreen(event = "Note Promo Button") + class NotePromoButton : MainScreen(event = "Note Promo Button") - data object UnlockAllWithBiometrics : MainScreen(event = "Button - Unlock All With Biometrics") + class UnlockAllWithBiometrics : MainScreen(event = "Button - Unlock All With Biometrics") - data object UnlockWithCardScan : MainScreen(event = "Button - Unlock With Card Scan") + class UnlockWithCardScan : MainScreen(event = "Button - Unlock With Card Scan") - data object EditWalletTapped : MainScreen(event = "Button - Edit Wallet Tapped") + class EditWalletTapped : MainScreen(event = "Button - Edit Wallet Tapped") - data object DeleteWalletTapped : MainScreen(event = "Button - Delete Wallet Tapped") + class DeleteWalletTapped : MainScreen(event = "Button - Delete Wallet Tapped") - data object NoticeSeedPhraseSupport : MainScreen(event = "Notice - Seed Phrase Support") + class NoticeSeedPhraseSupport : MainScreen(event = "Notice - Seed Phrase Support") - data object NoticeSeedPhraseSupportSecond : MainScreen(event = "Notice - Seed Phrase Support2") + class NoticeSeedPhraseSupportSecond : MainScreen(event = "Notice - Seed Phrase Support2") - data object NoticeSeedPhraseSupportButtonNo : MainScreen(event = "Button - Support No") + class NoticeSeedPhraseSupportButtonNo : MainScreen(event = "Button - Support No") - data object NoticeSeedPhraseSupportButtonYes : MainScreen(event = "Button - Support Yes") + class NoticeSeedPhraseSupportButtonYes : MainScreen(event = "Button - Support Yes") - data object NoticeSeedPhraseSupportButtonUsed : MainScreen(event = "Button - Support Used") + class NoticeSeedPhraseSupportButtonUsed : MainScreen(event = "Button - Support Used") - data object NoticeSeedPhraseSupportButtonDeclined : MainScreen(event = "Button - Support Declined") + class NoticeSeedPhraseSupportButtonDeclined : MainScreen(event = "Button - Support Declined") // region Referral Promo - data object ReferralPromo : MainScreen(event = "Referral Banner") - data object ReferralPromoButtonParticipate : MainScreen(event = "Button - Referral Participate") - data object ReferralPromoButtonDismiss : MainScreen(event = "Button - Referral Dismiss") + class ReferralPromo : MainScreen(event = "Referral Banner") + class ReferralPromoButtonParticipate : MainScreen(event = "Button - Referral Participate") + class ReferralPromoButtonDismiss : MainScreen(event = "Button - Referral Dismiss") //endregion } @@ -160,8 +160,8 @@ sealed class WalletScreenAnalyticsEvent { params: Map = mapOf(), ) : AnalyticsEvent(category = "Promo", event = event, params = params) { - data object PushBanner : PushBannerPromo(event = "Push Banner") - data object ButtonAllowPush : PushBannerPromo(event = "Button - Allow Push") - data object ButtonLaterPush : PushBannerPromo(event = "Button - Later Push") + class PushBanner : PushBannerPromo(event = "Push Banner") + class ButtonAllowPush : PushBannerPromo(event = "Button - Allow Push") + class ButtonLaterPush : PushBannerPromo(event = "Button - Later Push") } } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/utils/SelectedWalletAnalyticsSender.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/utils/SelectedWalletAnalyticsSender.kt index 90e94e979a..ad5cc6aa22 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/utils/SelectedWalletAnalyticsSender.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/utils/SelectedWalletAnalyticsSender.kt @@ -28,7 +28,7 @@ internal class SelectedWalletAnalyticsSender @Inject constructor( * that cannot be processed in [WalletWarningsAnalyticsSender]. * */ private fun getEvent(userWallet: UserWallet): AnalyticsEvent? = when { - userWallet.isLocked -> WalletScreenAnalyticsEvent.MainScreen.WalletUnlock + userWallet.isLocked -> WalletScreenAnalyticsEvent.MainScreen.WalletUnlock() else -> WalletScreenAnalyticsEvent.MainScreen.WalletSelected(userWallet.isImported()) } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/utils/WalletTangemPayAnalyticsEventSender.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/utils/WalletTangemPayAnalyticsEventSender.kt index ff945a2974..6c1b1a5176 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/utils/WalletTangemPayAnalyticsEventSender.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/utils/WalletTangemPayAnalyticsEventSender.kt @@ -27,8 +27,8 @@ internal class WalletTangemPayAnalyticsEventSender @Inject constructor( val event = when { customerInfo.orderStatus == OrderStatus.CANCELED -> return // ignore cancelled state on analytics !customerInfo.info.isKycApproved -> return // ignore kyc not approved state on analytics - cardInfo != null && productInstance != null -> TangemPayAnalyticsEvents.MainScreenOpened - else -> TangemPayAnalyticsEvents.IssuingBannerDisplayed + cardInfo != null && productInstance != null -> TangemPayAnalyticsEvents.MainScreenOpened() + else -> TangemPayAnalyticsEvents.IssuingBannerDisplayed() } if (sentEvents.add(event)) { diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/utils/WalletWarningsAnalyticsSender.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/utils/WalletWarningsAnalyticsSender.kt index de9c90b20e..66ad6e1bd0 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/utils/WalletWarningsAnalyticsSender.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/utils/WalletWarningsAnalyticsSender.kt @@ -39,16 +39,16 @@ internal class WalletWarningsAnalyticsSender @Inject constructor( @Suppress("CyclomaticComplexMethod") private fun getEvent(warning: WalletNotification): AnalyticsEvent? { return when (warning) { - is WalletNotification.Critical.DevCard -> MainScreen.DevelopmentCard - is WalletNotification.Critical.FailedCardValidation -> MainScreen.ProductSampleCard - is WalletNotification.Warning.MissingBackup -> MainScreen.BackupYourWallet - is WalletNotification.Warning.NumberOfSignedHashesIncorrect -> MainScreen.CardSignedTransactions - is WalletNotification.Warning.TestNetCard -> MainScreen.TestnetCard - is WalletNotification.Informational.DemoCard -> MainScreen.DemoCard - is WalletNotification.Informational.MissingAddresses -> MainScreen.MissingAddresses - is WalletNotification.RateApp -> MainScreen.HowDoYouLikeTangem - is WalletNotification.Critical.BackupError -> MainScreen.BackupError - is WalletNotification.NoteMigration -> MainScreen.NotePromo + is WalletNotification.Critical.DevCard -> MainScreen.DevelopmentCard() + is WalletNotification.Critical.FailedCardValidation -> MainScreen.ProductSampleCard() + is WalletNotification.Warning.MissingBackup -> MainScreen.BackupYourWallet() + is WalletNotification.Warning.NumberOfSignedHashesIncorrect -> MainScreen.CardSignedTransactions() + is WalletNotification.Warning.TestNetCard -> MainScreen.TestnetCard() + is WalletNotification.Informational.DemoCard -> MainScreen.DemoCard() + is WalletNotification.Informational.MissingAddresses -> MainScreen.MissingAddresses() + is WalletNotification.RateApp -> MainScreen.HowDoYouLikeTangem() + is WalletNotification.Critical.BackupError -> MainScreen.BackupError() + is WalletNotification.NoteMigration -> MainScreen.NotePromo() is WalletNotification.SwapPromo -> NoticePromotionBanner( source = AnalyticsParam.ScreensSources.Main, program = Program.Empty, // Use it on new promo action @@ -61,8 +61,8 @@ internal class WalletWarningsAnalyticsSender @Inject constructor( source = AnalyticsParam.ScreensSources.Main, program = Program.BlackFriday, ) - is WalletNotification.ReferralPromo -> MainScreen.ReferralPromo - is WalletNotification.VisaPresalePromo -> VisaWaitlistPromo + is WalletNotification.ReferralPromo -> MainScreen.ReferralPromo() + is WalletNotification.VisaPresalePromo -> VisaWaitlistPromo() is WalletNotification.UnlockWallets -> null // See [SelectedWalletAnalyticsSender] is WalletNotification.Informational.NoAccount, is WalletNotification.Warning.LowSignatures, @@ -80,9 +80,9 @@ internal class WalletWarningsAnalyticsSender @Inject constructor( } MainScreen.NoticeFinishActivation(activationState) } - is WalletNotification.Critical.SeedPhraseNotification -> MainScreen.NoticeSeedPhraseSupport - is WalletNotification.Critical.SeedPhraseSecondNotification -> MainScreen.NoticeSeedPhraseSupportSecond - is WalletNotification.PushNotifications -> WalletScreenAnalyticsEvent.PushBannerPromo.PushBanner + is WalletNotification.Critical.SeedPhraseNotification -> MainScreen.NoticeSeedPhraseSupport() + is WalletNotification.Critical.SeedPhraseSecondNotification -> MainScreen.NoticeSeedPhraseSupportSecond() + is WalletNotification.PushNotifications -> WalletScreenAnalyticsEvent.PushBannerPromo.PushBanner() is WalletNotification.Warning.TangemPayRefreshNeeded -> null WalletNotification.Warning.TangemPayUnreachable -> null } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/SetVisaInfoTransformer.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/SetVisaInfoTransformer.kt index 7ea7a4d42a..9e11d7cd7e 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/SetVisaInfoTransformer.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/SetVisaInfoTransformer.kt @@ -154,7 +154,7 @@ internal class SetVisaInfoTransformer( clickIntents.onReceiveClick( userWalletId = userWalletId, cryptoCurrencyStatus = cryptoCurrencyStatus, - event = MainScreenAnalyticsEvent.ButtonReceive, + event = MainScreenAnalyticsEvent.ButtonReceive(), ) }, onLongClick = { diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/BalancesAndLimitsBottomSheetConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/BalancesAndLimitsBottomSheetConverter.kt index eb2e240d23..4a2af49f86 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/BalancesAndLimitsBottomSheetConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/BalancesAndLimitsBottomSheetConverter.kt @@ -44,12 +44,12 @@ internal class BalancesAndLimitsBottomSheetConverter( } private fun balanceInfoOnClick() { - analyticsEventHandler.send(MainScreenAnalyticsEvent.NoticeBalancesInfo) + analyticsEventHandler.send(MainScreenAnalyticsEvent.NoticeBalancesInfo()) eventSender.send(WalletEvent.ShowAlert(WalletAlertState.VisaBalancesInfo)) } private fun limitInfoOnClick(totalLimit: String, otherLimit: String) { - analyticsEventHandler.send(MainScreenAnalyticsEvent.NoticeLimitsInfo) + analyticsEventHandler.send(MainScreenAnalyticsEvent.NoticeLimitsInfo()) eventSender.send(WalletEvent.ShowAlert(WalletAlertState.VisaLimitsInfo(totalLimit, otherLimit))) } } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/SingleWalletOnrampTransactionConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/SingleWalletOnrampTransactionConverter.kt index 73813e73d3..3df7db2bb6 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/SingleWalletOnrampTransactionConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/SingleWalletOnrampTransactionConverter.kt @@ -82,9 +82,9 @@ internal class SingleWalletOnrampTransactionConverter( fallbackResId = R.drawable.ic_currency_24, ), iconState = getIconState(value.status), - onGoToProviderClick = { - analyticsEventHandler.send(TokenOnrampAnalyticsEvent.GoToProvider) - clickIntents.onGoToProviderClick(it) + onGoToProviderClick = { url -> + analyticsEventHandler.send(TokenOnrampAnalyticsEvent.GoToProvider()) + clickIntents.onGoToProviderClick(url) }, onDisposeExpressStatus = clickIntents::onConfirmDisposeExpressStatus, onClick = { diff --git a/features/wallet/impl/src/test/kotlin/com/tangem/feature/wallet/presentation/wallet/deeplink/DefaultPromoDeeplinkHandlerTest.kt b/features/wallet/impl/src/test/kotlin/com/tangem/feature/wallet/presentation/wallet/deeplink/DefaultPromoDeeplinkHandlerTest.kt index e4fde45099..b6844fd970 100644 --- a/features/wallet/impl/src/test/kotlin/com/tangem/feature/wallet/presentation/wallet/deeplink/DefaultPromoDeeplinkHandlerTest.kt +++ b/features/wallet/impl/src/test/kotlin/com/tangem/feature/wallet/presentation/wallet/deeplink/DefaultPromoDeeplinkHandlerTest.kt @@ -115,7 +115,9 @@ class DefaultPromoDeeplinkHandlerTest { Truth.assertThat(sent.title).isEqualTo(resourceReference(R.string.bitcoin_promo_activation_success_title)) Truth.assertThat(sent.message).isEqualTo(resourceReference(R.string.bitcoin_promo_activation_success)) - verify(exactly = 1) { analyticsEventHandler.send(PromoActivationAnalytics.PromoDeepLinkActivationStart) } + verify( + exactly = 1, + ) { analyticsEventHandler.send(ofType()) } verify(exactly = 1) { analyticsEventHandler.send( PromoActivationAnalytics.PromoActivation(PromoCodeActivationResult.Activated), @@ -143,7 +145,9 @@ class DefaultPromoDeeplinkHandlerTest { Truth.assertThat(sent.title).isEqualTo(resourceReference(R.string.bitcoin_promo_invalid_code_title)) Truth.assertThat(sent.message).isEqualTo(resourceReference(R.string.bitcoin_promo_invalid_code)) - verify(exactly = 1) { analyticsEventHandler.send(PromoActivationAnalytics.PromoDeepLinkActivationStart) } + verify( + exactly = 1, + ) { analyticsEventHandler.send(ofType()) } verify(exactly = 1) { analyticsEventHandler.send( PromoActivationAnalytics.PromoActivation(PromoCodeActivationResult.InvalidPromoCode), @@ -172,7 +176,9 @@ class DefaultPromoDeeplinkHandlerTest { Truth.assertThat(sent.title).isEqualTo(resourceReference(R.string.bitcoin_promo_activation_error_title)) Truth.assertThat(sent.message).isEqualTo(resourceReference(R.string.bitcoin_promo_activation_error)) - verify(exactly = 1) { analyticsEventHandler.send(PromoActivationAnalytics.PromoDeepLinkActivationStart) } + verify( + exactly = 1, + ) { analyticsEventHandler.send(ofType()) } verify(exactly = 1) { analyticsEventHandler.send( PromoActivationAnalytics.PromoActivation(PromoCodeActivationResult.Failed), @@ -209,7 +215,9 @@ class DefaultPromoDeeplinkHandlerTest { Truth.assertThat(sent.title).isEqualTo(resourceReference(R.string.bitcoin_promo_no_address_title)) Truth.assertThat(sent.message).isEqualTo(resourceReference(R.string.bitcoin_promo_no_address)) - verify(exactly = 1) { analyticsEventHandler.send(PromoActivationAnalytics.PromoDeepLinkActivationStart) } + verify( + exactly = 1, + ) { analyticsEventHandler.send(ofType()) } verify(exactly = 1) { analyticsEventHandler.send( PromoActivationAnalytics.PromoActivation(PromoCodeActivationResult.NoBitcoinAddress), @@ -248,7 +256,9 @@ class DefaultPromoDeeplinkHandlerTest { Truth.assertThat(sent.title).isEqualTo(resourceReference(R.string.bitcoin_promo_activation_success_title)) Truth.assertThat(sent.message).isEqualTo(resourceReference(R.string.bitcoin_promo_activation_success)) - verify(exactly = 1) { analyticsEventHandler.send(PromoActivationAnalytics.PromoDeepLinkActivationStart) } + verify( + exactly = 1, + ) { analyticsEventHandler.send(ofType()) } verify(exactly = 1) { analyticsEventHandler.send( PromoActivationAnalytics.PromoActivation(PromoCodeActivationResult.Activated), @@ -264,7 +274,9 @@ class DefaultPromoDeeplinkHandlerTest { expectedMessage = resourceReference(R.string.bitcoin_promo_invalid_code), ) - verify(exactly = 1) { analyticsEventHandler.send(PromoActivationAnalytics.PromoDeepLinkActivationStart) } + verify( + exactly = 1, + ) { analyticsEventHandler.send(ofType()) } verify(exactly = 1) { analyticsEventHandler.send( PromoActivationAnalytics.PromoActivation(PromoCodeActivationResult.InvalidPromoCode), @@ -280,7 +292,9 @@ class DefaultPromoDeeplinkHandlerTest { expectedMessage = resourceReference(R.string.bitcoin_promo_activation_error), ) - verify(exactly = 1) { analyticsEventHandler.send(PromoActivationAnalytics.PromoDeepLinkActivationStart) } + verify( + exactly = 1, + ) { analyticsEventHandler.send(ofType()) } verify(exactly = 1) { analyticsEventHandler.send( PromoActivationAnalytics.PromoActivation(PromoCodeActivationResult.Failed), @@ -296,7 +310,9 @@ class DefaultPromoDeeplinkHandlerTest { expectedMessage = resourceReference(R.string.bitcoin_promo_no_address), ) - verify(exactly = 1) { analyticsEventHandler.send(PromoActivationAnalytics.PromoDeepLinkActivationStart) } + verify( + exactly = 1, + ) { analyticsEventHandler.send(ofType()) } verify(exactly = 1) { analyticsEventHandler.send( PromoActivationAnalytics.PromoActivation(PromoCodeActivationResult.NoBitcoinAddress), @@ -312,7 +328,9 @@ class DefaultPromoDeeplinkHandlerTest { expectedMessage = resourceReference(R.string.bitcoin_promo_already_activated), ) - verify(exactly = 1) { analyticsEventHandler.send(PromoActivationAnalytics.PromoDeepLinkActivationStart) } + verify( + exactly = 1, + ) { analyticsEventHandler.send(ofType()) } verify(exactly = 1) { analyticsEventHandler.send( PromoActivationAnalytics.PromoActivation(PromoCodeActivationResult.PromoCodeAlreadyUsed), @@ -425,7 +443,9 @@ class DefaultPromoDeeplinkHandlerTest { Truth.assertThat(sent.title).isEqualTo(resourceReference(R.string.bitcoin_promo_no_address_title)) Truth.assertThat(sent.message).isEqualTo(resourceReference(R.string.bitcoin_promo_no_address)) - verify(exactly = 1) { analyticsEventHandler.send(PromoActivationAnalytics.PromoDeepLinkActivationStart) } + verify( + exactly = 1, + ) { analyticsEventHandler.send(ofType()) } verify(exactly = 1) { analyticsEventHandler.send( PromoActivationAnalytics.PromoActivation(PromoCodeActivationResult.NoBitcoinAddress), @@ -539,7 +559,9 @@ class DefaultPromoDeeplinkHandlerTest { coVerify(exactly = 1) { activateBitcoinPromocodeUseCase.invoke("bc1qcard", promoCode) } coVerify(exactly = 0) { activateBitcoinPromocodeUseCase.invoke("bc1qcustom", promoCode) } - verify(exactly = 1) { analyticsEventHandler.send(PromoActivationAnalytics.PromoDeepLinkActivationStart) } + verify( + exactly = 1, + ) { analyticsEventHandler.send(ofType()) } verify(exactly = 1) { analyticsEventHandler.send( PromoActivationAnalytics.PromoActivation(PromoCodeActivationResult.Activated), @@ -594,7 +616,9 @@ class DefaultPromoDeeplinkHandlerTest { coVerify(exactly = 0) { activateBitcoinPromocodeUseCase.invoke(any(), any()) } - verify(exactly = 1) { analyticsEventHandler.send(PromoActivationAnalytics.PromoDeepLinkActivationStart) } + verify( + exactly = 1, + ) { analyticsEventHandler.send(ofType()) } verify(exactly = 1) { analyticsEventHandler.send( PromoActivationAnalytics.PromoActivation(PromoCodeActivationResult.NoBitcoinAddress), @@ -649,7 +673,9 @@ class DefaultPromoDeeplinkHandlerTest { coVerify(exactly = 0) { activateBitcoinPromocodeUseCase.invoke(any(), any()) } - verify(exactly = 1) { analyticsEventHandler.send(PromoActivationAnalytics.PromoDeepLinkActivationStart) } + verify( + exactly = 1, + ) { analyticsEventHandler.send(ofType()) } verify(exactly = 1) { analyticsEventHandler.send( PromoActivationAnalytics.PromoActivation(PromoCodeActivationResult.NoBitcoinAddress), @@ -700,7 +726,9 @@ class DefaultPromoDeeplinkHandlerTest { coVerify(exactly = 0) { activateBitcoinPromocodeUseCase.invoke(any(), any()) } - verify(exactly = 1) { analyticsEventHandler.send(PromoActivationAnalytics.PromoDeepLinkActivationStart) } + verify( + exactly = 1, + ) { analyticsEventHandler.send(ofType()) } verify(exactly = 1) { analyticsEventHandler.send( PromoActivationAnalytics.PromoActivation(PromoCodeActivationResult.NoBitcoinAddress), @@ -751,7 +779,9 @@ class DefaultPromoDeeplinkHandlerTest { coVerify(exactly = 0) { activateBitcoinPromocodeUseCase.invoke(any(), any()) } - verify(exactly = 1) { analyticsEventHandler.send(PromoActivationAnalytics.PromoDeepLinkActivationStart) } + verify( + exactly = 1, + ) { analyticsEventHandler.send(ofType()) } verify(exactly = 1) { analyticsEventHandler.send( PromoActivationAnalytics.PromoActivation(PromoCodeActivationResult.NoBitcoinAddress), diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/model/WcConnectionsModel.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/model/WcConnectionsModel.kt index fc0d38f971..57298f9b5d 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/model/WcConnectionsModel.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/model/WcConnectionsModel.kt @@ -68,7 +68,7 @@ internal class WcConnectionsModel @Inject constructor( val bottomSheetNavigation: SlotNavigation = SlotNavigation() init { - analytics.send(WcAnalyticEvents.ScreenOpened) + analytics.send(WcAnalyticEvents.ScreenOpened()) listenQrUpdates() if (accountsFeatureToggles.isFeatureEnabled) { listenWcSessions() diff --git a/features/yield-supply/api/src/main/java/com/tangem/features/yield/supply/api/analytics/YieldSupplyAnalytics.kt b/features/yield-supply/api/src/main/java/com/tangem/features/yield/supply/api/analytics/YieldSupplyAnalytics.kt index 37b00d61b2..0b1c498d8d 100644 --- a/features/yield-supply/api/src/main/java/com/tangem/features/yield/supply/api/analytics/YieldSupplyAnalytics.kt +++ b/features/yield-supply/api/src/main/java/com/tangem/features/yield/supply/api/analytics/YieldSupplyAnalytics.kt @@ -189,7 +189,7 @@ sealed class YieldSupplyAnalytics( ), ) - data object ApyChartViewed : YieldSupplyAnalytics( + class ApyChartViewed : YieldSupplyAnalytics( event = "APY Chart", ) diff --git a/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/promo/model/YieldSupplyPromoModel.kt b/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/promo/model/YieldSupplyPromoModel.kt index 642777e14b..a1384942e1 100644 --- a/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/promo/model/YieldSupplyPromoModel.kt +++ b/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/promo/model/YieldSupplyPromoModel.kt @@ -60,7 +60,7 @@ internal class YieldSupplyPromoModel @Inject constructor( } override fun onApyInfoClick() { - analytics.send(YieldSupplyAnalytics.ApyChartViewed) + analytics.send(YieldSupplyAnalytics.ApyChartViewed()) bottomSheetNavigation.activate(YieldSupplyPromoConfig.Apy) }