Updated on 2026-08-14
This commit is contained in:
parent
e904e54848
commit
b2fbe74220
14 changed files with 121 additions and 32 deletions
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue