Metro 0.10.0: Classes annotated with ContributesIntoSet do not need to be annotated with Inject.

This commit is contained in:
Benoit Marty
2026-01-20 10:13:39 +01:00
parent 635d94ec72
commit 657a610f53
24 changed files with 25 additions and 46 deletions

View File

@@ -10,14 +10,12 @@ package io.element.android.features.migration.impl.migrations
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.features.rageshake.api.logs.LogFilesRemover import io.element.android.features.rageshake.api.logs.LogFilesRemover
/** /**
* Remove existing logs from the device to remove any leaks of sensitive data. * Remove existing logs from the device to remove any leaks of sensitive data.
*/ */
@ContributesIntoSet(AppScope::class) @ContributesIntoSet(AppScope::class)
@Inject
class AppMigration01( class AppMigration01(
private val logFilesRemover: LogFilesRemover, private val logFilesRemover: LogFilesRemover,
) : AppMigration { ) : AppMigration {

View File

@@ -10,7 +10,6 @@ package io.element.android.features.migration.impl.migrations
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.SessionId
import io.element.android.libraries.preferences.api.store.SessionPreferencesStoreFactory import io.element.android.libraries.preferences.api.store.SessionPreferencesStoreFactory
import io.element.android.libraries.sessionstorage.api.SessionStore import io.element.android.libraries.sessionstorage.api.SessionStore
@@ -21,7 +20,6 @@ import kotlinx.coroutines.coroutineScope
* This way we don't force existing users to verify their session again. * This way we don't force existing users to verify their session again.
*/ */
@ContributesIntoSet(AppScope::class) @ContributesIntoSet(AppScope::class)
@Inject
class AppMigration02( class AppMigration02(
private val sessionStore: SessionStore, private val sessionStore: SessionStore,
private val sessionPreferenceStoreFactory: SessionPreferencesStoreFactory, private val sessionPreferenceStoreFactory: SessionPreferencesStoreFactory,

View File

@@ -10,13 +10,11 @@ package io.element.android.features.migration.impl.migrations
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
/** /**
* This performs the same operation as [AppMigration01], since we need to clear the local logs again. * This performs the same operation as [AppMigration01], since we need to clear the local logs again.
*/ */
@ContributesIntoSet(AppScope::class) @ContributesIntoSet(AppScope::class)
@Inject
class AppMigration03( class AppMigration03(
private val migration01: AppMigration01, private val migration01: AppMigration01,
) : AppMigration { ) : AppMigration {

View File

@@ -11,7 +11,6 @@ package io.element.android.features.migration.impl.migrations
import android.content.Context import android.content.Context
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.core.extensions.runCatchingExceptions
import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.di.annotations.ApplicationContext
@@ -19,13 +18,13 @@ import io.element.android.libraries.di.annotations.ApplicationContext
* Remove notifications.bin file, used to store notification data locally. * Remove notifications.bin file, used to store notification data locally.
*/ */
@ContributesIntoSet(AppScope::class) @ContributesIntoSet(AppScope::class)
@Inject
class AppMigration04( class AppMigration04(
@ApplicationContext private val context: Context, @ApplicationContext private val context: Context,
) : AppMigration { ) : AppMigration {
companion object { companion object {
internal const val NOTIFICATION_FILE_NAME = "notifications.bin" internal const val NOTIFICATION_FILE_NAME = "notifications.bin"
} }
override val order: Int = 4 override val order: Int = 4
override suspend fun migrate(isFreshInstall: Boolean) { override suspend fun migrate(isFreshInstall: Boolean) {

View File

@@ -10,13 +10,11 @@ package io.element.android.features.migration.impl.migrations
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.libraries.di.BaseDirectory import io.element.android.libraries.di.BaseDirectory
import io.element.android.libraries.sessionstorage.api.SessionStore import io.element.android.libraries.sessionstorage.api.SessionStore
import java.io.File import java.io.File
@ContributesIntoSet(AppScope::class) @ContributesIntoSet(AppScope::class)
@Inject
class AppMigration05( class AppMigration05(
private val sessionStore: SessionStore, private val sessionStore: SessionStore,
@BaseDirectory private val baseDirectory: File, @BaseDirectory private val baseDirectory: File,

View File

@@ -10,7 +10,6 @@ package io.element.android.features.migration.impl.migrations
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.libraries.di.CacheDirectory import io.element.android.libraries.di.CacheDirectory
import io.element.android.libraries.sessionstorage.api.SessionStore import io.element.android.libraries.sessionstorage.api.SessionStore
import java.io.File import java.io.File
@@ -19,7 +18,6 @@ import java.io.File
* Create the cache directory for the existing sessions. * Create the cache directory for the existing sessions.
*/ */
@ContributesIntoSet(AppScope::class) @ContributesIntoSet(AppScope::class)
@Inject
class AppMigration06( class AppMigration06(
private val sessionStore: SessionStore, private val sessionStore: SessionStore,
@CacheDirectory private val cacheDirectory: File, @CacheDirectory private val cacheDirectory: File,

View File

@@ -10,14 +10,12 @@ package io.element.android.features.migration.impl.migrations
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.features.rageshake.api.logs.LogFilesRemover import io.element.android.features.rageshake.api.logs.LogFilesRemover
/** /**
* Delete the previous log files. * Delete the previous log files.
*/ */
@ContributesIntoSet(AppScope::class) @ContributesIntoSet(AppScope::class)
@Inject
class AppMigration07( class AppMigration07(
private val logFilesRemover: LogFilesRemover, private val logFilesRemover: LogFilesRemover,
) : AppMigration { ) : AppMigration {

View File

@@ -10,7 +10,6 @@ package io.element.android.features.migration.impl.migrations
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.features.announcement.api.Announcement import io.element.android.features.announcement.api.Announcement
import io.element.android.features.announcement.api.AnnouncementService import io.element.android.features.announcement.api.AnnouncementService
@@ -18,7 +17,6 @@ import io.element.android.features.announcement.api.AnnouncementService
* Ensure the new notification sound banner is displayed, but only on application upgrade. * Ensure the new notification sound banner is displayed, but only on application upgrade.
*/ */
@ContributesIntoSet(AppScope::class) @ContributesIntoSet(AppScope::class)
@Inject
class AppMigration08( class AppMigration08(
private val announcementService: AnnouncementService, private val announcementService: AnnouncementService,
) : AppMigration { ) : AppMigration {

View File

@@ -9,7 +9,6 @@ package io.element.android.features.migration.impl.migrations
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.libraries.matrix.api.MatrixClientProvider import io.element.android.libraries.matrix.api.MatrixClientProvider
import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.SessionId
import io.element.android.libraries.sessionstorage.api.SessionStore import io.element.android.libraries.sessionstorage.api.SessionStore
@@ -18,7 +17,6 @@ import io.element.android.libraries.sessionstorage.api.SessionStore
* Ensure we clear the well-known cached config, since it could be invalid due to an SDK issue. * Ensure we clear the well-known cached config, since it could be invalid due to an SDK issue.
*/ */
@ContributesIntoSet(AppScope::class) @ContributesIntoSet(AppScope::class)
@Inject
class AppMigration09( class AppMigration09(
private val sessionStore: SessionStore, private val sessionStore: SessionStore,
private val matrixClientProvider: MatrixClientProvider, private val matrixClientProvider: MatrixClientProvider,

View File

@@ -12,7 +12,6 @@ import android.Manifest
import android.os.Build import android.os.Build
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.libraries.permissions.api.PermissionStateProvider import io.element.android.libraries.permissions.api.PermissionStateProvider
import io.element.android.libraries.permissions.impl.R import io.element.android.libraries.permissions.impl.R
import io.element.android.libraries.permissions.impl.action.PermissionActions import io.element.android.libraries.permissions.impl.action.PermissionActions
@@ -26,7 +25,6 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
@ContributesIntoSet(AppScope::class) @ContributesIntoSet(AppScope::class)
@Inject
class NotificationTroubleshootCheckPermissionTest( class NotificationTroubleshootCheckPermissionTest(
private val permissionStateProvider: PermissionStateProvider, private val permissionStateProvider: PermissionStateProvider,
private val sdkVersionProvider: BuildVersionSdkIntProvider, private val sdkVersionProvider: BuildVersionSdkIntProvider,

View File

@@ -9,7 +9,6 @@
package io.element.android.libraries.push.impl.troubleshoot package io.element.android.libraries.push.impl.troubleshoot
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.libraries.di.SessionScope import io.element.android.libraries.di.SessionScope
import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.SessionId
import io.element.android.libraries.push.api.PushService import io.element.android.libraries.push.api.PushService
@@ -22,7 +21,6 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
@ContributesIntoSet(SessionScope::class) @ContributesIntoSet(SessionScope::class)
@Inject
class CurrentPushProviderTest( class CurrentPushProviderTest(
private val pushService: PushService, private val pushService: PushService,
private val sessionId: SessionId, private val sessionId: SessionId,

View File

@@ -9,7 +9,6 @@
package io.element.android.libraries.push.impl.troubleshoot package io.element.android.libraries.push.impl.troubleshoot
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.libraries.di.SessionScope import io.element.android.libraries.di.SessionScope
import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.push.impl.R import io.element.android.libraries.push.impl.R
@@ -22,7 +21,6 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
@ContributesIntoSet(SessionScope::class) @ContributesIntoSet(SessionScope::class)
@Inject
class IgnoredUsersTest( class IgnoredUsersTest(
private val matrixClient: MatrixClient, private val matrixClient: MatrixClient,
private val stringProvider: StringProvider, private val stringProvider: StringProvider,

View File

@@ -10,7 +10,6 @@ package io.element.android.libraries.push.impl.troubleshoot
import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.graphics.toArgb
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.appconfig.NotificationConfig import io.element.android.appconfig.NotificationConfig
import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.enterprise.api.EnterpriseService
import io.element.android.libraries.di.SessionScope import io.element.android.libraries.di.SessionScope
@@ -31,7 +30,6 @@ import timber.log.Timber
import kotlin.time.Duration.Companion.seconds import kotlin.time.Duration.Companion.seconds
@ContributesIntoSet(SessionScope::class) @ContributesIntoSet(SessionScope::class)
@Inject
class NotificationTest( class NotificationTest(
private val sessionId: SessionId, private val sessionId: SessionId,
private val notificationCreator: NotificationCreator, private val notificationCreator: NotificationCreator,

View File

@@ -9,7 +9,6 @@
package io.element.android.libraries.push.impl.troubleshoot package io.element.android.libraries.push.impl.troubleshoot
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.libraries.di.SessionScope import io.element.android.libraries.di.SessionScope
import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.SessionId
import io.element.android.libraries.push.api.PushService import io.element.android.libraries.push.api.PushService
@@ -31,7 +30,6 @@ import timber.log.Timber
import kotlin.time.Duration.Companion.seconds import kotlin.time.Duration.Companion.seconds
@ContributesIntoSet(SessionScope::class) @ContributesIntoSet(SessionScope::class)
@Inject
class PushLoopbackTest( class PushLoopbackTest(
private val sessionId: SessionId, private val sessionId: SessionId,
private val pushService: PushService, private val pushService: PushService,

View File

@@ -10,7 +10,6 @@ package io.element.android.libraries.push.impl.troubleshoot
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.libraries.push.impl.R import io.element.android.libraries.push.impl.R
import io.element.android.libraries.pushproviders.api.PushProvider import io.element.android.libraries.pushproviders.api.PushProvider
import io.element.android.libraries.troubleshoot.api.test.NotificationTroubleshootTest import io.element.android.libraries.troubleshoot.api.test.NotificationTroubleshootTest
@@ -21,7 +20,6 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
@ContributesIntoSet(AppScope::class) @ContributesIntoSet(AppScope::class)
@Inject
class PushProvidersTest( class PushProvidersTest(
pushProviders: Set<@JvmSuppressWildcards PushProvider>, pushProviders: Set<@JvmSuppressWildcards PushProvider>,
private val stringProvider: StringProvider, private val stringProvider: StringProvider,

View File

@@ -10,7 +10,6 @@ package io.element.android.libraries.pushproviders.firebase
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.libraries.core.log.logger.LoggerTag import io.element.android.libraries.core.log.logger.LoggerTag
import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.SessionId
@@ -23,7 +22,6 @@ import timber.log.Timber
private val loggerTag = LoggerTag("FirebasePushProvider", LoggerTag.PushLoggerTag) private val loggerTag = LoggerTag("FirebasePushProvider", LoggerTag.PushLoggerTag)
@ContributesIntoSet(AppScope::class) @ContributesIntoSet(AppScope::class)
@Inject
class FirebasePushProvider( class FirebasePushProvider(
private val firebaseStore: FirebaseStore, private val firebaseStore: FirebaseStore,
private val pusherSubscriber: PusherSubscriber, private val pusherSubscriber: PusherSubscriber,

View File

@@ -10,7 +10,6 @@ package io.element.android.libraries.pushproviders.firebase.troubleshoot
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.libraries.pushproviders.firebase.FirebaseConfig import io.element.android.libraries.pushproviders.firebase.FirebaseConfig
import io.element.android.libraries.pushproviders.firebase.IsPlayServiceAvailable import io.element.android.libraries.pushproviders.firebase.IsPlayServiceAvailable
import io.element.android.libraries.pushproviders.firebase.R import io.element.android.libraries.pushproviders.firebase.R
@@ -23,7 +22,6 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
@ContributesIntoSet(AppScope::class) @ContributesIntoSet(AppScope::class)
@Inject
class FirebaseAvailabilityTest( class FirebaseAvailabilityTest(
private val isPlayServiceAvailable: IsPlayServiceAvailable, private val isPlayServiceAvailable: IsPlayServiceAvailable,
private val stringProvider: StringProvider, private val stringProvider: StringProvider,

View File

@@ -10,7 +10,6 @@ package io.element.android.libraries.pushproviders.firebase.troubleshoot
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.libraries.pushproviders.firebase.FirebaseConfig import io.element.android.libraries.pushproviders.firebase.FirebaseConfig
import io.element.android.libraries.pushproviders.firebase.FirebaseStore import io.element.android.libraries.pushproviders.firebase.FirebaseStore
import io.element.android.libraries.pushproviders.firebase.FirebaseTroubleshooter import io.element.android.libraries.pushproviders.firebase.FirebaseTroubleshooter
@@ -28,7 +27,6 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
@ContributesIntoSet(AppScope::class) @ContributesIntoSet(AppScope::class)
@Inject
class FirebaseTokenTest( class FirebaseTokenTest(
private val firebaseStore: FirebaseStore, private val firebaseStore: FirebaseStore,
private val firebaseTroubleshooter: FirebaseTroubleshooter, private val firebaseTroubleshooter: FirebaseTroubleshooter,

View File

@@ -10,7 +10,6 @@ package io.element.android.libraries.pushproviders.unifiedpush
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.SessionId
import io.element.android.libraries.pushproviders.api.Config import io.element.android.libraries.pushproviders.api.Config
@@ -19,7 +18,6 @@ import io.element.android.libraries.pushproviders.api.PushProvider
import io.element.android.libraries.pushstore.api.clientsecret.PushClientSecret import io.element.android.libraries.pushstore.api.clientsecret.PushClientSecret
@ContributesIntoSet(AppScope::class) @ContributesIntoSet(AppScope::class)
@Inject
class UnifiedPushProvider( class UnifiedPushProvider(
private val unifiedPushDistributorProvider: UnifiedPushDistributorProvider, private val unifiedPushDistributorProvider: UnifiedPushDistributorProvider,
private val registerUnifiedPushUseCase: RegisterUnifiedPushUseCase, private val registerUnifiedPushUseCase: RegisterUnifiedPushUseCase,

View File

@@ -9,7 +9,6 @@
package io.element.android.libraries.pushproviders.unifiedpush.troubleshoot package io.element.android.libraries.pushproviders.unifiedpush.troubleshoot
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.coroutine.CoroutineDispatchers
import io.element.android.libraries.di.SessionScope import io.element.android.libraries.di.SessionScope
import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.SessionId
@@ -25,7 +24,6 @@ import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ContributesIntoSet(SessionScope::class) @ContributesIntoSet(SessionScope::class)
@Inject
class UnifiedPushMatrixGatewayTest( class UnifiedPushMatrixGatewayTest(
private val sessionId: SessionId, private val sessionId: SessionId,
private val unifiedPushApiFactory: UnifiedPushApiFactory, private val unifiedPushApiFactory: UnifiedPushApiFactory,

View File

@@ -10,7 +10,6 @@ package io.element.android.libraries.pushproviders.unifiedpush.troubleshoot
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import io.element.android.libraries.pushproviders.unifiedpush.R import io.element.android.libraries.pushproviders.unifiedpush.R
import io.element.android.libraries.pushproviders.unifiedpush.UnifiedPushConfig import io.element.android.libraries.pushproviders.unifiedpush.UnifiedPushConfig
import io.element.android.libraries.pushproviders.unifiedpush.UnifiedPushDistributorProvider import io.element.android.libraries.pushproviders.unifiedpush.UnifiedPushDistributorProvider
@@ -24,7 +23,6 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
@ContributesIntoSet(AppScope::class) @ContributesIntoSet(AppScope::class)
@Inject
class UnifiedPushTest( class UnifiedPushTest(
private val unifiedPushDistributorProvider: UnifiedPushDistributorProvider, private val unifiedPushDistributorProvider: UnifiedPushDistributorProvider,
private val openDistributorWebPageAction: OpenDistributorWebPageAction, private val openDistributorWebPageAction: OpenDistributorWebPageAction,

View File

@@ -11,7 +11,6 @@ package io.element.android.services.analyticsproviders.posthog
import com.posthog.PostHogInterface import com.posthog.PostHogInterface
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import im.vector.app.features.analytics.itf.VectorAnalyticsEvent import im.vector.app.features.analytics.itf.VectorAnalyticsEvent
import im.vector.app.features.analytics.itf.VectorAnalyticsScreen import im.vector.app.features.analytics.itf.VectorAnalyticsScreen
import im.vector.app.features.analytics.plan.SuperProperties import im.vector.app.features.analytics.plan.SuperProperties
@@ -25,7 +24,6 @@ import timber.log.Timber
// private val IGNORED_OPTIONS: Options? = null // private val IGNORED_OPTIONS: Options? = null
@ContributesIntoSet(AppScope::class) @ContributesIntoSet(AppScope::class)
@Inject
class PosthogAnalyticsProvider( class PosthogAnalyticsProvider(
private val postHogFactory: PostHogFactory, private val postHogFactory: PostHogFactory,
) : AnalyticsProvider { ) : AnalyticsProvider {

View File

@@ -12,7 +12,6 @@ import android.content.Context
import androidx.annotation.VisibleForTesting import androidx.annotation.VisibleForTesting
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject
import im.vector.app.features.analytics.itf.VectorAnalyticsEvent import im.vector.app.features.analytics.itf.VectorAnalyticsEvent
import im.vector.app.features.analytics.itf.VectorAnalyticsScreen import im.vector.app.features.analytics.itf.VectorAnalyticsScreen
import im.vector.app.features.analytics.plan.SuperProperties import im.vector.app.features.analytics.plan.SuperProperties
@@ -38,7 +37,6 @@ import kotlinx.coroutines.runBlocking
import timber.log.Timber import timber.log.Timber
@ContributesIntoSet(AppScope::class) @ContributesIntoSet(AppScope::class)
@Inject
class SentryAnalyticsProvider( class SentryAnalyticsProvider(
@ApplicationContext private val context: Context, @ApplicationContext private val context: Context,
private val sentryDsn: SentryDsn?, private val sentryDsn: SentryDsn?,

View File

@@ -15,6 +15,8 @@ import com.lemonappdev.konsist.api.verify.assertFalse
import com.lemonappdev.konsist.api.verify.assertTrue import com.lemonappdev.konsist.api.verify.assertTrue
import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.Assisted
import dev.zacsweers.metro.ContributesBinding import dev.zacsweers.metro.ContributesBinding
import dev.zacsweers.metro.ContributesIntoMap
import dev.zacsweers.metro.ContributesIntoSet
import dev.zacsweers.metro.Inject import dev.zacsweers.metro.Inject
import org.junit.Test import org.junit.Test
@@ -46,4 +48,26 @@ class KonsistDiTest {
classDeclaration.hasAnnotationOf(Inject::class) classDeclaration.hasAnnotationOf(Inject::class)
} }
} }
@Test
fun `class annotated with @ContributesIntoSet does not need to be annotated with @Inject anymore`() {
Konsist
.scopeFromProject()
.classes()
.withAnnotationOf(ContributesIntoSet::class)
.assertFalse { classDeclaration ->
classDeclaration.hasAnnotationOf(Inject::class)
}
}
@Test
fun `class annotated with @ContributesIntoMap does not need to be annotated with @Inject anymore`() {
Konsist
.scopeFromProject()
.classes()
.withAnnotationOf(ContributesIntoMap::class)
.assertFalse { classDeclaration ->
classDeclaration.hasAnnotationOf(Inject::class)
}
}
} }