Inject SentryDsn the same way we do with SentrySdkDsn so we can fake it for tests
This commit is contained in:
parent
de694cecdb
commit
b5d6843725
7 changed files with 26 additions and 6 deletions
|
|
@ -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)
|
||||||
|
|
@ -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)
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue