mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-03 16:10:00 +00:00
Inject SentryDsn the same way we do with SentrySdkDsn so we can fake it for tests
This commit is contained in:
committed by
Jorge Martin Espinosa
parent
2590659637
commit
480376ef9b
@@ -17,7 +17,7 @@ import io.element.android.features.lockscreen.api.LockScreenService
|
|||||||
import io.element.android.features.rageshake.api.reporter.BugReporter
|
import io.element.android.features.rageshake.api.reporter.BugReporter
|
||||||
import io.element.android.libraries.core.meta.BuildMeta
|
import io.element.android.libraries.core.meta.BuildMeta
|
||||||
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher
|
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher
|
||||||
import io.element.android.libraries.di.annotations.SentrySdkDsn
|
import io.element.android.libraries.di.identifiers.SentrySdkDsn
|
||||||
import io.element.android.libraries.featureflag.api.FeatureFlagService
|
import io.element.android.libraries.featureflag.api.FeatureFlagService
|
||||||
import io.element.android.libraries.matrix.api.platform.InitPlatformService
|
import io.element.android.libraries.matrix.api.platform.InitPlatformService
|
||||||
import io.element.android.libraries.matrix.api.tracing.TracingService
|
import io.element.android.libraries.matrix.api.tracing.TracingService
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2025 Element Creations Ltd.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
|
||||||
|
* Please see LICENSE files in the repository root for full details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.element.android.libraries.di.identifiers
|
||||||
|
|
||||||
|
@JvmInline
|
||||||
|
value class SentryDsn(val value: String)
|
||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
* Please see LICENSE files in the repository root for full details.
|
* Please see LICENSE files in the repository root for full details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package io.element.android.libraries.di.annotations
|
package io.element.android.libraries.di.identifiers
|
||||||
|
|
||||||
@JvmInline
|
@JvmInline
|
||||||
value class SentrySdkDsn(val value: String)
|
value class SentrySdkDsn(val value: String)
|
||||||
+1
-1
@@ -11,7 +11,7 @@ import dev.zacsweers.metro.AppScope
|
|||||||
import dev.zacsweers.metro.BindingContainer
|
import dev.zacsweers.metro.BindingContainer
|
||||||
import dev.zacsweers.metro.ContributesTo
|
import dev.zacsweers.metro.ContributesTo
|
||||||
import dev.zacsweers.metro.Provides
|
import dev.zacsweers.metro.Provides
|
||||||
import io.element.android.libraries.di.annotations.SentrySdkDsn
|
import io.element.android.libraries.di.identifiers.SentrySdkDsn
|
||||||
|
|
||||||
@BindingContainer
|
@BindingContainer
|
||||||
@ContributesTo(AppScope::class)
|
@ContributesTo(AppScope::class)
|
||||||
|
|||||||
+3
-1
@@ -21,6 +21,7 @@ import io.element.android.libraries.core.data.ByteUnit
|
|||||||
import io.element.android.libraries.core.meta.BuildMeta
|
import io.element.android.libraries.core.meta.BuildMeta
|
||||||
import io.element.android.libraries.core.meta.BuildType
|
import io.element.android.libraries.core.meta.BuildType
|
||||||
import io.element.android.libraries.di.annotations.ApplicationContext
|
import io.element.android.libraries.di.annotations.ApplicationContext
|
||||||
|
import io.element.android.libraries.di.identifiers.SentryDsn
|
||||||
import io.element.android.libraries.matrix.api.analytics.GetDatabaseSizesUseCase
|
import io.element.android.libraries.matrix.api.analytics.GetDatabaseSizesUseCase
|
||||||
import io.element.android.services.analyticsproviders.api.AnalyticsProvider
|
import io.element.android.services.analyticsproviders.api.AnalyticsProvider
|
||||||
import io.element.android.services.analyticsproviders.api.AnalyticsTransaction
|
import io.element.android.services.analyticsproviders.api.AnalyticsTransaction
|
||||||
@@ -40,6 +41,7 @@ import timber.log.Timber
|
|||||||
@Inject
|
@Inject
|
||||||
class SentryAnalyticsProvider(
|
class SentryAnalyticsProvider(
|
||||||
@ApplicationContext private val context: Context,
|
@ApplicationContext private val context: Context,
|
||||||
|
private val sentryDsn: SentryDsn?,
|
||||||
private val buildMeta: BuildMeta,
|
private val buildMeta: BuildMeta,
|
||||||
private val getDatabaseSizesUseCase: GetDatabaseSizesUseCase,
|
private val getDatabaseSizesUseCase: GetDatabaseSizesUseCase,
|
||||||
private val appNavigationStateService: AppNavigationStateService,
|
private val appNavigationStateService: AppNavigationStateService,
|
||||||
@@ -50,7 +52,7 @@ class SentryAnalyticsProvider(
|
|||||||
Timber.tag(analyticsTag.value).d("Initializing Sentry")
|
Timber.tag(analyticsTag.value).d("Initializing Sentry")
|
||||||
if (Sentry.isEnabled()) return
|
if (Sentry.isEnabled()) return
|
||||||
|
|
||||||
val dsn = SentryConfig.DSN.ifBlank {
|
val dsn = sentryDsn?.value ?: run {
|
||||||
Timber.w("No Sentry DSN provided, Sentry will not be initialized")
|
Timber.w("No Sentry DSN provided, Sentry will not be initialized")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-2
@@ -11,12 +11,16 @@ import dev.zacsweers.metro.AppScope
|
|||||||
import dev.zacsweers.metro.BindingContainer
|
import dev.zacsweers.metro.BindingContainer
|
||||||
import dev.zacsweers.metro.ContributesTo
|
import dev.zacsweers.metro.ContributesTo
|
||||||
import dev.zacsweers.metro.Provides
|
import dev.zacsweers.metro.Provides
|
||||||
import io.element.android.libraries.di.annotations.SentrySdkDsn
|
import io.element.android.libraries.di.identifiers.SentryDsn
|
||||||
|
import io.element.android.libraries.di.identifiers.SentrySdkDsn
|
||||||
import io.element.android.services.analyticsproviders.sentry.SentryConfig
|
import io.element.android.services.analyticsproviders.sentry.SentryConfig
|
||||||
|
|
||||||
@BindingContainer
|
@BindingContainer
|
||||||
@ContributesTo(AppScope::class)
|
@ContributesTo(AppScope::class)
|
||||||
object SentryModule {
|
object SentryModule {
|
||||||
@Provides
|
@Provides
|
||||||
fun provideSentrySdkDsn(): SentrySdkDsn? = SentrySdkDsn(SentryConfig.SDK_DSN)
|
fun provideSentryDsn(): SentryDsn? = SentryConfig.DSN.takeIf { it.isNotBlank() }?.let(::SentryDsn)
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
fun provideSentrySdkDsn(): SentrySdkDsn? = SentryConfig.SDK_DSN.takeIf { it.isNotBlank() }?.let(::SentrySdkDsn)
|
||||||
}
|
}
|
||||||
|
|||||||
+3
@@ -16,6 +16,7 @@ import im.vector.app.features.analytics.plan.SuperProperties
|
|||||||
import im.vector.app.features.analytics.plan.UserProperties
|
import im.vector.app.features.analytics.plan.UserProperties
|
||||||
import io.element.android.libraries.core.data.megaBytes
|
import io.element.android.libraries.core.data.megaBytes
|
||||||
import io.element.android.libraries.core.meta.BuildMeta
|
import io.element.android.libraries.core.meta.BuildMeta
|
||||||
|
import io.element.android.libraries.di.identifiers.SentryDsn
|
||||||
import io.element.android.libraries.matrix.api.analytics.GetDatabaseSizesUseCase
|
import io.element.android.libraries.matrix.api.analytics.GetDatabaseSizesUseCase
|
||||||
import io.element.android.libraries.matrix.api.analytics.SdkStoreSizes
|
import io.element.android.libraries.matrix.api.analytics.SdkStoreSizes
|
||||||
import io.element.android.libraries.matrix.test.A_SESSION_ID
|
import io.element.android.libraries.matrix.test.A_SESSION_ID
|
||||||
@@ -161,11 +162,13 @@ class SentryAnalyticsProviderTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun createSentryAnalyticsProvider(
|
private fun createSentryAnalyticsProvider(
|
||||||
|
sentryDsn: SentryDsn? = SentryDsn("https://1234@sentry.com/a"),
|
||||||
buildMeta: BuildMeta = aBuildMeta(),
|
buildMeta: BuildMeta = aBuildMeta(),
|
||||||
getDatabaseSizesUseCase: GetDatabaseSizesUseCase = GetDatabaseSizesUseCase { Result.success(SdkStoreSizes(null, null, null, null)) },
|
getDatabaseSizesUseCase: GetDatabaseSizesUseCase = GetDatabaseSizesUseCase { Result.success(SdkStoreSizes(null, null, null, null)) },
|
||||||
appNavigationStateService: FakeAppNavigationStateService = FakeAppNavigationStateService(),
|
appNavigationStateService: FakeAppNavigationStateService = FakeAppNavigationStateService(),
|
||||||
) = SentryAnalyticsProvider(
|
) = SentryAnalyticsProvider(
|
||||||
context = InstrumentationRegistry.getInstrumentation().targetContext,
|
context = InstrumentationRegistry.getInstrumentation().targetContext,
|
||||||
|
sentryDsn = sentryDsn,
|
||||||
buildMeta = buildMeta,
|
buildMeta = buildMeta,
|
||||||
getDatabaseSizesUseCase = getDatabaseSizesUseCase,
|
getDatabaseSizesUseCase = getDatabaseSizesUseCase,
|
||||||
appNavigationStateService = appNavigationStateService,
|
appNavigationStateService = appNavigationStateService,
|
||||||
|
|||||||
Reference in New Issue
Block a user