mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2024-11-21 17:05:39 +03:00
Create Posthog instance only whe user consent is given, to avoid pinging Posthog server at startup when consent is not given.
Note that feature flag will not work, but for now they are not used. All the `?.takeIf { userConsent == true }` could be removed with this change, but let's keep them for safety...
This commit is contained in:
parent
8e9a364c8d
commit
6a3f5a50d9
1 changed files with 13 additions and 7 deletions
|
@ -41,19 +41,23 @@ private val IGNORED_OPTIONS: Options? = null
|
|||
|
||||
@Singleton
|
||||
class DefaultVectorAnalytics @Inject constructor(
|
||||
postHogFactory: PostHogFactory,
|
||||
private val postHogFactory: PostHogFactory,
|
||||
private val sentryAnalytics: SentryAnalytics,
|
||||
analyticsConfig: AnalyticsConfig,
|
||||
private val analyticsConfig: AnalyticsConfig,
|
||||
private val analyticsStore: AnalyticsStore,
|
||||
private val lateInitUserPropertiesFactory: LateInitUserPropertiesFactory,
|
||||
@NamedGlobalScope private val globalScope: CoroutineScope
|
||||
) : VectorAnalytics {
|
||||
|
||||
private val posthog: PostHog? = when {
|
||||
analyticsConfig.isEnabled -> postHogFactory.createPosthog()
|
||||
else -> {
|
||||
Timber.tag(analyticsTag.value).w("Analytics is disabled")
|
||||
null
|
||||
private var posthog: PostHog? = null
|
||||
|
||||
private fun createPosthog(): PostHog? {
|
||||
return when {
|
||||
analyticsConfig.isEnabled -> postHogFactory.createPosthog()
|
||||
else -> {
|
||||
Timber.tag(analyticsTag.value).w("Analytics is disabled")
|
||||
null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -150,6 +154,7 @@ class DefaultVectorAnalytics @Inject constructor(
|
|||
userConsent?.let { _userConsent ->
|
||||
when (_userConsent) {
|
||||
true -> {
|
||||
posthog = createPosthog()
|
||||
posthog?.optOut(false)
|
||||
identifyPostHog()
|
||||
pendingUserProperties?.let { doUpdateUserProperties(it) }
|
||||
|
@ -159,6 +164,7 @@ class DefaultVectorAnalytics @Inject constructor(
|
|||
// When opting out, ensure that the queue is flushed first, or it will be flushed later (after user has revoked consent)
|
||||
posthog?.flush()
|
||||
posthog?.optOut(true)
|
||||
posthog = null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue