Init or stop posthog based on user consent

This commit is contained in:
yostyle 2023-06-23 15:57:25 +02:00
parent fb23350b62
commit 09c2c3dea1
3 changed files with 10 additions and 9 deletions

View file

@ -115,15 +115,16 @@ class DefaultAnalyticsService @Inject constructor(
} }
private fun initOrStop() { private fun initOrStop() {
userConsent?.let { _userConsent -> userConsent?.let { userConsent ->
when (_userConsent) { when (userConsent) {
true -> { true -> {
analyticsProviders.onEach { it.init() }
pendingUserProperties?.let { pendingUserProperties?.let {
analyticsProviders.onEach { provider -> provider.updateUserProperties(it) } analyticsProviders.onEach { provider -> provider.updateUserProperties(it) }
pendingUserProperties = null pendingUserProperties = null
} }
} }
false -> {} false -> analyticsProviders.onEach { it.stop() }
} }
} }
} }

View file

@ -30,7 +30,7 @@ interface AnalyticsProvider: AnalyticsTracker, ErrorTracker {
*/ */
val name: String val name: String
suspend fun init() fun init()
fun stop() fun stop()
} }

View file

@ -42,7 +42,7 @@ class PosthogAnalyticsProvider @Inject constructor(
private var posthog: PostHog? = null private var posthog: PostHog? = null
private var analyticsId: String? = null private var analyticsId: String? = null
override suspend fun init() { override fun init() {
posthog = createPosthog() posthog = createPosthog()
posthog?.optOut(false) posthog?.optOut(false)
identifyPostHog() identifyPostHog()
@ -66,10 +66,10 @@ class PosthogAnalyticsProvider @Inject constructor(
} }
override fun updateUserProperties(userProperties: UserProperties) { override fun updateUserProperties(userProperties: UserProperties) {
posthog?.identify( // posthog?.identify(
REUSE_EXISTING_ID, userProperties.getProperties()?.toPostHogUserProperties(), // REUSE_EXISTING_ID, userProperties.getProperties()?.toPostHogUserProperties(),
IGNORED_OPTIONS // IGNORED_OPTIONS
) // )
} }
override fun trackError(throwable: Throwable) { override fun trackError(throwable: Throwable) {