Browse Source

Add extra properties `"cryptoSDK" to Error.CryptoSDK.Rust` to all events and screen sent to PostHog.

pull/2544/head
Benoit Marty 6 months ago
parent
commit
73f80b314f
  1. 22
      services/analyticsproviders/posthog/src/main/kotlin/io/element/android/services/analyticsproviders/posthog/PosthogAnalyticsProvider.kt

22
services/analyticsproviders/posthog/src/main/kotlin/io/element/android/services/analyticsproviders/posthog/PosthogAnalyticsProvider.kt

@ -20,6 +20,7 @@ import com.posthog.PostHogInterface @@ -20,6 +20,7 @@ import com.posthog.PostHogInterface
import com.squareup.anvil.annotations.ContributesMultibinding
import im.vector.app.features.analytics.itf.VectorAnalyticsEvent
import im.vector.app.features.analytics.itf.VectorAnalyticsScreen
import im.vector.app.features.analytics.plan.Error
import im.vector.app.features.analytics.plan.UserProperties
import io.element.android.libraries.di.AppScope
import io.element.android.services.analyticsproviders.api.AnalyticsProvider
@ -56,11 +57,17 @@ class PosthogAnalyticsProvider @Inject constructor( @@ -56,11 +57,17 @@ class PosthogAnalyticsProvider @Inject constructor(
}
override fun capture(event: VectorAnalyticsEvent) {
posthog?.capture(event.getName(), properties = event.getProperties()?.keepOnlyNonNullValues())
posthog?.capture(
event = event.getName(),
properties = event.getProperties()?.keepOnlyNonNullValues().withExtraProperties(),
)
}
override fun screen(screen: VectorAnalyticsScreen) {
posthog?.screen(screen.getName(), properties = screen.getProperties())
posthog?.screen(
screenTitle = screen.getName(),
properties = screen.getProperties().withExtraProperties(),
)
}
override fun updateUserProperties(userProperties: UserProperties) {
@ -98,3 +105,14 @@ private fun Map<String, Any?>.keepOnlyNonNullValues(): Map<String, Any> { @@ -98,3 +105,14 @@ private fun Map<String, Any?>.keepOnlyNonNullValues(): Map<String, Any> {
}
return result
}
/**
* Properties which will be added to all Events and Screens.
*/
private val extraProperties: Map<String, Any> = mapOf(
"cryptoSDK" to Error.CryptoSDK.Rust
)
private fun Map<String, Any>?.withExtraProperties(): Map<String, Any> {
return orEmpty() + extraProperties
}

Loading…
Cancel
Save