From 367bbc7e4bea10881fb40b3e81025910d70e232a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Mart=C3=ADn?= Date: Tue, 16 Dec 2025 16:31:51 +0100 Subject: [PATCH] Create `addUserData` method in the analytics providers This allows us to globally add arbitrary data to the events and transactions --- .../services/analytics/impl/DefaultAnalyticsService.kt | 6 ++++++ .../analyticsproviders/api/trackers/AnalyticsTracker.kt | 5 +++++ .../analyticsproviders/sentry/SentryAnalyticsProvider.kt | 4 ++++ 3 files changed, 15 insertions(+) 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 df26766506..764d2e9796 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 @@ -149,6 +149,12 @@ class DefaultAnalyticsService( } } + override fun addUserData(key: String, value: String) { + if (userConsent.get()) { + analyticsProviders.onEach { it.addUserData(key, value) } + } + } + override fun startTransaction(name: String, operation: String?): AnalyticsTransaction { return if (userConsent.get()) { analyticsProviders.firstNotNullOfOrNull { it.startTransaction(name, operation) } diff --git a/services/analyticsproviders/api/src/main/kotlin/io/element/android/services/analyticsproviders/api/trackers/AnalyticsTracker.kt b/services/analyticsproviders/api/src/main/kotlin/io/element/android/services/analyticsproviders/api/trackers/AnalyticsTracker.kt index 4ada0cbdaa..9ac7d13f2a 100644 --- a/services/analyticsproviders/api/src/main/kotlin/io/element/android/services/analyticsproviders/api/trackers/AnalyticsTracker.kt +++ b/services/analyticsproviders/api/src/main/kotlin/io/element/android/services/analyticsproviders/api/trackers/AnalyticsTracker.kt @@ -35,6 +35,11 @@ interface AnalyticsTracker { * Super properties are added to any tracked event automatically. */ fun updateSuperProperties(updatedProperties: SuperProperties) + + /** + * Adds user data that will be sent with every event. + */ + fun addUserData(key: String, value: String) {} } fun AnalyticsTracker.captureInteraction(name: Interaction.Name, type: Interaction.InteractionType? = null) { diff --git a/services/analyticsproviders/sentry/src/main/kotlin/io/element/android/services/analyticsproviders/sentry/SentryAnalyticsProvider.kt b/services/analyticsproviders/sentry/src/main/kotlin/io/element/android/services/analyticsproviders/sentry/SentryAnalyticsProvider.kt index 8c2566946a..84167b52c3 100644 --- a/services/analyticsproviders/sentry/src/main/kotlin/io/element/android/services/analyticsproviders/sentry/SentryAnalyticsProvider.kt +++ b/services/analyticsproviders/sentry/src/main/kotlin/io/element/android/services/analyticsproviders/sentry/SentryAnalyticsProvider.kt @@ -86,6 +86,10 @@ class SentryAnalyticsProvider( override fun updateSuperProperties(updatedProperties: SuperProperties) { } + override fun addUserData(key: String, value: String) { + Sentry.setExtra(key, value) + } + override fun trackError(throwable: Throwable) { Sentry.captureException(throwable) }