Use Sentry breadcrumbs instead of logging new events (#4223)

This commit is contained in:
Jorge Martin Espinosa
2025-01-31 11:55:35 +01:00
committed by GitHub
parent be22163785
commit 620457705c

View File

@@ -19,12 +19,16 @@ import io.element.android.libraries.di.AppScope
import io.element.android.libraries.di.ApplicationContext
import io.element.android.services.analyticsproviders.api.AnalyticsProvider
import io.element.android.services.analyticsproviders.sentry.log.analyticsTag
import io.sentry.Breadcrumb
import io.sentry.Sentry
import io.sentry.SentryLevel
import io.sentry.SentryOptions
import io.sentry.android.core.SentryAndroid
import timber.log.Timber
import javax.inject.Inject
import kotlin.collections.component1
import kotlin.collections.component2
import kotlin.collections.iterator
import kotlin.collections.orEmpty
@ContributesMultibinding(AppScope::class)
class SentryAnalyticsProvider @Inject constructor(
@@ -59,11 +63,23 @@ class SentryAnalyticsProvider @Inject constructor(
}
override fun capture(event: VectorAnalyticsEvent) {
Sentry.captureMessage("Event: ${event.getName()}", SentryLevel.INFO)
val breadcrumb = Breadcrumb(event.getName()).apply {
category = "event"
for ((key, value) in event.getProperties().orEmpty()) {
setData(key, value.toString())
}
}
Sentry.addBreadcrumb(breadcrumb)
}
override fun screen(screen: VectorAnalyticsScreen) {
Sentry.captureMessage("Screen: ${screen.getName()}", SentryLevel.INFO)
val breadcrumb = Breadcrumb(screen.getName()).apply {
category = "screen"
for ((key, value) in screen.getProperties().orEmpty()) {
setData(key, value.toString())
}
}
Sentry.addBreadcrumb(breadcrumb)
}
override fun updateUserProperties(userProperties: UserProperties) {