Analytics: Fix a race condition
This commit is contained in:
parent
24a6080090
commit
2968be2233
|
@ -40,6 +40,7 @@ class DefaultVectorAnalytics @Inject constructor(
|
||||||
private var posthog: PostHog? = null
|
private var posthog: PostHog? = null
|
||||||
|
|
||||||
private var userConsent: Boolean = false
|
private var userConsent: Boolean = false
|
||||||
|
private var analyticsId: String? = null
|
||||||
|
|
||||||
override fun getUserConsent(): Flow<Boolean> {
|
override fun getUserConsent(): Flow<Boolean> {
|
||||||
return analyticsStore.userConsentFlow
|
return analyticsStore.userConsentFlow
|
||||||
|
@ -83,17 +84,23 @@ class DefaultVectorAnalytics @Inject constructor(
|
||||||
getAnalyticsId()
|
getAnalyticsId()
|
||||||
.onEach { id ->
|
.onEach { id ->
|
||||||
Timber.tag(analyticsTag.value).d("Analytics Id updated to '$id'")
|
Timber.tag(analyticsTag.value).d("Analytics Id updated to '$id'")
|
||||||
if (id.isEmpty()) {
|
analyticsId = id
|
||||||
Timber.tag(analyticsTag.value).d("reset")
|
identifyPostHog()
|
||||||
posthog?.reset()
|
|
||||||
} else {
|
|
||||||
Timber.tag(analyticsTag.value).d("identify")
|
|
||||||
posthog?.identify(id)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.launchIn(GlobalScope)
|
.launchIn(GlobalScope)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun identifyPostHog() {
|
||||||
|
val id = analyticsId ?: return
|
||||||
|
if (id.isEmpty()) {
|
||||||
|
Timber.tag(analyticsTag.value).d("reset")
|
||||||
|
posthog?.reset()
|
||||||
|
} else {
|
||||||
|
Timber.tag(analyticsTag.value).d("identify")
|
||||||
|
posthog?.identify(id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Suppress("EXPERIMENTAL_API_USAGE")
|
@Suppress("EXPERIMENTAL_API_USAGE")
|
||||||
private fun observeUserConsent() {
|
private fun observeUserConsent() {
|
||||||
getUserConsent()
|
getUserConsent()
|
||||||
|
@ -134,6 +141,8 @@ class DefaultVectorAnalytics @Inject constructor(
|
||||||
.collectDeviceId(false)
|
.collectDeviceId(false)
|
||||||
.logLevel(getLogLevel())
|
.logLevel(getLogLevel())
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
|
identifyPostHog()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getLogLevel(): PostHog.LogLevel {
|
private fun getLogLevel(): PostHog.LogLevel {
|
||||||
|
|
Loading…
Reference in New Issue