diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt index 8c69239429..cca03e068f 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt @@ -41,15 +41,6 @@ sealed class AnalyticsParam { object LongTap : SecurityMode("Long Tap") } - sealed class SocialNetwork(val value: String) { - object Facebook : SocialNetwork("Facebook") - object Instagram : SocialNetwork("Instagram") - object Youtube : SocialNetwork("Youtube") - object Twitter : SocialNetwork("Twitter") - object LinkedIn : SocialNetwork("LinkedIn") - object GitHub : SocialNetwork("GitHub") - } - companion object Key { const val Blockchain = "blockchain" const val BatchId = "batch_id" 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 56893d2f31..fff6794867 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 @@ -1,5 +1,7 @@ package com.tangem.tap.common.analytics.events +import com.tangem.tap.features.details.ui.details.SocialNetwork + /** [REDACTED_AUTHOR] */ @@ -18,9 +20,9 @@ sealed class Settings( class ButtonAppSettings : Settings(event = "Button - App Settings") class ButtonCreateBackup : Settings(event = "Button - Create Backup") - sealed class ButtonSocialNetwork(network: AnalyticsParam.SocialNetwork) : Settings( + class ButtonSocialNetwork(network: SocialNetwork) : Settings( event = "Button - Social Network", - params = mapOf("Network" to network.value), + params = mapOf("Network" to network.id), ) sealed class CardSettings( diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/details/DetailsFragment.kt b/app/src/main/java/com/tangem/tap/features/details/ui/details/DetailsFragment.kt index 6674371319..2c206736e5 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/details/DetailsFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/details/DetailsFragment.kt @@ -10,6 +10,8 @@ import androidx.compose.ui.platform.ComposeView import androidx.fragment.app.Fragment import androidx.transition.TransitionInflater import com.google.accompanist.appcompattheme.AppCompatTheme +import com.tangem.tap.common.analytics.Analytics +import com.tangem.tap.common.analytics.events.Settings import com.tangem.tap.common.redux.navigation.NavigationAction import com.tangem.tap.features.details.redux.DetailsState import com.tangem.tap.store @@ -24,7 +26,7 @@ class DetailsFragment : Fragment(), StoreSubscriber { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - + Analytics.send(Settings.ScreenOpened()) val inflater = TransitionInflater.from(requireContext()) enterTransition = inflater.inflateTransition(android.R.transition.fade) exitTransition = inflater.inflateTransition(android.R.transition.fade) diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/details/DetailsScreen.kt b/app/src/main/java/com/tangem/tap/features/details/ui/details/DetailsScreen.kt index e0b4f1f186..47946d1e73 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/details/DetailsScreen.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/details/DetailsScreen.kt @@ -162,8 +162,8 @@ fun DetailsItem( @Composable fun TangemSocialAccounts( - links: List, - onSocialNetworkClick: (String) -> Unit, + links: List, + onSocialNetworkClick: (SocialNetworkLink) -> Unit, modifier: Modifier = Modifier, ) { LazyRow( @@ -171,11 +171,11 @@ fun TangemSocialAccounts( ) { items(links) { Icon( - painter = painterResource(id = it.iconRes), + painter = painterResource(id = it.network.iconRes), contentDescription = "", modifier = modifier .padding(8.dp) - .clickable { onSocialNetworkClick(it.url) }, + .clickable { onSocialNetworkClick(it) }, tint = colorResource(id = R.color.icon_informative), ) } diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/details/DetailsScreenState.kt b/app/src/main/java/com/tangem/tap/features/details/ui/details/DetailsScreenState.kt index 1962a53261..a92efc7e2b 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/details/DetailsScreenState.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/details/DetailsScreenState.kt @@ -4,11 +4,11 @@ import com.tangem.wallet.R data class DetailsScreenState( val elements: List, - val tangemLinks: List, + val tangemLinks: List, val tangemVersion: String, val appCurrency: String, val onItemsClick: (SettingsElement) -> Unit, - val onSocialNetworkClick: (String) -> Unit, + val onSocialNetworkClick: (SocialNetworkLink) -> Unit, ) { val appNameRes: Int = R.string.app_name } @@ -30,28 +30,38 @@ enum class SettingsElement( ; } -data class TangemLink( - val iconRes: Int, +data class SocialNetworkLink( + val network: SocialNetwork, val url: String, ) +sealed class SocialNetwork(val id: String, val iconRes: Int) { + object Telegram : SocialNetwork("Telegram", R.drawable.ic_telegram) + object Twitter : SocialNetwork("Twitter", R.drawable.ic_twitter) + object Facebook : SocialNetwork("Facebook", R.drawable.ic_facebook) + object Instagram : SocialNetwork("Instagram", R.drawable.ic_instagram) + object GitHub : SocialNetwork("GitHub", R.drawable.ic_github) + object Youtube : SocialNetwork("Youtube", R.drawable.ic_youtube) + object LinkedIn : SocialNetwork("LinkedIn", R.drawable.ic_linkedin) +} + object TangemSocialAccounts { - val accountsEn: List = listOf( - TangemLink(R.drawable.ic_telegram, "https://t.me/TangemCards"), - TangemLink(R.drawable.ic_twitter, "https://twitter.com/tangem"), - TangemLink(R.drawable.ic_facebook, "https://m.facebook.com/TangemCards/"), - TangemLink(R.drawable.ic_instagram, "https://instagram.com/tangemcards"), - TangemLink(R.drawable.ic_github, "https://github.com/tangem"), - TangemLink(R.drawable.ic_youtube, "https://youtube.com/channel/UCFGwLS7yggzVkP6ozte0m1w"), - TangemLink(R.drawable.ic_linkedin, "https://www.linkedin.com/company/tangem"), + val accountsEn: List = listOf( + SocialNetworkLink(SocialNetwork.Telegram, "https://t.me/TangemCards"), + SocialNetworkLink(SocialNetwork.Twitter, "https://twitter.com/tangem"), + SocialNetworkLink(SocialNetwork.Facebook, "https://m.facebook.com/TangemCards/"), + SocialNetworkLink(SocialNetwork.Instagram, "https://instagram.com/tangemcards"), + SocialNetworkLink(SocialNetwork.GitHub, "https://github.com/tangem"), + SocialNetworkLink(SocialNetwork.Youtube, "https://youtube.com/channel/UCFGwLS7yggzVkP6ozte0m1w"), + SocialNetworkLink(SocialNetwork.LinkedIn, "https://www.linkedin.com/company/tangem"), ) - val accountsRu: List = listOf( - TangemLink(R.drawable.ic_telegram, "https://t.me/tangem_ru"), - TangemLink(R.drawable.ic_twitter, "https://twitter.com/tangem"), - TangemLink(R.drawable.ic_facebook, "https://m.facebook.com/TangemCards/"), - TangemLink(R.drawable.ic_instagram, "https://instagram.com/tangemcards"), - TangemLink(R.drawable.ic_github, "https://github.com/tangem"), - TangemLink(R.drawable.ic_youtube, "https://youtube.com/channel/UCFGwLS7yggzVkP6ozte0m1w"), - TangemLink(R.drawable.ic_linkedin, "https://www.linkedin.com/company/tangem"), + val accountsRu: List = listOf( + SocialNetworkLink(SocialNetwork.Telegram, "https://t.me/tangem_ru"), + SocialNetworkLink(SocialNetwork.Twitter, "https://twitter.com/tangem"), + SocialNetworkLink(SocialNetwork.Facebook, "https://m.facebook.com/TangemCards/"), + SocialNetworkLink(SocialNetwork.Instagram, "https://instagram.com/tangemcards"), + SocialNetworkLink(SocialNetwork.GitHub, "https://github.com/tangem"), + SocialNetworkLink(SocialNetwork.Youtube, "https://youtube.com/channel/UCFGwLS7yggzVkP6ozte0m1w"), + SocialNetworkLink(SocialNetwork.LinkedIn, "https://www.linkedin.com/company/tangem"), ) } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/details/DetailsViewModel.kt b/app/src/main/java/com/tangem/tap/features/details/ui/details/DetailsViewModel.kt index 1de39fa063..c48aeab31d 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/details/DetailsViewModel.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/details/DetailsViewModel.kt @@ -2,6 +2,8 @@ package com.tangem.tap.features.details.ui.details import com.tangem.domain.common.TapWorkarounds.isSaltPay import com.tangem.domain.common.TapWorkarounds.isStart2Coin +import com.tangem.tap.common.analytics.Analytics +import com.tangem.tap.common.analytics.events.Settings import com.tangem.tap.common.feedback.FeedbackEmail import com.tangem.tap.common.feedback.SupportInfo import com.tangem.tap.common.redux.AppState @@ -51,8 +53,9 @@ class DetailsViewModel(private val store: Store) { ) } - private fun handleSocialNetworkClick(url: String) { - store.dispatch(NavigationAction.OpenUrl(url)) + private fun handleSocialNetworkClick(link: SocialNetworkLink) { + Analytics.send(Settings.ButtonSocialNetwork(link.network)) + store.dispatch(NavigationAction.OpenUrl(link.url)) } private fun handleClickingSettingsItem(item: SettingsElement) { @@ -61,21 +64,26 @@ class DetailsViewModel(private val store: Store) { store.dispatch(NavigationAction.NavigateTo(AppScreen.WalletConnectSessions)) } SettingsElement.Chat -> { + Analytics.send(Settings.ButtonChat()) store.dispatch(GlobalAction.OpenChat(SupportInfo())) } SettingsElement.SendFeedback -> { + Analytics.send(Settings.ButtonSendFeedback()) store.dispatch(GlobalAction.SendEmail(FeedbackEmail())) } SettingsElement.CardSettings -> { + Analytics.send(Settings.ButtonCardSettings()) store.dispatch(NavigationAction.NavigateTo(AppScreen.CardSettings)) } SettingsElement.AppCurrency -> { store.dispatch(WalletAction.AppCurrencyAction.ChooseAppCurrency) } SettingsElement.AppSettings -> { + Analytics.send(Settings.ButtonAppSettings()) store.dispatch(NavigationAction.NavigateTo(AppScreen.AppSettings)) //TODO: To be available later } SettingsElement.LinkMoreCards -> { + Analytics.send(Settings.ButtonCreateBackup()) store.dispatch(DetailsAction.CreateBackup) } SettingsElement.TermsOfService -> { @@ -90,7 +98,7 @@ class DetailsViewModel(private val store: Store) { } } - private fun getSocialLinks(): List { + private fun getSocialLinks(): List { val locale = LocaleRegionProvider().getRegion() return if (locale.lowercase() == RUSSIA_COUNTRY_CODE) { TangemSocialAccounts.accountsRu diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/WalletConnectViewModel.kt b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/WalletConnectViewModel.kt index 6bbde4c1ae..9f4c8dd659 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/WalletConnectViewModel.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/WalletConnectViewModel.kt @@ -1,5 +1,7 @@ package com.tangem.tap.features.details.ui.walletconnect +import com.tangem.tap.common.analytics.Analytics +import com.tangem.tap.common.analytics.events.Settings import com.tangem.tap.common.redux.AppState import com.tangem.tap.features.details.redux.walletconnect.WalletConnectAction import com.tangem.tap.features.details.redux.walletconnect.WalletConnectSession @@ -12,7 +14,10 @@ class WalletConnectViewModel(private val store: Store) { state.sessions.map { wcSession -> WcSessionForScreen.fromSession(wcSession) }, isLoading = state.loading, onRemoveSession = { sessionUri -> onRemoveSession(sessionUri, state.sessions) }, - onAddSession = { copiedUri -> store.dispatch(WalletConnectAction.StartWalletConnect(copiedUri)) }, + onAddSession = { copiedUri -> + Analytics.send(Settings.ButtonStartWalletConnectSession()) + store.dispatch(WalletConnectAction.StartWalletConnect(copiedUri)) + }, ) } @@ -20,6 +25,7 @@ class WalletConnectViewModel(private val store: Store) { sessions .firstOrNull { it.session.toUri() == sessionUri } ?.let { baseSession -> + Analytics.send(Settings.ButtonStopWalletConnectSession()) store.dispatch(WalletConnectAction.DisconnectSession(baseSession.session)) } }