From 09c2c3dea1232d26217d8052bb2f9a2bee06a6b3 Mon Sep 17 00:00:00 2001 From: yostyle Date: Fri, 23 Jun 2023 15:57:25 +0200 Subject: [PATCH] Init or stop posthog based on user consent --- .../services/analytics/impl/DefaultAnalyticsService.kt | 7 ++++--- .../analyticsproviders/api/AnalyticsProvider.kt | 2 +- .../posthog/PosthogAnalyticsProvider.kt | 10 +++++----- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt b/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt index 6b783964c5..09edd49489 100644 --- a/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt +++ b/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt @@ -115,15 +115,16 @@ class DefaultAnalyticsService @Inject constructor( } private fun initOrStop() { - userConsent?.let { _userConsent -> - when (_userConsent) { + userConsent?.let { userConsent -> + when (userConsent) { true -> { + analyticsProviders.onEach { it.init() } pendingUserProperties?.let { analyticsProviders.onEach { provider -> provider.updateUserProperties(it) } pendingUserProperties = null } } - false -> {} + false -> analyticsProviders.onEach { it.stop() } } } } diff --git a/services/analyticsproviders/api/src/main/kotlin/io/element/android/services/analyticsproviders/api/AnalyticsProvider.kt b/services/analyticsproviders/api/src/main/kotlin/io/element/android/services/analyticsproviders/api/AnalyticsProvider.kt index 026d4cdd6e..548f47d7ad 100644 --- a/services/analyticsproviders/api/src/main/kotlin/io/element/android/services/analyticsproviders/api/AnalyticsProvider.kt +++ b/services/analyticsproviders/api/src/main/kotlin/io/element/android/services/analyticsproviders/api/AnalyticsProvider.kt @@ -30,7 +30,7 @@ interface AnalyticsProvider: AnalyticsTracker, ErrorTracker { */ val name: String - suspend fun init() + fun init() fun stop() } diff --git a/services/analyticsproviders/posthog/src/main/kotlin/io/element/android/services/analyticsproviders/posthog/PosthogAnalyticsProvider.kt b/services/analyticsproviders/posthog/src/main/kotlin/io/element/android/services/analyticsproviders/posthog/PosthogAnalyticsProvider.kt index 2499c87e9f..92e73195c0 100644 --- a/services/analyticsproviders/posthog/src/main/kotlin/io/element/android/services/analyticsproviders/posthog/PosthogAnalyticsProvider.kt +++ b/services/analyticsproviders/posthog/src/main/kotlin/io/element/android/services/analyticsproviders/posthog/PosthogAnalyticsProvider.kt @@ -42,7 +42,7 @@ class PosthogAnalyticsProvider @Inject constructor( private var posthog: PostHog? = null private var analyticsId: String? = null - override suspend fun init() { + override fun init() { posthog = createPosthog() posthog?.optOut(false) identifyPostHog() @@ -66,10 +66,10 @@ class PosthogAnalyticsProvider @Inject constructor( } override fun updateUserProperties(userProperties: UserProperties) { - posthog?.identify( - REUSE_EXISTING_ID, userProperties.getProperties()?.toPostHogUserProperties(), - IGNORED_OPTIONS - ) +// posthog?.identify( +// REUSE_EXISTING_ID, userProperties.getProperties()?.toPostHogUserProperties(), +// IGNORED_OPTIONS +// ) } override fun trackError(throwable: Throwable) {