From 2feae87e8360b024022049693ecda7a5612da6f2 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 28 Sep 2022 02:31:49 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../common/analytics/events/AnalyticsEvent.kt | 10 +++ .../common/analytics/events/AnalyticsParam.kt | 52 ++++++++++++++ .../tap/common/analytics/events/Basic.kt | 28 ++++++++ .../tap/common/analytics/events/Chat.kt | 12 ++++ .../common/analytics/events/DetailsScreen.kt | 12 ++++ .../analytics/events/IntroductionProcess.kt | 17 +++++ .../tap/common/analytics/events/MainScreen.kt | 29 ++++++++ .../common/analytics/events/ManageTokens.kt | 33 +++++++++ .../tap/common/analytics/events/Onboarding.kt | 67 +++++++++++++++++++ .../tap/common/analytics/events/Portfolio.kt | 15 +++++ .../tap/common/analytics/events/Settings.kt | 64 ++++++++++++++++++ .../tap/common/analytics/events/Shop.kt | 22 ++++++ .../tap/common/analytics/events/Token.kt | 62 +++++++++++++++++ .../common/analytics/events/WalletConnect.kt | 14 ++++ 14 files changed, 437 insertions(+) create mode 100644 app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsEvent.kt create mode 100644 app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt create mode 100644 app/src/main/java/com/tangem/tap/common/analytics/events/Basic.kt create mode 100644 app/src/main/java/com/tangem/tap/common/analytics/events/Chat.kt create mode 100644 app/src/main/java/com/tangem/tap/common/analytics/events/DetailsScreen.kt create mode 100644 app/src/main/java/com/tangem/tap/common/analytics/events/IntroductionProcess.kt create mode 100644 app/src/main/java/com/tangem/tap/common/analytics/events/MainScreen.kt create mode 100644 app/src/main/java/com/tangem/tap/common/analytics/events/ManageTokens.kt create mode 100644 app/src/main/java/com/tangem/tap/common/analytics/events/Onboarding.kt create mode 100644 app/src/main/java/com/tangem/tap/common/analytics/events/Portfolio.kt create mode 100644 app/src/main/java/com/tangem/tap/common/analytics/events/Settings.kt create mode 100644 app/src/main/java/com/tangem/tap/common/analytics/events/Shop.kt create mode 100644 app/src/main/java/com/tangem/tap/common/analytics/events/Token.kt create mode 100644 app/src/main/java/com/tangem/tap/common/analytics/events/WalletConnect.kt diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsEvent.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsEvent.kt new file mode 100644 index 0000000000..0451fdd68c --- /dev/null +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsEvent.kt @@ -0,0 +1,10 @@ +package com.tangem.tap.common.analytics.events + +/** +[REDACTED_AUTHOR] + */ +sealed class AnalyticsEvent( + val category: String, + val event: String, + val params: Map = mapOf(), +) \ No newline at end of file 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 new file mode 100644 index 0000000000..aa8d8439f4 --- /dev/null +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt @@ -0,0 +1,52 @@ +package com.tangem.tap.common.analytics.events + +sealed class AnalyticsParam { + + sealed class CurrencyType(val value: String) { + class Currency(currency: com.tangem.tap.features.wallet.models.Currency) : CurrencyType(currency.currencySymbol) + class Blockchain(blockchain: com.tangem.blockchain.common.Blockchain) : CurrencyType(blockchain.currency) + class Token(token: com.tangem.blockchain.common.Token) : CurrencyType(token.symbol) + } + + // Multicurrency or CurrencyType + sealed class CardCurrency(val value: String) { + object MultiCurrency : CardCurrency("Multicurrency") + class SingleCurrency(type: CurrencyType) : CardCurrency(type.value) + } + + sealed class CardState(val value: String) { + object Empty : CardState("Empty") + object Full : CardState("Full") + } + + sealed class RateApp(val value: String) { + object Liked : RateApp("Liked") + object Disliked : RateApp("Disliked") + object Closed : RateApp("Close") + } + + sealed class OnOffState(val value: String) { + object On : OnOffState("On") + object Off : OnOffState("Off") + } + + sealed class UserCode(val value: String) { + object AccessCode : UserCode("Access Code") + object Passcode : UserCode("Passcode") + } + + sealed class SecurityMode(val value: String) { + object AccessCode : SecurityMode("Access Code") + object Passcode : SecurityMode("Passcode") + 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") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/Basic.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/Basic.kt new file mode 100644 index 0000000000..bb37145672 --- /dev/null +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/Basic.kt @@ -0,0 +1,28 @@ +package com.tangem.tap.common.analytics.events + +/** +[REDACTED_AUTHOR] + */ +sealed class Basic( + event: String, + params: Map = mapOf(), +) : AnalyticsEvent("Basic", event, params) { + + sealed class SignedIn( + state: AnalyticsParam.CardState, + currency: AnalyticsParam.CardCurrency, + batch: String, + ) : Basic( + event = "Signed in", + params = mapOf( + "State" to state.value, + "Currency" to currency.value, + "Batch" to batch, + ), + ) + + class ToppedUp(currency: AnalyticsParam.CardCurrency) : Basic( + event = "Topped up", + params = mapOf("Currency" to currency.value), + ) +} diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/Chat.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/Chat.kt new file mode 100644 index 0000000000..a26109ae2a --- /dev/null +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/Chat.kt @@ -0,0 +1,12 @@ +package com.tangem.tap.common.analytics.events + +/** +[REDACTED_AUTHOR] + */ +sealed class Chat( + event: String, + params: Map = mapOf(), +) : AnalyticsEvent("Chat", event, params) { + + class ScreenOpened : Chat("Chat Screen Opened") +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/DetailsScreen.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/DetailsScreen.kt new file mode 100644 index 0000000000..1ec8d81533 --- /dev/null +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/DetailsScreen.kt @@ -0,0 +1,12 @@ +package com.tangem.tap.common.analytics.events + +/** +[REDACTED_AUTHOR] + */ +sealed class DetailsScreen( + event: String, + params: Map = mapOf(), +) : AnalyticsEvent("Details Screen", event, params) { + + class ScreenOpened : DetailsScreen("Details Screen Opened") +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/IntroductionProcess.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/IntroductionProcess.kt new file mode 100644 index 0000000000..4b3eb7f431 --- /dev/null +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/IntroductionProcess.kt @@ -0,0 +1,17 @@ +package com.tangem.tap.common.analytics.events + +/** +[REDACTED_AUTHOR] + */ +sealed class IntroductionProcess( + event: String, + params: Map = mapOf(), +) : AnalyticsEvent("Introduction Process", event, params) { + + class ScreenOpened : IntroductionProcess("Introduction Process Screen Opened") + class ButtonTokensList : IntroductionProcess("Button - Tokens List") + class ButtonBuyCards : IntroductionProcess("Button - Buy Cards") + class ButtonScanCard : IntroductionProcess("Button - Scan Card") + class CardWasScanned : IntroductionProcess("Card Was Scanned") + class ButtonRequestSupport : IntroductionProcess("Button - Request Support") +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/MainScreen.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/MainScreen.kt new file mode 100644 index 0000000000..c6825718b7 --- /dev/null +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/MainScreen.kt @@ -0,0 +1,29 @@ +package com.tangem.tap.common.analytics.events + +/** +[REDACTED_AUTHOR] + */ +sealed class MainScreen( + event: String, + params: Map = mapOf(), +) : AnalyticsEvent("Main Screen", event, params) { + + class ScreenOpened : MainScreen("Screen opened") + + class ButtonScanCard : MainScreen("Button - Scan Card") + class CardWasScanned : MainScreen("Card Was Scanned") + class ButtonMyWallets : MainScreen("Button - My Wallets") + + class MainCurrencyChanged(currencyType: AnalyticsParam.CurrencyType) : MainScreen( + event = "Main Currency Changed", + params = mapOf("Currency Type" to currencyType.value), + ) + + sealed class NoticeRateAppButton(result: AnalyticsParam.RateApp) : MainScreen( + event = "Notice - Rate The App Button Tapped", + params = mapOf("Result" to result.value), + ) + + class NoticeBackupYourWalletTapped : MainScreen("Notice - Backup Your Wallet Tapped") + class NoticeScanYourCardTapped : MainScreen("Notice - Scan Your Card Tapped") +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/ManageTokens.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/ManageTokens.kt new file mode 100644 index 0000000000..e5e3fdb96a --- /dev/null +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/ManageTokens.kt @@ -0,0 +1,33 @@ +package com.tangem.tap.common.analytics.events + +/** +[REDACTED_AUTHOR] + */ +sealed class ManageTokens( + event: String, + params: Map = mapOf(), +) : AnalyticsEvent("Manage Tokens", event, params) { + + class ScreenOpened : ManageTokens("Manage Tokens Screen Opened") + class TokenSearched : ManageTokens("Token Searched") + class TokenSwitcherChanged : ManageTokens("Token Switcher Changed") + class ButtonSaveChanges : ManageTokens("Button - Save Changes") + class ButtonCustomToken : ManageTokens("Button - Custom Token") + + sealed class CustomToken( + event: String, + params: Map = mapOf(), + ) : ManageTokens(event, params) { + + class ScreenOpened : ManageTokens("Custom Token Screen Opened") + + class TokenWasAdded(symbol: String, network: String, address: String) : ManageTokens( + event = "Custom Token Was Added", + params = mapOf( + "Symbol" to symbol, + "Network" to network, + "Address" to address, + ), + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/Onboarding.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/Onboarding.kt new file mode 100644 index 0000000000..4a57cda71d --- /dev/null +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/Onboarding.kt @@ -0,0 +1,67 @@ +package com.tangem.tap.common.analytics.events + +/** +[REDACTED_AUTHOR] + */ +sealed class Onboarding( + category: String, + event: String, + params: Map = mapOf(), +) : AnalyticsEvent(category, event, params) { + + class Started : Onboarding("Onboarding", "Onboarding Started") + class Finished : Onboarding("Onboarding", "Onboarding Finished") + + sealed class CreateWallet( + event: String, + params: Map = mapOf(), + ) : Onboarding("Onboarding / Create Wallet", event, params) { + + class ScreenOpened : CreateWallet("Create Wallet Screen Opened") + class ButtonCreateWallet : CreateWallet("Button - Create Wallet") + class WalletCreatedSuccessfully : CreateWallet("Wallet Created Successfully") + } + + sealed class Backup( + event: String, + params: Map = mapOf(), + ) : Onboarding("Onboarding / Backup", event, params) { + + 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: String) : Backup( + event = "Backup Finished", + params = mapOf("Cards count" to cardsCount), + ) + } + + sealed class Topup( + event: String, + params: Map = mapOf(), + ) : Onboarding("Onboarding / Top Up", event, params) { + + class ScreenOpened : Topup("Activation Screen Opened") + + class ButtonBuyCrypto(currency: AnalyticsParam.CurrencyType) : Topup( + event = "Button - Buy Crypto", + params = mapOf("Currency" to currency.value), + ) + + class ButtonShowWalletAddress : Topup("Button - Show the Wallet Address") + } + + sealed class Twins( + event: String, + params: Map = mapOf(), + ) : Onboarding("Onboarding / Twins", event, params) { + + class ScreenOpened : Twins("Twinning Screen Opened") + class SetupStarted : Twins("Twin Setup Started") + class SetupFinished : Twins("Twin Setup Finished") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/Portfolio.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/Portfolio.kt new file mode 100644 index 0000000000..6747c2172d --- /dev/null +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/Portfolio.kt @@ -0,0 +1,15 @@ +package com.tangem.tap.common.analytics.events + +/** +[REDACTED_AUTHOR] + */ + +sealed class Portfolio( + event: String, + params: Map = mapOf(), +) : AnalyticsEvent("Portfolio", event, params) { + + class Refreshed : Portfolio("Refreshed") + class ButtonManageTokens : Portfolio("Button - Manage Tokens") + class TokenTapped : Portfolio("Token is Tapped") +} \ 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 new file mode 100644 index 0000000000..e7b2b5c2e6 --- /dev/null +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/Settings.kt @@ -0,0 +1,64 @@ +package com.tangem.tap.common.analytics.events + +/** +[REDACTED_AUTHOR] + */ +sealed class Settings( + category: String = "Settings", + event: String, + params: Map = mapOf(), +) : AnalyticsEvent(category, event, params) { + + class ScreenOpened : Settings(event = "Settings Screen Opened") + class ButtonChat : Settings(event = "Button - Chat") + class ButtonSendFeedback : Settings(event = "Button - Send Feedback") + class ButtonStartWalletConnectSession : Settings(event = "Button - Start Wallet Connect Session") + class ButtonStopWalletConnectSession : Settings(event = "Button - Stop Wallet Connect Session") + class ButtonCardSettings : Settings(event = "Button - Card Settings") + class ButtonAppSettings : Settings(event = "Button - App Settings") + class ButtonCreateBackup : Settings(event = "Button - Create Backup") + + sealed class ButtonSocialNetwork(network: AnalyticsParam.SocialNetwork) : Settings( + event = "Button - Social Network", + params = mapOf("Network" to network.value), + ) + + sealed class CardSettings( + event: String, + params: Map = mapOf(), + ) : Onboarding("Settings / Card Settings", event, params) { + + class ButtonFactoryReset : CardSettings("Button - Factory Reset") + class FactoryResetFinished : CardSettings("Factory Reset Finished") + class UserCodeChanged : CardSettings("User Code Changed") + class ButtonChangeSecurityMode : CardSettings("Button - Change Security Mode") + + sealed class ButtonChangeUserCode(type: AnalyticsParam.UserCode) : CardSettings( + event = "Button - Change User Code", + params = mapOf("Type" to type.value), + ) + + sealed class SecurityModeChanged(mode: AnalyticsParam.SecurityMode) : CardSettings( + event = "Security Mode Changed", + params = mapOf("Mode" to mode.value), + ) + } + + sealed class AppSettings( + event: String, + params: Map = mapOf(), + ) : Onboarding("Settings / App Settings", event, params) { + + sealed class FaceIDSwitcherChanged(state: AnalyticsParam.OnOffState) : CardSettings( + event = "Face ID Switcher Changed", + params = mapOf("State" to state.value), + ) + + sealed class SaveAccessCodeSwitcherChanged(state: AnalyticsParam.OnOffState) : CardSettings( + event = "Save Access Code Switcher Changed", + params = mapOf("State" to state.value), + ) + + class ButtonEnableBiometricAuthentication : AppSettings("Button - Enable Biometric Authentication") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/Shop.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/Shop.kt new file mode 100644 index 0000000000..c09bf89ab3 --- /dev/null +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/Shop.kt @@ -0,0 +1,22 @@ +package com.tangem.tap.common.analytics.events + +/** +[REDACTED_AUTHOR] + */ +sealed class Shop( + event: String, + params: Map = mapOf(), +) : AnalyticsEvent("Shop", event, params) { + + class ScreenOpened : IntroductionProcess("Shop Screen Opened") + + class Purchased(productSku: String) : Shop( + event = "Purchased", + params = mapOf("SKU" to productSku), + ) + + class Redirected(partnerName: String) : Shop( + event = "Redirected", + params = mapOf("Partner" to partnerName), + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/Token.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/Token.kt new file mode 100644 index 0000000000..1dc36df5bc --- /dev/null +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/Token.kt @@ -0,0 +1,62 @@ +package com.tangem.tap.common.analytics.events + +/** +[REDACTED_AUTHOR] + */ +sealed class Token( + category: String, + event: String, + params: Map = mapOf(), +) : AnalyticsEvent(category, event, params) { + + class Refreshed : Token("Token", "Refreshed") + class ButtonRemoveToken : Token("Token", "Button - Remove Token") + class ButtonExplore : Token("Token", "Button - Explore") + class ButtonBuy(token: String) : Token("Token", "Button - Buy", mapOf("Token" to token)) + class ButtonSell(token: String) : Token("Token", "Button - Sell", mapOf("Token" to token)) + class ButtonExchange(token: String) : Token("Token", "Button - Exchange", mapOf("Token" to token)) + class ButtonSend(token: String) : Token("Token", "Button - Send", mapOf("Token" to token)) + + sealed class Recieve( + event: String, + params: Map = mapOf(), + ) : Onboarding("Token / Recieve", event, params) { + + class ScreenOpened : Recieve("Recieve Screen Opened") + class ButtonCopyAddress : Recieve("Button - Copy Address") + class ButtonShareAddress : Recieve("Button - Share Address") + } + + sealed class Send( + event: String, + params: Map = mapOf(), + ) : Onboarding("Token / Send", event, params) { + + class ScreenOpened : Send("Send Screen Opened") + class ButtonPaste : Send("Button - Paste") + class ButtonQRCode : Send("Button - QR Code") + class ButtonSwapCurrency : Send("Button - Swap Currency") + + class TransactionSent(token: AnalyticsParam.CurrencyType) : Send( + event = "Transaction Sent", + params = mapOf("Token" to token.value), + ) + } + + sealed class Topup( + event: String, + params: Map = mapOf(), + ) : Onboarding("Token / Topup", event, params) { + + class ScreenOpened : Topup("Top Up Screen Opened") + class P2PScreenOpened : Topup("P2P Screen Opened") + } + + sealed class Withdraw( + event: String, + params: Map = mapOf(), + ) : Onboarding("Token / Withdraw", event, params) { + + class ScreenOpened : Withdraw("Withdraw Screen Opened") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/WalletConnect.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/WalletConnect.kt new file mode 100644 index 0000000000..624145c63d --- /dev/null +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/WalletConnect.kt @@ -0,0 +1,14 @@ +package com.tangem.tap.common.analytics.events + +/** +[REDACTED_AUTHOR] + */ +sealed class WalletConnect( + event: String, + params: Map = mapOf(), +) : AnalyticsEvent("Wallet Connect", event, params) { + + class NewSessionEstablished : WalletConnect("New Session Established") + class SessionDisconnected : WalletConnect("Session Disconnected") + class RequestSigned : WalletConnect("Request Signed") +} \ No newline at end of file