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 16cac5722d..fb542b7f28 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 @@ -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( } 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.keepOnlyNonNullValues(): Map { } return result } + +/** + * Properties which will be added to all Events and Screens. + */ +private val extraProperties: Map = mapOf( + "cryptoSDK" to Error.CryptoSDK.Rust +) + +private fun Map?.withExtraProperties(): Map { + return orEmpty() + extraProperties +}