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
de694cecdb
commit
b5d6843725
@@ -11,7 +11,7 @@ import dev.zacsweers.metro.AppScope
|
||||
import dev.zacsweers.metro.BindingContainer
|
||||
import dev.zacsweers.metro.ContributesTo
|
||||
import dev.zacsweers.metro.Provides
|
||||
import io.element.android.libraries.di.annotations.SentrySdkDsn
|
||||
import io.element.android.libraries.di.identifiers.SentrySdkDsn
|
||||
|
||||
@BindingContainer
|
||||
@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.BuildType
|
||||
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.services.analyticsproviders.api.AnalyticsProvider
|
||||
import io.element.android.services.analyticsproviders.api.AnalyticsTransaction
|
||||
@@ -40,6 +41,7 @@ import timber.log.Timber
|
||||
@Inject
|
||||
class SentryAnalyticsProvider(
|
||||
@ApplicationContext private val context: Context,
|
||||
private val sentryDsn: SentryDsn?,
|
||||
private val buildMeta: BuildMeta,
|
||||
private val getDatabaseSizesUseCase: GetDatabaseSizesUseCase,
|
||||
private val appNavigationStateService: AppNavigationStateService,
|
||||
@@ -50,7 +52,7 @@ class SentryAnalyticsProvider(
|
||||
Timber.tag(analyticsTag.value).d("Initializing Sentry")
|
||||
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")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -11,12 +11,16 @@ import dev.zacsweers.metro.AppScope
|
||||
import dev.zacsweers.metro.BindingContainer
|
||||
import dev.zacsweers.metro.ContributesTo
|
||||
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
|
||||
|
||||
@BindingContainer
|
||||
@ContributesTo(AppScope::class)
|
||||
object SentryModule {
|
||||
@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 io.element.android.libraries.core.data.megaBytes
|
||||
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.SdkStoreSizes
|
||||
import io.element.android.libraries.matrix.test.A_SESSION_ID
|
||||
@@ -161,11 +162,13 @@ class SentryAnalyticsProviderTest {
|
||||
}
|
||||
|
||||
private fun createSentryAnalyticsProvider(
|
||||
sentryDsn: SentryDsn? = SentryDsn("https://1234@sentry.com/a"),
|
||||
buildMeta: BuildMeta = aBuildMeta(),
|
||||
getDatabaseSizesUseCase: GetDatabaseSizesUseCase = GetDatabaseSizesUseCase { Result.success(SdkStoreSizes(null, null, null, null)) },
|
||||
appNavigationStateService: FakeAppNavigationStateService = FakeAppNavigationStateService(),
|
||||
) = SentryAnalyticsProvider(
|
||||
context = InstrumentationRegistry.getInstrumentation().targetContext,
|
||||
sentryDsn = sentryDsn,
|
||||
buildMeta = buildMeta,
|
||||
getDatabaseSizesUseCase = getDatabaseSizesUseCase,
|
||||
appNavigationStateService = appNavigationStateService,
|
||||
|
||||
Reference in New Issue
Block a user