Updated on 2026-08-14

This commit is contained in:
Tangem 2025-12-23 14:01:21 +03:00
parent e904e54848
commit b2fbe74220
14 changed files with 121 additions and 32 deletions

View file

@ -0,0 +1,15 @@
package com.tangem.core.analytics.models
/**
* Marker interface for AppsFlyer events
* Only events implementing this interface will be sent to AppsFlyer
*/
interface AppsFlyerOnlyEvent
/**
* Marker interface for AppsFlyer included events
* Events implementing this interface will be sent to AppsFlyer along with other analytics handlers
*/
interface AppsFlyerIncludedEvent {
val appsFlyerReplacedEvent: String
}

View file

@ -2,6 +2,8 @@ package com.tangem.core.analytics.models.event
import com.tangem.core.analytics.models.AnalyticsEvent
import com.tangem.core.analytics.models.AnalyticsParam
import com.tangem.core.analytics.models.AppsFlyerIncludedEvent
import com.tangem.core.analytics.models.AppsFlyerOnlyEvent
sealed class OnboardingAnalyticsEvent(
category: String,
@ -14,6 +16,8 @@ sealed class OnboardingAnalyticsEvent(
params: Map<String, String> = mapOf(),
) : OnboardingAnalyticsEvent(category = "Onboarding", event = event, params = params) {
class AppsFlyerOnlyEntryScreenView : Onboarding(event = "wallet_entry_screen_view"), AppsFlyerOnlyEvent
class Started(
source: String,
) : Onboarding(
@ -64,7 +68,12 @@ sealed class OnboardingAnalyticsEvent(
put("Seed Phrase Length", seedPhraseLength.toString())
}
},
)
), AppsFlyerIncludedEvent {
override val appsFlyerReplacedEvent = when (creationType) {
WalletCreationType.NewSeed -> "wallet_created_successfully"
WalletCreationType.SeedImport -> "wallet_imported"
}
}
sealed class WalletCreationType(val value: String) {
data object NewSeed : WalletCreationType(value = "New Seed")
@ -85,6 +94,7 @@ sealed class OnboardingAnalyticsEvent(
AnalyticsParam.SOURCE to source,
),
)
class ButtonImportWallet : SeedPhrase("Button - Import Wallet")
class ImportSeedPhraseScreenOpened : SeedPhrase("Import Seed Phrase Screen Opened")
class ButtonImport : SeedPhrase("Button - Import")

View file

@ -27,11 +27,7 @@ interface AnalyticsHandler : AnalyticsEventHandler {
fun id(): String
fun send(eventId: String, params: Map<String, String> = emptyMap())
override fun send(event: AnalyticsEvent) {
send(event.id, event.params)
}
override fun send(event: AnalyticsEvent)
}
interface AnalyticsHandlerHolder {

View file

@ -0,0 +1,23 @@
package com.tangem.core.analytics.filter
import com.tangem.core.analytics.api.AnalyticsEventFilter
import com.tangem.core.analytics.api.AnalyticsHandler
import com.tangem.core.analytics.models.AnalyticsEvent
import com.tangem.core.analytics.models.AppsFlyerIncludedEvent
import com.tangem.core.analytics.models.AppsFlyerOnlyEvent
class AppsFlyerEventFilter : AnalyticsEventFilter {
override fun canBeAppliedTo(event: AnalyticsEvent): Boolean =
event is AppsFlyerOnlyEvent || event is AppsFlyerIncludedEvent
override suspend fun canBeSent(event: AnalyticsEvent): Boolean = true
override fun canBeConsumedByHandler(handler: AnalyticsHandler, event: AnalyticsEvent): Boolean {
return when (event) {
is AppsFlyerOnlyEvent -> handler.id() == "AppsFlyer"
is AppsFlyerIncludedEvent -> true
else -> false
}
}
}