diff --git a/app/src/main/java/com/nextcloud/client/di/AppModule.java b/app/src/main/java/com/nextcloud/client/di/AppModule.java deleted file mode 100644 index b4686f2c8fd5..000000000000 --- a/app/src/main/java/com/nextcloud/client/di/AppModule.java +++ /dev/null @@ -1,304 +0,0 @@ -/* - * Nextcloud - Android Client - * - * SPDX-FileCopyrightText: 2019 Chris Narkiewicz - * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only - */ - -package com.nextcloud.client.di; - -import android.accounts.AccountManager; -import android.app.Application; -import android.app.NotificationManager; -import android.content.ContentResolver; -import android.content.Context; -import android.content.SharedPreferences; -import android.content.pm.PackageManager; -import android.content.res.Resources; -import android.media.AudioManager; -import android.os.Handler; - -import com.nextcloud.client.account.CurrentAccountProvider; -import com.nextcloud.client.account.UserAccountManager; -import com.nextcloud.client.account.UserAccountManagerImpl; -import com.nextcloud.client.appinfo.AppInfo; -import com.nextcloud.client.core.AsyncRunner; -import com.nextcloud.client.core.Clock; -import com.nextcloud.client.core.ClockImpl; -import com.nextcloud.client.core.ThreadPoolAsyncRunner; -import com.nextcloud.client.database.dao.ArbitraryDataDao; -import com.nextcloud.client.device.DeviceInfo; -import com.nextcloud.client.jobs.operation.FileOperationHelper; -import com.nextcloud.client.logger.FileLogHandler; -import com.nextcloud.client.logger.Logger; -import com.nextcloud.client.logger.LoggerImpl; -import com.nextcloud.client.logger.LogsRepository; -import com.nextcloud.client.migrations.Migrations; -import com.nextcloud.client.migrations.MigrationsDb; -import com.nextcloud.client.migrations.MigrationsManager; -import com.nextcloud.client.migrations.MigrationsManagerImpl; -import com.nextcloud.client.network.ClientFactory; -import com.nextcloud.client.network.ConnectivityService; -import com.nextcloud.client.notifications.AppNotificationManager; -import com.nextcloud.client.notifications.AppNotificationManagerImpl; -import com.nextcloud.client.preferences.AppPreferences; -import com.nextcloud.client.utils.Throttler; -import com.nextcloud.utils.e2ee.E2EEActionResolver; -import com.nextcloud.utils.e2ee.E2EEKeyInspector; -import com.nextcloud.utils.thumbnail.FolderThumbnailGenerator; -import com.owncloud.android.authentication.PassCodeManager; -import com.owncloud.android.datamodel.ArbitraryDataProvider; -import com.owncloud.android.datamodel.ArbitraryDataProviderImpl; -import com.owncloud.android.datamodel.FileDataStorageManager; -import com.owncloud.android.datamodel.SyncedFolderProvider; -import com.owncloud.android.datamodel.UploadsStorageManager; -import com.owncloud.android.providers.UsersAndGroupsSearchConfig; -import com.owncloud.android.ui.activities.data.activities.ActivitiesRepository; -import com.owncloud.android.ui.activities.data.activities.ActivitiesServiceApi; -import com.owncloud.android.ui.activities.data.activities.ActivitiesServiceApiImpl; -import com.owncloud.android.ui.activities.data.activities.RemoteActivitiesRepository; -import com.owncloud.android.ui.activities.data.files.FilesRepository; -import com.owncloud.android.ui.activities.data.files.FilesServiceApiImpl; -import com.owncloud.android.ui.activities.data.files.RemoteFilesRepository; -import com.owncloud.android.ui.dialog.setupEncryption.CertificateValidator; -import com.owncloud.android.utils.theme.ViewThemeUtils; - -import org.greenrobot.eventbus.EventBus; - -import java.io.File; - -import javax.inject.Named; -import javax.inject.Provider; -import javax.inject.Singleton; - -import androidx.localbroadcastmanager.content.LocalBroadcastManager; -import dagger.Module; -import dagger.Provides; - -@Module(includes = {ComponentsModule.class, VariantComponentsModule.class, BuildTypeComponentsModule.class}) -class AppModule { - - @Provides - AccountManager accountManager(Application application) { - return (AccountManager) application.getSystemService(Context.ACCOUNT_SERVICE); - } - - @Provides - Context context(Application application) { - return application; - } - - @Provides - PackageManager packageManager(Application application) { - return application.getPackageManager(); - } - - @Provides - ContentResolver contentResolver(Context context) { - return context.getContentResolver(); - } - - @Provides - Resources resources(Application application) { - return application.getResources(); - } - - @Provides - UserAccountManager userAccountManager( - Context context, - AccountManager accountManager) { - return new UserAccountManagerImpl(context, accountManager); - } - - @Provides - ArbitraryDataProvider arbitraryDataProvider(ArbitraryDataDao dao) { - return new ArbitraryDataProviderImpl(dao); - } - - @Provides - SyncedFolderProvider syncedFolderProvider(ContentResolver contentResolver, - AppPreferences appPreferences, - Clock clock) { - return new SyncedFolderProvider(contentResolver, appPreferences, clock); - } - - @Provides - ActivitiesServiceApi activitiesServiceApi(UserAccountManager accountManager) { - return new ActivitiesServiceApiImpl(accountManager); - } - - @Provides - ActivitiesRepository activitiesRepository(ActivitiesServiceApi api) { - return new RemoteActivitiesRepository(api); - } - - @Provides - FilesRepository filesRepository(UserAccountManager accountManager, ClientFactory clientFactory) { - return new RemoteFilesRepository(new FilesServiceApiImpl(accountManager, clientFactory)); - } - - @Provides - UploadsStorageManager uploadsStorageManager(CurrentAccountProvider currentAccountProvider, - Context context) { - return new UploadsStorageManager(currentAccountProvider, context.getContentResolver()); - } - - @Provides - FileDataStorageManager fileDataStorageManager(CurrentAccountProvider currentAccountProvider, - Context context) { - return new FileDataStorageManager(currentAccountProvider.getUser(), context.getContentResolver()); - } - - @Provides - CurrentAccountProvider currentAccountProvider(UserAccountManager accountManager) { - return accountManager; - } - - @Provides - DeviceInfo deviceInfo() { - return new DeviceInfo(); - } - - @Provides - @Singleton - Clock clock() { - return new ClockImpl(); - } - - @Provides - @Singleton - Logger logger(Context context, Clock clock) { - File logDir = new File(context.getFilesDir(), "logs"); - FileLogHandler handler = new FileLogHandler(logDir, "log.txt", 1024 * 1024); - LoggerImpl logger = new LoggerImpl(clock, handler, new Handler(), 1000); - logger.start(); - return logger; - } - - @Provides - @Singleton - LogsRepository logsRepository(Logger logger) { - return (LogsRepository) logger; - } - - @Provides - @Singleton - AsyncRunner uiAsyncRunner() { - Handler uiHandler = new Handler(); - return new ThreadPoolAsyncRunner(uiHandler, 4, "ui"); - } - - @Provides - @Singleton - @Named("io") - AsyncRunner ioAsyncRunner() { - Handler uiHandler = new Handler(); - return new ThreadPoolAsyncRunner(uiHandler, 8, "io"); - } - - @Provides - NotificationManager notificationManager(Context context) { - return (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); - } - - @Provides - AudioManager audioManager(Context context) { - return (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); - } - - @Provides - @Singleton - EventBus eventBus() { - return EventBus.getDefault(); - } - - @Provides - @Singleton - MigrationsDb migrationsDb(Application application) { - SharedPreferences store = application.getSharedPreferences("migrations", Context.MODE_PRIVATE); - return new MigrationsDb(store); - } - - @Provides - @Singleton - MigrationsManager migrationsManager(MigrationsDb migrationsDb, - AppInfo appInfo, - AsyncRunner asyncRunner, - Migrations migrations) { - return new MigrationsManagerImpl(appInfo, migrationsDb, asyncRunner, migrations.getSteps()); - } - - @Provides - @Singleton - AppNotificationManager notificationsManager(Context context, - NotificationManager platformNotificationsManager, - Provider viewThemeUtilsProvider) { - return new AppNotificationManagerImpl(context, - context.getResources(), - platformNotificationsManager, - viewThemeUtilsProvider); - } - - @Provides - LocalBroadcastManager localBroadcastManager(Context context) { - return LocalBroadcastManager.getInstance(context); - } - - @Provides - Throttler throttler(Clock clock) { - return new Throttler(clock); - } - - @Provides - @Singleton - PassCodeManager passCodeManager(AppPreferences preferences, Clock clock) { - return new PassCodeManager(preferences, clock); - } - - @Provides - FileOperationHelper fileOperationHelper(CurrentAccountProvider currentAccountProvider, Context context) { - return new FileOperationHelper(currentAccountProvider.getUser(), context, fileDataStorageManager(currentAccountProvider, context)); - } - - @Provides - @Singleton - UsersAndGroupsSearchConfig userAndGroupSearchConfig() { - return new UsersAndGroupsSearchConfig(); - } - - - @Provides - @Singleton - CertificateValidator certificateValidator() { - return new CertificateValidator(); - } - - @Provides - FolderThumbnailGenerator folderThumbnailGenerator( - AppPreferences appPreferences, - ViewThemeUtils viewThemeUtils, - Context context, - UserAccountManager accountManager) { - return new FolderThumbnailGenerator(appPreferences, viewThemeUtils, context, accountManager); - } - - @Provides - E2EEKeyInspector e2eeKeyInspector( - Context context, - FileDataStorageManager fileDataStorageManager, - CertificateValidator certificateValidator, - ArbitraryDataProvider arbitraryDataProvider, - UserAccountManager accountManager) { - return new E2EEKeyInspector(context, fileDataStorageManager, certificateValidator, arbitraryDataProvider, accountManager); - } - - @Provides - E2EEActionResolver e2eeActionResolver( - FileDataStorageManager fileDataStorageManager, - ArbitraryDataProvider arbitraryDataProvider, - UserAccountManager accountManager, - ConnectivityService connectivityService, - E2EEKeyInspector e2eeKeyInspector) { - return new E2EEActionResolver(fileDataStorageManager, arbitraryDataProvider, accountManager, connectivityService, e2eeKeyInspector); - } -} diff --git a/app/src/main/java/com/nextcloud/client/di/AppModule.kt b/app/src/main/java/com/nextcloud/client/di/AppModule.kt new file mode 100644 index 000000000000..c3f7ab13576c --- /dev/null +++ b/app/src/main/java/com/nextcloud/client/di/AppModule.kt @@ -0,0 +1,272 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2026 Alper Ozturk + * SPDX-FileCopyrightText: 2019 Chris Narkiewicz + * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only + */ +package com.nextcloud.client.di + +import android.accounts.AccountManager +import android.app.Application +import android.app.NotificationManager +import android.content.ContentResolver +import android.content.Context +import android.content.pm.PackageManager +import android.content.res.Resources +import android.media.AudioManager +import android.os.Handler +import androidx.localbroadcastmanager.content.LocalBroadcastManager +import com.nextcloud.client.account.CurrentAccountProvider +import com.nextcloud.client.account.UserAccountManager +import com.nextcloud.client.account.UserAccountManagerImpl +import com.nextcloud.client.appinfo.AppInfo +import com.nextcloud.client.core.AsyncRunner +import com.nextcloud.client.core.Clock +import com.nextcloud.client.core.ClockImpl +import com.nextcloud.client.core.ThreadPoolAsyncRunner +import com.nextcloud.client.database.dao.ArbitraryDataDao +import com.nextcloud.client.device.DeviceInfo +import com.nextcloud.client.jobs.operation.FileOperationHelper +import com.nextcloud.client.logger.FileLogHandler +import com.nextcloud.client.logger.Logger +import com.nextcloud.client.logger.LoggerImpl +import com.nextcloud.client.logger.LogsRepository +import com.nextcloud.client.migrations.Migrations +import com.nextcloud.client.migrations.MigrationsDb +import com.nextcloud.client.migrations.MigrationsManager +import com.nextcloud.client.migrations.MigrationsManagerImpl +import com.nextcloud.client.network.ClientFactory +import com.nextcloud.client.network.ConnectivityService +import com.nextcloud.client.notifications.AppNotificationManager +import com.nextcloud.client.notifications.AppNotificationManagerImpl +import com.nextcloud.client.preferences.AppPreferences +import com.nextcloud.client.utils.Throttler +import com.nextcloud.utils.e2ee.E2EEActionResolver +import com.nextcloud.utils.e2ee.E2EEKeyInspector +import com.nextcloud.utils.thumbnail.FolderThumbnailGenerator +import com.owncloud.android.authentication.PassCodeManager +import com.owncloud.android.datamodel.ArbitraryDataProvider +import com.owncloud.android.datamodel.ArbitraryDataProviderImpl +import com.owncloud.android.datamodel.FileDataStorageManager +import com.owncloud.android.datamodel.SyncedFolderProvider +import com.owncloud.android.datamodel.UploadsStorageManager +import com.owncloud.android.providers.UsersAndGroupsSearchConfig +import com.owncloud.android.ui.activities.data.activities.ActivitiesRepository +import com.owncloud.android.ui.activities.data.activities.ActivitiesServiceApi +import com.owncloud.android.ui.activities.data.activities.ActivitiesServiceApiImpl +import com.owncloud.android.ui.activities.data.activities.RemoteActivitiesRepository +import com.owncloud.android.ui.activities.data.files.FilesRepository +import com.owncloud.android.ui.activities.data.files.FilesServiceApiImpl +import com.owncloud.android.ui.activities.data.files.RemoteFilesRepository +import com.owncloud.android.ui.dialog.setupEncryption.CertificateValidator +import com.owncloud.android.utils.theme.ViewThemeUtils +import dagger.Module +import dagger.Provides +import org.greenrobot.eventbus.EventBus +import java.io.File +import javax.inject.Named +import javax.inject.Provider +import javax.inject.Singleton + +@Module(includes = [ComponentsModule::class, VariantComponentsModule::class, BuildTypeComponentsModule::class]) +@Suppress("TooManyFunctions") +internal class AppModule { + + @Provides + fun accountManager(application: Application): AccountManager = + application.getSystemService(Context.ACCOUNT_SERVICE) as AccountManager + + @Provides + fun context(application: Application): Context = application + + @Provides + fun packageManager(application: Application): PackageManager = application.packageManager + + @Provides + fun contentResolver(context: Context): ContentResolver = context.contentResolver + + @Provides + fun resources(application: Application): Resources = application.resources + + @Provides + fun userAccountManager(context: Context, accountManager: AccountManager): UserAccountManager = + UserAccountManagerImpl(context, accountManager) + + @Provides + fun arbitraryDataProvider(dao: ArbitraryDataDao): ArbitraryDataProvider = ArbitraryDataProviderImpl(dao) + + @Provides + fun syncedFolderProvider( + contentResolver: ContentResolver, + appPreferences: AppPreferences, + clock: Clock + ): SyncedFolderProvider = SyncedFolderProvider(contentResolver, appPreferences, clock) + + @Provides + fun activitiesServiceApi(accountManager: UserAccountManager): ActivitiesServiceApi = + ActivitiesServiceApiImpl(accountManager) + + @Provides + fun activitiesRepository(api: ActivitiesServiceApi): ActivitiesRepository = RemoteActivitiesRepository(api) + + @Provides + fun filesRepository(accountManager: UserAccountManager, clientFactory: ClientFactory): FilesRepository = + RemoteFilesRepository(FilesServiceApiImpl(accountManager, clientFactory)) + + @Provides + fun uploadsStorageManager(currentAccountProvider: CurrentAccountProvider, context: Context): UploadsStorageManager = + UploadsStorageManager(currentAccountProvider, context.contentResolver) + + @Provides + fun fileDataStorageManager( + currentAccountProvider: CurrentAccountProvider, + context: Context + ): FileDataStorageManager = FileDataStorageManager(currentAccountProvider.user, context.contentResolver) + + @Provides + fun currentAccountProvider(accountManager: UserAccountManager): CurrentAccountProvider = accountManager + + @Provides + fun deviceInfo(): DeviceInfo = DeviceInfo() + + @Provides + @Singleton + fun clock(): Clock = ClockImpl() + + @Provides + @Singleton + fun logger(context: Context, clock: Clock): Logger { + val logDir = File(context.filesDir, LOG_DIR_NAME) + val handler = FileLogHandler(logDir, LOG_FILE_NAME, LOG_FILE_MAX_SIZE_BYTES) + return LoggerImpl(clock, handler, Handler(), LOGGER_QUEUE_CAPACITY).apply { start() } + } + + @Provides + @Singleton + fun logsRepository(logger: Logger): LogsRepository = logger as LogsRepository + + @Provides + @Singleton + fun uiAsyncRunner(): AsyncRunner = ThreadPoolAsyncRunner(Handler(), UI_THREAD_POOL_SIZE, UI_RUNNER_TAG) + + @Provides + @Singleton + @Named(IO_RUNNER_TAG) + fun ioAsyncRunner(): AsyncRunner = ThreadPoolAsyncRunner(Handler(), IO_THREAD_POOL_SIZE, IO_RUNNER_TAG) + + @Provides + fun notificationManager(context: Context): NotificationManager = + context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + + @Provides + fun audioManager(context: Context): AudioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager + + @Provides + @Singleton + fun eventBus(): EventBus = EventBus.getDefault() + + @Provides + @Singleton + fun migrationsDb(application: Application): MigrationsDb = + MigrationsDb(application.getSharedPreferences(MIGRATIONS_PREFERENCES_NAME, Context.MODE_PRIVATE)) + + @Provides + @Singleton + fun migrationsManager( + migrationsDb: MigrationsDb, + appInfo: AppInfo, + asyncRunner: AsyncRunner, + migrations: Migrations + ): MigrationsManager = MigrationsManagerImpl(appInfo, migrationsDb, asyncRunner, migrations.steps) + + @Provides + @Singleton + fun notificationsManager( + context: Context, + platformNotificationsManager: NotificationManager, + viewThemeUtilsProvider: Provider + ): AppNotificationManager = AppNotificationManagerImpl( + context, + context.resources, + platformNotificationsManager, + viewThemeUtilsProvider + ) + + @Provides + fun localBroadcastManager(context: Context): LocalBroadcastManager = LocalBroadcastManager.getInstance(context) + + @Provides + fun throttler(clock: Clock): Throttler = Throttler(clock) + + @Provides + @Singleton + fun passCodeManager(preferences: AppPreferences, clock: Clock): PassCodeManager = + PassCodeManager(preferences, clock) + + @Provides + fun fileOperationHelper(currentAccountProvider: CurrentAccountProvider, context: Context): FileOperationHelper = + FileOperationHelper( + currentAccountProvider.user, + context, + fileDataStorageManager(currentAccountProvider, context) + ) + + @Provides + @Singleton + fun userAndGroupSearchConfig(): UsersAndGroupsSearchConfig = UsersAndGroupsSearchConfig() + + @Provides + @Singleton + fun certificateValidator(): CertificateValidator = CertificateValidator() + + @Provides + fun folderThumbnailGenerator( + appPreferences: AppPreferences, + viewThemeUtils: ViewThemeUtils, + context: Context, + accountManager: UserAccountManager + ): FolderThumbnailGenerator = FolderThumbnailGenerator(appPreferences, viewThemeUtils, context, accountManager) + + @Provides + fun e2eeKeyInspector( + context: Context, + fileDataStorageManager: FileDataStorageManager, + certificateValidator: CertificateValidator, + arbitraryDataProvider: ArbitraryDataProvider, + accountManager: UserAccountManager + ): E2EEKeyInspector = E2EEKeyInspector( + context, + fileDataStorageManager, + certificateValidator, + arbitraryDataProvider, + accountManager + ) + + @Provides + fun e2eeActionResolver( + fileDataStorageManager: FileDataStorageManager, + arbitraryDataProvider: ArbitraryDataProvider, + accountManager: UserAccountManager, + connectivityService: ConnectivityService, + e2eeKeyInspector: E2EEKeyInspector + ): E2EEActionResolver = E2EEActionResolver( + fileDataStorageManager, + arbitraryDataProvider, + accountManager, + connectivityService, + e2eeKeyInspector + ) + + companion object { + private const val LOG_DIR_NAME = "logs" + private const val LOG_FILE_NAME = "log.txt" + private const val LOG_FILE_MAX_SIZE_BYTES = 1024L * 1024L + private const val LOGGER_QUEUE_CAPACITY = 1000 + private const val UI_THREAD_POOL_SIZE = 4 + private const val IO_THREAD_POOL_SIZE = 8 + private const val UI_RUNNER_TAG = "ui" + private const val IO_RUNNER_TAG = "io" + private const val MIGRATIONS_PREFERENCES_NAME = "migrations" + } +} diff --git a/app/src/main/java/com/nextcloud/client/di/ComponentsModule.java b/app/src/main/java/com/nextcloud/client/di/ComponentsModule.java deleted file mode 100644 index 7aec1b7b57f6..000000000000 --- a/app/src/main/java/com/nextcloud/client/di/ComponentsModule.java +++ /dev/null @@ -1,531 +0,0 @@ -/* - * Nextcloud - Android Client - * - * SPDX-FileCopyrightText: 2024-2026 TSI-mc - * SPDX-FileCopyrightText: 2020 Chris Narkiewicz - * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only - */ -package com.nextcloud.client.di; - -import com.nextcloud.client.documentscan.DocumentScanActivity; -import com.nextcloud.client.editimage.EditImageActivity; -import com.nextcloud.client.etm.EtmActivity; -import com.nextcloud.client.etm.pages.EtmBackgroundJobsFragment; -import com.nextcloud.client.jobs.BackgroundJobManagerImpl; -import com.nextcloud.client.jobs.NotificationWork; -import com.nextcloud.client.jobs.TestJob; -import com.nextcloud.client.jobs.transfer.FileTransferService; -import com.nextcloud.client.jobs.upload.FileUploadHelper; -import com.nextcloud.client.logger.ui.LogsActivity; -import com.nextcloud.client.logger.ui.LogsViewModel; -import com.nextcloud.client.migrations.Migrations; -import com.nextcloud.client.onboarding.FirstRunActivity; -import com.nextcloud.client.onboarding.WhatsNewActivity; -import com.nextcloud.client.widget.DashboardWidgetConfigurationActivity; -import com.nextcloud.client.widget.DashboardWidgetProvider; -import com.nextcloud.client.widget.DashboardWidgetService; -import com.nextcloud.ui.ChooseAccountDialogFragment; -import com.nextcloud.ui.ChooseStorageLocationDialogFragment; -import com.nextcloud.ui.fileInfo.FileInfoFragment; -import com.nextcloud.ui.SetOnlineStatusBottomSheet; -import com.nextcloud.ui.SetStatusMessageBottomSheet; -import com.nextcloud.ui.albumItemActions.AlbumItemActionsBottomSheet; -import com.nextcloud.ui.composeActivity.ComposeActivity; -import com.nextcloud.ui.fileactions.FileActionsBottomSheet; -import com.nextcloud.ui.tags.TagManagementBottomSheet; -import com.nextcloud.ui.trashbinFileActions.TrashbinFileActionsBottomSheet; -import com.nmc.android.ui.LauncherActivity; -import com.owncloud.android.MainApp; -import com.owncloud.android.authentication.AuthenticatorActivity; -import com.owncloud.android.authentication.DeepLinkLoginActivity; -import com.owncloud.android.files.BootupBroadcastReceiver; -import com.owncloud.android.providers.DiskLruImageCacheFileProvider; -import com.owncloud.android.providers.DocumentsStorageProvider; -import com.owncloud.android.providers.FileContentProvider; -import com.owncloud.android.providers.UsersAndGroupsSearchProvider; -import com.owncloud.android.services.AccountManagerService; -import com.owncloud.android.services.OperationsService; -import com.owncloud.android.syncadapter.FileSyncService; -import com.owncloud.android.ui.activity.AlbumsPickerActivity; -import com.owncloud.android.ui.activity.BaseActivity; -import com.owncloud.android.ui.activity.ConflictsResolveActivity; -import com.owncloud.android.ui.activity.ContactsPreferenceActivity; -import com.owncloud.android.ui.activity.CopyToClipboardActivity; -import com.owncloud.android.ui.activity.DrawerActivity; -import com.owncloud.android.ui.activity.ErrorsWhileCopyingHandlerActivity; -import com.owncloud.android.ui.activity.ExternalSiteWebView; -import com.owncloud.android.ui.activity.FileActivity; -import com.owncloud.android.ui.activity.FileDisplayActivity; -import com.owncloud.android.ui.activity.FilePickerActivity; -import com.owncloud.android.ui.activity.FolderPickerActivity; -import com.owncloud.android.ui.activity.InternalTwoWaySyncActivity; -import com.owncloud.android.ui.activity.ManageAccountsActivity; -import com.owncloud.android.ui.activity.ManageSpaceActivity; -import com.owncloud.android.ui.activity.PassCodeActivity; -import com.owncloud.android.ui.activity.ReceiveExternalFilesActivity; -import com.owncloud.android.ui.activity.RequestCredentialsActivity; -import com.owncloud.android.ui.activity.RichDocumentsEditorWebView; -import com.owncloud.android.ui.activity.SettingsActivity; -import com.owncloud.android.ui.activity.ShareActivity; -import com.owncloud.android.ui.activity.SsoGrantPermissionActivity; -import com.owncloud.android.ui.activity.SyncedFoldersActivity; -import com.owncloud.android.ui.activity.TextEditorWebView; -import com.owncloud.android.ui.activity.ToolbarActivity; -import com.owncloud.android.ui.activity.UploadFilesActivity; -import com.owncloud.android.ui.activity.UserInfoActivity; -import com.owncloud.android.ui.dialog.AccountRemovalDialog; -import com.owncloud.android.ui.dialog.AppPassCodeDialog; -import com.owncloud.android.ui.dialog.ChooseRichDocumentsTemplateDialogFragment; -import com.owncloud.android.ui.dialog.ChooseTemplateDialogFragment; -import com.owncloud.android.ui.dialog.ConfirmationDialogFragment; -import com.owncloud.android.ui.dialog.conflict.ConflictsResolveDialog; -import com.owncloud.android.ui.dialog.CreateAlbumDialogFragment; -import com.owncloud.android.ui.dialog.CreateFolderDialogFragment; -import com.owncloud.android.ui.dialog.ExpirationDatePickerDialogFragment; -import com.owncloud.android.ui.dialog.IndeterminateProgressDialog; -import com.owncloud.android.ui.dialog.LoadingDialog; -import com.owncloud.android.ui.dialog.LocalStoragePathPickerDialogFragment; -import com.owncloud.android.ui.dialog.MultipleAccountsDialog; -import com.owncloud.android.ui.dialog.RemoveFilesDialogFragment; -import com.owncloud.android.ui.dialog.RenameFileDialogFragment; -import com.owncloud.android.ui.dialog.SendFilesDialog; -import com.owncloud.android.ui.dialog.SendShareDialog; -import com.owncloud.android.ui.dialog.SharePasswordDialogFragment; -import com.owncloud.android.ui.dialog.SortingOrderDialogFragment; -import com.owncloud.android.ui.dialog.SslUntrustedCertDialog; -import com.owncloud.android.ui.dialog.StoragePermissionDialogFragment; -import com.owncloud.android.ui.dialog.SyncFileNotEnoughSpaceDialogFragment; -import com.owncloud.android.ui.dialog.SyncedFolderPreferencesDialogFragment; -import com.owncloud.android.ui.dialog.TermsOfServiceDialog; -import com.owncloud.android.ui.dialog.ThemeSelectionDialog; -import com.owncloud.android.ui.dialog.setupEncryption.SetupEncryptionDialogFragment; -import com.owncloud.android.ui.fragment.ActivitiesFragment; -import com.owncloud.android.ui.fragment.ExtendedListFragment; -import com.owncloud.android.ui.fragment.FeatureFragment; -import com.owncloud.android.ui.fragment.FileDetailActivitiesFragment; -import com.owncloud.android.ui.fragment.FileDetailFragment; -import com.owncloud.android.ui.fragment.FileDetailSharingFragment; -import com.owncloud.android.ui.fragment.FileDetailsSharingProcessFragment; -import com.owncloud.android.ui.fragment.GalleryFragment; -import com.owncloud.android.ui.fragment.GalleryFragmentBottomSheetDialog; -import com.owncloud.android.ui.fragment.GroupfolderListFragment; -import com.owncloud.android.ui.fragment.localfilelist.LocalFileListFragment; -import com.owncloud.android.ui.fragment.OCFileListBottomSheetDialog; -import com.owncloud.android.ui.fragment.OCFileListFragment; -import com.owncloud.android.ui.fragment.SharedListFragment; -import com.owncloud.android.ui.fragment.UnifiedSearchFragment; -import com.owncloud.android.ui.fragment.albums.AlbumItemsFragment; -import com.owncloud.android.ui.fragment.albums.bottomsheet.AlbumSharingBottomSheet; -import com.owncloud.android.ui.fragment.albums.AlbumsFragment; -import com.owncloud.android.ui.fragment.community.CommunityFragment; -import com.owncloud.android.ui.fragment.contactsbackup.BackupFragment; -import com.owncloud.android.ui.fragment.contactsbackup.BackupListFragment; -import com.owncloud.android.ui.fragment.notifications.NotificationsFragment; -import com.owncloud.android.ui.fragment.uploadList.UploadListFragment; -import com.owncloud.android.ui.navigation.NavigatorActivity; -import com.owncloud.android.ui.preview.FileDownloadFragment; -import com.owncloud.android.ui.preview.PreviewBitmapActivity; -import com.owncloud.android.ui.preview.PreviewImageActivity; -import com.owncloud.android.ui.preview.PreviewImageFragment; -import com.owncloud.android.ui.preview.PreviewPlaybackFragment; -import com.owncloud.android.ui.preview.PreviewTextFileFragment; -import com.owncloud.android.ui.preview.PreviewTextFragment; -import com.owncloud.android.ui.preview.PreviewTextStringFragment; -import com.owncloud.android.ui.preview.pdf.PreviewPdfFragment; -import com.owncloud.android.ui.trashbin.TrashbinFragment; - -import androidx.annotation.OptIn; -import androidx.media3.common.util.UnstableApi; -import dagger.Module; -import dagger.android.ContributesAndroidInjector; - -/** - * Register classes that require dependency injection. This class is used by Dagger compiler only. - */ -@Module -abstract class ComponentsModule { - @ContributesAndroidInjector - abstract TrashbinFragment trashbinFragment(); - - @ContributesAndroidInjector - abstract UploadListFragment uploadListFragment(); - - @ContributesAndroidInjector - abstract ActivitiesFragment activitiesFragment(); - - @ContributesAndroidInjector - abstract NotificationsFragment notificationFragment(); - - @ContributesAndroidInjector - abstract AuthenticatorActivity authenticatorActivity(); - - @ContributesAndroidInjector - abstract BaseActivity baseActivity(); - - @ContributesAndroidInjector - abstract ConflictsResolveActivity conflictsResolveActivity(); - - @ContributesAndroidInjector - abstract ContactsPreferenceActivity contactsPreferenceActivity(); - - @ContributesAndroidInjector - abstract CopyToClipboardActivity copyToClipboardActivity(); - - @ContributesAndroidInjector - abstract DeepLinkLoginActivity deepLinkLoginActivity(); - - @ContributesAndroidInjector - abstract DrawerActivity drawerActivity(); - - @ContributesAndroidInjector - abstract ErrorsWhileCopyingHandlerActivity errorsWhileCopyingHandlerActivity(); - - @ContributesAndroidInjector - abstract ExternalSiteWebView externalSiteWebView(); - - @ContributesAndroidInjector - abstract FileDisplayActivity fileDisplayActivity(); - - @ContributesAndroidInjector - abstract FilePickerActivity filePickerActivity(); - - @ContributesAndroidInjector - abstract FirstRunActivity firstRunActivity(); - - @ContributesAndroidInjector - abstract FolderPickerActivity folderPickerActivity(); - - @ContributesAndroidInjector - abstract LogsActivity logsActivity(); - - @ContributesAndroidInjector - abstract ManageAccountsActivity manageAccountsActivity(); - - @ContributesAndroidInjector - abstract ManageSpaceActivity manageSpaceActivity(); - - @ContributesAndroidInjector - abstract ComposeActivity composeActivity(); - - @ContributesAndroidInjector - abstract PassCodeActivity passCodeActivity(); - - @ContributesAndroidInjector - abstract PreviewImageActivity previewImageActivity(); - - @ContributesAndroidInjector - abstract ReceiveExternalFilesActivity receiveExternalFilesActivity(); - - @ContributesAndroidInjector - abstract RequestCredentialsActivity requestCredentialsActivity(); - - @ContributesAndroidInjector - abstract SettingsActivity settingsActivity(); - - @ContributesAndroidInjector - abstract ShareActivity shareActivity(); - - @ContributesAndroidInjector - abstract SsoGrantPermissionActivity ssoGrantPermissionActivity(); - - @ContributesAndroidInjector - abstract SyncedFoldersActivity syncedFoldersActivity(); - - @ContributesAndroidInjector - abstract TrashbinFileActionsBottomSheet trashbinFileActionsBottomSheet(); - - @ContributesAndroidInjector - abstract UploadFilesActivity uploadFilesActivity(); - - @ContributesAndroidInjector - abstract UserInfoActivity userInfoActivity(); - - @ContributesAndroidInjector - abstract WhatsNewActivity whatsNewActivity(); - - @ContributesAndroidInjector - abstract EtmActivity etmActivity(); - - @ContributesAndroidInjector - abstract RichDocumentsEditorWebView richDocumentsWebView(); - - @ContributesAndroidInjector - abstract TextEditorWebView textEditorWebView(); - - @ContributesAndroidInjector - abstract ExtendedListFragment extendedListFragment(); - - @ContributesAndroidInjector - abstract FileDetailFragment fileDetailFragment(); - - @ContributesAndroidInjector - abstract LocalFileListFragment localFileListFragment(); - - @ContributesAndroidInjector - abstract OCFileListFragment ocFileListFragment(); - - @ContributesAndroidInjector - abstract FileDetailActivitiesFragment fileDetailActivitiesFragment(); - - @ContributesAndroidInjector - abstract FileDetailsSharingProcessFragment fileDetailsSharingProcessFragment(); - - @ContributesAndroidInjector - abstract FileDetailSharingFragment fileDetailSharingFragment(); - - @ContributesAndroidInjector - abstract ChooseTemplateDialogFragment chooseTemplateDialogFragment(); - - @ContributesAndroidInjector - abstract AccountRemovalDialog accountRemovalDialog(); - - @ContributesAndroidInjector - abstract ChooseRichDocumentsTemplateDialogFragment chooseRichDocumentsTemplateDialogFragment(); - - @ContributesAndroidInjector - abstract BackupFragment contactsBackupFragment(); - - @ContributesAndroidInjector - abstract PreviewImageFragment previewImageFragment(); - - @ContributesAndroidInjector - abstract BackupListFragment chooseContactListFragment(); - - @ContributesAndroidInjector - abstract PreviewTextFragment previewTextFragment(); - - @ContributesAndroidInjector - abstract ChooseAccountDialogFragment chooseAccountDialogFragment(); - - @ContributesAndroidInjector - abstract SetOnlineStatusBottomSheet setOnlineStatusBottomSheet(); - - @ContributesAndroidInjector - abstract PreviewPlaybackFragment previewPlaybackFragment(); - - @ContributesAndroidInjector - abstract PreviewTextFileFragment previewTextFileFragment(); - - @ContributesAndroidInjector - abstract PreviewTextStringFragment previewTextStringFragment(); - - @ContributesAndroidInjector - abstract UnifiedSearchFragment searchFragment(); - - @ContributesAndroidInjector - abstract GalleryFragment photoFragment(); - - @ContributesAndroidInjector - abstract MultipleAccountsDialog multipleAccountsDialog(); - - @ContributesAndroidInjector - abstract ReceiveExternalFilesActivity.DialogInputUploadFilename dialogInputUploadFilename(); - - @ContributesAndroidInjector - abstract BootupBroadcastReceiver bootupBroadcastReceiver(); - - @ContributesAndroidInjector - abstract NotificationWork.NotificationReceiver notificationWorkBroadcastReceiver(); - - @ContributesAndroidInjector - abstract FileContentProvider fileContentProvider(); - - @ContributesAndroidInjector - abstract UsersAndGroupsSearchProvider usersAndGroupsSearchProvider(); - - @ContributesAndroidInjector - abstract DiskLruImageCacheFileProvider diskLruImageCacheFileProvider(); - - @ContributesAndroidInjector - abstract DocumentsStorageProvider documentsStorageProvider(); - - @ContributesAndroidInjector - abstract AccountManagerService accountManagerService(); - - @ContributesAndroidInjector - abstract OperationsService operationsService(); - - @ContributesAndroidInjector - abstract FileTransferService fileDownloaderService(); - - @ContributesAndroidInjector - abstract FileSyncService fileSyncService(); - - @ContributesAndroidInjector - abstract DashboardWidgetService dashboardWidgetService(); - - @ContributesAndroidInjector - abstract PreviewPdfFragment previewPDFFragment(); - - @ContributesAndroidInjector - abstract SharedListFragment sharedFragment(); - - @ContributesAndroidInjector - abstract FeatureFragment featureFragment(); - - @ContributesAndroidInjector - abstract IndeterminateProgressDialog indeterminateProgressDialog(); - - @ContributesAndroidInjector - abstract SortingOrderDialogFragment sortingOrderDialogFragment(); - - @ContributesAndroidInjector - abstract ConfirmationDialogFragment confirmationDialogFragment(); - - @ContributesAndroidInjector - abstract ConflictsResolveDialog conflictsResolveDialog(); - - @ContributesAndroidInjector - abstract CreateFolderDialogFragment createFolderDialogFragment(); - - @ContributesAndroidInjector - abstract ExpirationDatePickerDialogFragment expirationDatePickerDialogFragment(); - - @ContributesAndroidInjector - abstract FileActivity fileActivity(); - - @ContributesAndroidInjector - abstract FileDownloadFragment fileDownloadFragment(); - - @ContributesAndroidInjector - abstract LoadingDialog loadingDialog(); - - @ContributesAndroidInjector - abstract LocalStoragePathPickerDialogFragment localStoragePathPickerDialogFragment(); - - @ContributesAndroidInjector - abstract LogsViewModel logsViewModel(); - - @ContributesAndroidInjector - abstract MainApp mainApp(); - - @ContributesAndroidInjector - abstract Migrations migrations(); - - @ContributesAndroidInjector - abstract NotificationWork notificationWork(); - - @ContributesAndroidInjector - abstract RemoveFilesDialogFragment removeFilesDialogFragment(); - - @ContributesAndroidInjector - abstract SendShareDialog sendShareDialog(); - - @ContributesAndroidInjector - abstract SetupEncryptionDialogFragment setupEncryptionDialogFragment(); - - @ContributesAndroidInjector - abstract ChooseStorageLocationDialogFragment chooseStorageLocationDialogFragment(); - - @ContributesAndroidInjector - abstract ThemeSelectionDialog themeSelectionDialog(); - - @ContributesAndroidInjector - abstract AppPassCodeDialog appPassCodeDialog(); - - @ContributesAndroidInjector - abstract SharePasswordDialogFragment sharePasswordDialogFragment(); - - @ContributesAndroidInjector - abstract SyncedFolderPreferencesDialogFragment syncedFolderPreferencesDialogFragment(); - - @ContributesAndroidInjector - abstract ToolbarActivity toolbarActivity(); - - @ContributesAndroidInjector - abstract StoragePermissionDialogFragment storagePermissionDialogFragment(); - - @ContributesAndroidInjector - abstract OCFileListBottomSheetDialog ocfileListBottomSheetDialog(); - - @ContributesAndroidInjector - abstract RenameFileDialogFragment renameFileDialogFragment(); - - @ContributesAndroidInjector - abstract SyncFileNotEnoughSpaceDialogFragment syncFileNotEnoughSpaceDialogFragment(); - - @ContributesAndroidInjector - abstract DashboardWidgetConfigurationActivity dashboardWidgetConfigurationActivity(); - - @ContributesAndroidInjector - abstract DashboardWidgetProvider dashboardWidgetProvider(); - - @ContributesAndroidInjector - abstract GalleryFragmentBottomSheetDialog galleryFragmentBottomSheetDialog(); - - @ContributesAndroidInjector - abstract PreviewBitmapActivity previewBitmapActivity(); - - @ContributesAndroidInjector - abstract FileUploadHelper fileUploadHelper(); - - @ContributesAndroidInjector - abstract SslUntrustedCertDialog sslUntrustedCertDialog(); - - @ContributesAndroidInjector - abstract FileActionsBottomSheet fileActionsBottomSheet(); - - @ContributesAndroidInjector - abstract SendFilesDialog sendFilesDialog(); - - @ContributesAndroidInjector - abstract DocumentScanActivity documentScanActivity(); - - @ContributesAndroidInjector - abstract GroupfolderListFragment groupfolderListFragment(); - - @ContributesAndroidInjector - abstract LauncherActivity launcherActivity(); - - @ContributesAndroidInjector - abstract EditImageActivity editImageActivity(); - - @ContributesAndroidInjector - abstract FileInfoFragment fileInfoFragment(); - - @ContributesAndroidInjector - abstract EtmBackgroundJobsFragment etmBackgroundJobsFragment(); - - @ContributesAndroidInjector - abstract BackgroundJobManagerImpl backgroundJobManagerImpl(); - - @ContributesAndroidInjector - abstract TestJob testJob(); - - @ContributesAndroidInjector - abstract InternalTwoWaySyncActivity internalTwoWaySyncActivity(); - - @OptIn(markerClass = UnstableApi.class) - @ContributesAndroidInjector - abstract TermsOfServiceDialog termsOfServiceDialog(); - - @ContributesAndroidInjector - abstract SetStatusMessageBottomSheet setStatusMessageBottomSheet(); - - @ContributesAndroidInjector - abstract TagManagementBottomSheet tagManagementBottomSheet(); - - @ContributesAndroidInjector - abstract NavigatorActivity navigatorActivity(); - - @ContributesAndroidInjector - abstract CommunityFragment communityFragment(); - - @ContributesAndroidInjector - abstract AlbumsPickerActivity albumsPickerActivity(); - - @ContributesAndroidInjector - abstract CreateAlbumDialogFragment createAlbumDialogFragment(); - - @ContributesAndroidInjector - abstract AlbumsFragment albumsFragment(); - - @ContributesAndroidInjector - abstract AlbumItemsFragment albumItemsFragment(); - - @ContributesAndroidInjector - abstract AlbumItemActionsBottomSheet albumItemActionsBottomSheet(); - - @ContributesAndroidInjector - abstract AlbumSharingBottomSheet albumSharingBottomSheet(); -} diff --git a/app/src/main/java/com/nextcloud/client/di/ComponentsModule.kt b/app/src/main/java/com/nextcloud/client/di/ComponentsModule.kt new file mode 100644 index 000000000000..c0db8aa893f9 --- /dev/null +++ b/app/src/main/java/com/nextcloud/client/di/ComponentsModule.kt @@ -0,0 +1,533 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2026 Alper Ozturk + * SPDX-FileCopyrightText: 2024-2026 TSI-mc + * SPDX-FileCopyrightText: 2020 Chris Narkiewicz + * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only + */ +package com.nextcloud.client.di + +import androidx.annotation.OptIn +import androidx.media3.common.util.UnstableApi +import com.nextcloud.client.documentscan.DocumentScanActivity +import com.nextcloud.client.editimage.EditImageActivity +import com.nextcloud.client.etm.EtmActivity +import com.nextcloud.client.etm.pages.EtmBackgroundJobsFragment +import com.nextcloud.client.jobs.BackgroundJobManagerImpl +import com.nextcloud.client.jobs.NotificationWork +import com.nextcloud.client.jobs.TestJob +import com.nextcloud.client.jobs.transfer.FileTransferService +import com.nextcloud.client.jobs.upload.FileUploadHelper +import com.nextcloud.client.logger.ui.LogsActivity +import com.nextcloud.client.logger.ui.LogsViewModel +import com.nextcloud.client.migrations.Migrations +import com.nextcloud.client.onboarding.FirstRunActivity +import com.nextcloud.client.onboarding.WhatsNewActivity +import com.nextcloud.client.widget.DashboardWidgetConfigurationActivity +import com.nextcloud.client.widget.DashboardWidgetProvider +import com.nextcloud.client.widget.DashboardWidgetService +import com.nextcloud.ui.ChooseAccountDialogFragment +import com.nextcloud.ui.ChooseStorageLocationDialogFragment +import com.nextcloud.ui.SetOnlineStatusBottomSheet +import com.nextcloud.ui.SetStatusMessageBottomSheet +import com.nextcloud.ui.albumItemActions.AlbumItemActionsBottomSheet +import com.nextcloud.ui.composeActivity.ComposeActivity +import com.nextcloud.ui.fileInfo.FileInfoFragment +import com.nextcloud.ui.fileactions.FileActionsBottomSheet +import com.nextcloud.ui.tags.TagManagementBottomSheet +import com.nextcloud.ui.trashbinFileActions.TrashbinFileActionsBottomSheet +import com.nmc.android.ui.LauncherActivity +import com.owncloud.android.MainApp +import com.owncloud.android.authentication.AuthenticatorActivity +import com.owncloud.android.authentication.DeepLinkLoginActivity +import com.owncloud.android.files.BootupBroadcastReceiver +import com.owncloud.android.providers.DiskLruImageCacheFileProvider +import com.owncloud.android.providers.DocumentsStorageProvider +import com.owncloud.android.providers.FileContentProvider +import com.owncloud.android.providers.UsersAndGroupsSearchProvider +import com.owncloud.android.services.AccountManagerService +import com.owncloud.android.services.OperationsService +import com.owncloud.android.syncadapter.FileSyncService +import com.owncloud.android.ui.activity.AlbumsPickerActivity +import com.owncloud.android.ui.activity.BaseActivity +import com.owncloud.android.ui.activity.ConflictsResolveActivity +import com.owncloud.android.ui.activity.ContactsPreferenceActivity +import com.owncloud.android.ui.activity.CopyToClipboardActivity +import com.owncloud.android.ui.activity.DrawerActivity +import com.owncloud.android.ui.activity.ErrorsWhileCopyingHandlerActivity +import com.owncloud.android.ui.activity.ExternalSiteWebView +import com.owncloud.android.ui.activity.FileActivity +import com.owncloud.android.ui.activity.FileDisplayActivity +import com.owncloud.android.ui.activity.FilePickerActivity +import com.owncloud.android.ui.activity.FolderPickerActivity +import com.owncloud.android.ui.activity.InternalTwoWaySyncActivity +import com.owncloud.android.ui.activity.ManageAccountsActivity +import com.owncloud.android.ui.activity.ManageSpaceActivity +import com.owncloud.android.ui.activity.PassCodeActivity +import com.owncloud.android.ui.activity.ReceiveExternalFilesActivity +import com.owncloud.android.ui.activity.ReceiveExternalFilesActivity.DialogInputUploadFilename +import com.owncloud.android.ui.activity.RequestCredentialsActivity +import com.owncloud.android.ui.activity.RichDocumentsEditorWebView +import com.owncloud.android.ui.activity.SettingsActivity +import com.owncloud.android.ui.activity.ShareActivity +import com.owncloud.android.ui.activity.SsoGrantPermissionActivity +import com.owncloud.android.ui.activity.SyncedFoldersActivity +import com.owncloud.android.ui.activity.TextEditorWebView +import com.owncloud.android.ui.activity.ToolbarActivity +import com.owncloud.android.ui.activity.UploadFilesActivity +import com.owncloud.android.ui.activity.UserInfoActivity +import com.owncloud.android.ui.dialog.AccountRemovalDialog +import com.owncloud.android.ui.dialog.AppPassCodeDialog +import com.owncloud.android.ui.dialog.ChooseRichDocumentsTemplateDialogFragment +import com.owncloud.android.ui.dialog.ChooseTemplateDialogFragment +import com.owncloud.android.ui.dialog.ConfirmationDialogFragment +import com.owncloud.android.ui.dialog.CreateAlbumDialogFragment +import com.owncloud.android.ui.dialog.CreateFolderDialogFragment +import com.owncloud.android.ui.dialog.ExpirationDatePickerDialogFragment +import com.owncloud.android.ui.dialog.IndeterminateProgressDialog +import com.owncloud.android.ui.dialog.LoadingDialog +import com.owncloud.android.ui.dialog.LocalStoragePathPickerDialogFragment +import com.owncloud.android.ui.dialog.MultipleAccountsDialog +import com.owncloud.android.ui.dialog.RemoveFilesDialogFragment +import com.owncloud.android.ui.dialog.RenameFileDialogFragment +import com.owncloud.android.ui.dialog.SendFilesDialog +import com.owncloud.android.ui.dialog.SendShareDialog +import com.owncloud.android.ui.dialog.SharePasswordDialogFragment +import com.owncloud.android.ui.dialog.SortingOrderDialogFragment +import com.owncloud.android.ui.dialog.SslUntrustedCertDialog +import com.owncloud.android.ui.dialog.StoragePermissionDialogFragment +import com.owncloud.android.ui.dialog.SyncFileNotEnoughSpaceDialogFragment +import com.owncloud.android.ui.dialog.SyncedFolderPreferencesDialogFragment +import com.owncloud.android.ui.dialog.TermsOfServiceDialog +import com.owncloud.android.ui.dialog.ThemeSelectionDialog +import com.owncloud.android.ui.dialog.conflict.ConflictsResolveDialog +import com.owncloud.android.ui.dialog.setupEncryption.SetupEncryptionDialogFragment +import com.owncloud.android.ui.fragment.ActivitiesFragment +import com.owncloud.android.ui.fragment.ExtendedListFragment +import com.owncloud.android.ui.fragment.FeatureFragment +import com.owncloud.android.ui.fragment.FileDetailActivitiesFragment +import com.owncloud.android.ui.fragment.FileDetailFragment +import com.owncloud.android.ui.fragment.FileDetailSharingFragment +import com.owncloud.android.ui.fragment.FileDetailsSharingProcessFragment +import com.owncloud.android.ui.fragment.GalleryFragment +import com.owncloud.android.ui.fragment.GalleryFragmentBottomSheetDialog +import com.owncloud.android.ui.fragment.GroupfolderListFragment +import com.owncloud.android.ui.fragment.OCFileListBottomSheetDialog +import com.owncloud.android.ui.fragment.OCFileListFragment +import com.owncloud.android.ui.fragment.SharedListFragment +import com.owncloud.android.ui.fragment.UnifiedSearchFragment +import com.owncloud.android.ui.fragment.albums.AlbumItemsFragment +import com.owncloud.android.ui.fragment.albums.AlbumsFragment +import com.owncloud.android.ui.fragment.albums.bottomsheet.AlbumSharingBottomSheet +import com.owncloud.android.ui.fragment.community.CommunityFragment +import com.owncloud.android.ui.fragment.contactsbackup.BackupFragment +import com.owncloud.android.ui.fragment.contactsbackup.BackupListFragment +import com.owncloud.android.ui.fragment.localfilelist.LocalFileListFragment +import com.owncloud.android.ui.fragment.notifications.NotificationsFragment +import com.owncloud.android.ui.fragment.uploadList.UploadListFragment +import com.owncloud.android.ui.navigation.NavigatorActivity +import com.owncloud.android.ui.preview.FileDownloadFragment +import com.owncloud.android.ui.preview.PreviewBitmapActivity +import com.owncloud.android.ui.preview.PreviewImageActivity +import com.owncloud.android.ui.preview.PreviewImageFragment +import com.owncloud.android.ui.preview.PreviewPlaybackFragment +import com.owncloud.android.ui.preview.PreviewTextFileFragment +import com.owncloud.android.ui.preview.PreviewTextFragment +import com.owncloud.android.ui.preview.PreviewTextStringFragment +import com.owncloud.android.ui.preview.pdf.PreviewPdfFragment +import com.owncloud.android.ui.trashbin.TrashbinFragment +import dagger.Module +import dagger.android.ContributesAndroidInjector + +/** + * Register classes that require dependency injection. This class is used by Dagger compiler only. + */ +@Module +@Suppress("TooManyFunctions") +internal interface ComponentsModule { + @ContributesAndroidInjector + fun trashbinFragment(): TrashbinFragment + + @ContributesAndroidInjector + fun uploadListFragment(): UploadListFragment + + @ContributesAndroidInjector + fun activitiesFragment(): ActivitiesFragment + + @ContributesAndroidInjector + fun notificationFragment(): NotificationsFragment + + @ContributesAndroidInjector + fun authenticatorActivity(): AuthenticatorActivity + + @ContributesAndroidInjector + fun baseActivity(): BaseActivity + + @ContributesAndroidInjector + fun conflictsResolveActivity(): ConflictsResolveActivity + + @ContributesAndroidInjector + fun contactsPreferenceActivity(): ContactsPreferenceActivity + + @ContributesAndroidInjector + fun copyToClipboardActivity(): CopyToClipboardActivity + + @ContributesAndroidInjector + fun deepLinkLoginActivity(): DeepLinkLoginActivity + + @ContributesAndroidInjector + fun drawerActivity(): DrawerActivity + + @ContributesAndroidInjector + fun errorsWhileCopyingHandlerActivity(): ErrorsWhileCopyingHandlerActivity + + @ContributesAndroidInjector + fun externalSiteWebView(): ExternalSiteWebView + + @ContributesAndroidInjector + fun fileDisplayActivity(): FileDisplayActivity + + @ContributesAndroidInjector + fun filePickerActivity(): FilePickerActivity + + @ContributesAndroidInjector + fun firstRunActivity(): FirstRunActivity + + @ContributesAndroidInjector + fun folderPickerActivity(): FolderPickerActivity + + @ContributesAndroidInjector + fun logsActivity(): LogsActivity + + @ContributesAndroidInjector + fun manageAccountsActivity(): ManageAccountsActivity + + @ContributesAndroidInjector + fun manageSpaceActivity(): ManageSpaceActivity + + @ContributesAndroidInjector + fun composeActivity(): ComposeActivity + + @ContributesAndroidInjector + fun passCodeActivity(): PassCodeActivity + + @ContributesAndroidInjector + fun previewImageActivity(): PreviewImageActivity + + @ContributesAndroidInjector + fun receiveExternalFilesActivity(): ReceiveExternalFilesActivity + + @ContributesAndroidInjector + fun requestCredentialsActivity(): RequestCredentialsActivity + + @ContributesAndroidInjector + fun settingsActivity(): SettingsActivity + + @ContributesAndroidInjector + fun shareActivity(): ShareActivity + + @ContributesAndroidInjector + fun ssoGrantPermissionActivity(): SsoGrantPermissionActivity + + @ContributesAndroidInjector + fun syncedFoldersActivity(): SyncedFoldersActivity + + @ContributesAndroidInjector + fun trashbinFileActionsBottomSheet(): TrashbinFileActionsBottomSheet + + @ContributesAndroidInjector + fun uploadFilesActivity(): UploadFilesActivity + + @ContributesAndroidInjector + fun userInfoActivity(): UserInfoActivity + + @ContributesAndroidInjector + fun whatsNewActivity(): WhatsNewActivity + + @ContributesAndroidInjector + fun etmActivity(): EtmActivity + + @ContributesAndroidInjector + fun richDocumentsWebView(): RichDocumentsEditorWebView + + @ContributesAndroidInjector + fun textEditorWebView(): TextEditorWebView + + @ContributesAndroidInjector + fun extendedListFragment(): ExtendedListFragment + + @ContributesAndroidInjector + fun fileDetailFragment(): FileDetailFragment + + @ContributesAndroidInjector + fun localFileListFragment(): LocalFileListFragment + + @ContributesAndroidInjector + fun ocFileListFragment(): OCFileListFragment + + @ContributesAndroidInjector + fun fileDetailActivitiesFragment(): FileDetailActivitiesFragment + + @ContributesAndroidInjector + fun fileDetailsSharingProcessFragment(): FileDetailsSharingProcessFragment + + @ContributesAndroidInjector + fun fileDetailSharingFragment(): FileDetailSharingFragment + + @ContributesAndroidInjector + fun chooseTemplateDialogFragment(): ChooseTemplateDialogFragment + + @ContributesAndroidInjector + fun accountRemovalDialog(): AccountRemovalDialog + + @ContributesAndroidInjector + fun chooseRichDocumentsTemplateDialogFragment(): ChooseRichDocumentsTemplateDialogFragment + + @ContributesAndroidInjector + fun contactsBackupFragment(): BackupFragment + + @ContributesAndroidInjector + fun previewImageFragment(): PreviewImageFragment + + @ContributesAndroidInjector + fun chooseContactListFragment(): BackupListFragment + + @ContributesAndroidInjector + fun previewTextFragment(): PreviewTextFragment + + @ContributesAndroidInjector + fun chooseAccountDialogFragment(): ChooseAccountDialogFragment + + @ContributesAndroidInjector + fun setOnlineStatusBottomSheet(): SetOnlineStatusBottomSheet + + @ContributesAndroidInjector + fun previewPlaybackFragment(): PreviewPlaybackFragment + + @ContributesAndroidInjector + fun previewTextFileFragment(): PreviewTextFileFragment + + @ContributesAndroidInjector + fun previewTextStringFragment(): PreviewTextStringFragment + + @ContributesAndroidInjector + fun searchFragment(): UnifiedSearchFragment + + @ContributesAndroidInjector + fun photoFragment(): GalleryFragment + + @ContributesAndroidInjector + fun multipleAccountsDialog(): MultipleAccountsDialog + + @ContributesAndroidInjector + fun dialogInputUploadFilename(): DialogInputUploadFilename + + @ContributesAndroidInjector + fun bootupBroadcastReceiver(): BootupBroadcastReceiver + + @ContributesAndroidInjector + fun notificationWorkBroadcastReceiver(): NotificationWork.NotificationReceiver + + @ContributesAndroidInjector + fun fileContentProvider(): FileContentProvider + + @ContributesAndroidInjector + fun usersAndGroupsSearchProvider(): UsersAndGroupsSearchProvider + + @ContributesAndroidInjector + fun diskLruImageCacheFileProvider(): DiskLruImageCacheFileProvider + + @ContributesAndroidInjector + fun documentsStorageProvider(): DocumentsStorageProvider + + @ContributesAndroidInjector + fun accountManagerService(): AccountManagerService + + @ContributesAndroidInjector + fun operationsService(): OperationsService + + @ContributesAndroidInjector + fun fileDownloaderService(): FileTransferService + + @ContributesAndroidInjector + fun fileSyncService(): FileSyncService + + @ContributesAndroidInjector + fun dashboardWidgetService(): DashboardWidgetService + + @ContributesAndroidInjector + fun previewPDFFragment(): PreviewPdfFragment + + @ContributesAndroidInjector + fun sharedFragment(): SharedListFragment + + @ContributesAndroidInjector + fun featureFragment(): FeatureFragment + + @ContributesAndroidInjector + fun indeterminateProgressDialog(): IndeterminateProgressDialog + + @ContributesAndroidInjector + fun sortingOrderDialogFragment(): SortingOrderDialogFragment + + @ContributesAndroidInjector + fun confirmationDialogFragment(): ConfirmationDialogFragment + + @ContributesAndroidInjector + fun conflictsResolveDialog(): ConflictsResolveDialog + + @ContributesAndroidInjector + fun createFolderDialogFragment(): CreateFolderDialogFragment + + @ContributesAndroidInjector + fun expirationDatePickerDialogFragment(): ExpirationDatePickerDialogFragment + + @ContributesAndroidInjector + fun fileActivity(): FileActivity + + @ContributesAndroidInjector + fun fileDownloadFragment(): FileDownloadFragment + + @ContributesAndroidInjector + fun loadingDialog(): LoadingDialog + + @ContributesAndroidInjector + fun localStoragePathPickerDialogFragment(): LocalStoragePathPickerDialogFragment + + @ContributesAndroidInjector + fun logsViewModel(): LogsViewModel + + @ContributesAndroidInjector + fun mainApp(): MainApp + + @ContributesAndroidInjector + fun migrations(): Migrations + + @ContributesAndroidInjector + fun notificationWork(): NotificationWork + + @ContributesAndroidInjector + fun removeFilesDialogFragment(): RemoveFilesDialogFragment + + @ContributesAndroidInjector + fun sendShareDialog(): SendShareDialog + + @ContributesAndroidInjector + fun setupEncryptionDialogFragment(): SetupEncryptionDialogFragment + + @ContributesAndroidInjector + fun chooseStorageLocationDialogFragment(): ChooseStorageLocationDialogFragment + + @ContributesAndroidInjector + fun themeSelectionDialog(): ThemeSelectionDialog + + @ContributesAndroidInjector + fun appPassCodeDialog(): AppPassCodeDialog + + @ContributesAndroidInjector + fun sharePasswordDialogFragment(): SharePasswordDialogFragment + + @ContributesAndroidInjector + fun syncedFolderPreferencesDialogFragment(): SyncedFolderPreferencesDialogFragment + + @ContributesAndroidInjector + fun toolbarActivity(): ToolbarActivity + + @ContributesAndroidInjector + fun storagePermissionDialogFragment(): StoragePermissionDialogFragment + + @ContributesAndroidInjector + fun ocfileListBottomSheetDialog(): OCFileListBottomSheetDialog + + @ContributesAndroidInjector + fun renameFileDialogFragment(): RenameFileDialogFragment + + @ContributesAndroidInjector + fun syncFileNotEnoughSpaceDialogFragment(): SyncFileNotEnoughSpaceDialogFragment + + @ContributesAndroidInjector + fun dashboardWidgetConfigurationActivity(): DashboardWidgetConfigurationActivity + + @ContributesAndroidInjector + fun dashboardWidgetProvider(): DashboardWidgetProvider + + @ContributesAndroidInjector + fun galleryFragmentBottomSheetDialog(): GalleryFragmentBottomSheetDialog + + @ContributesAndroidInjector + fun previewBitmapActivity(): PreviewBitmapActivity + + @ContributesAndroidInjector + fun fileUploadHelper(): FileUploadHelper + + @ContributesAndroidInjector + fun sslUntrustedCertDialog(): SslUntrustedCertDialog + + @ContributesAndroidInjector + fun fileActionsBottomSheet(): FileActionsBottomSheet + + @ContributesAndroidInjector + fun sendFilesDialog(): SendFilesDialog + + @ContributesAndroidInjector + fun documentScanActivity(): DocumentScanActivity + + @ContributesAndroidInjector + fun groupfolderListFragment(): GroupfolderListFragment + + @ContributesAndroidInjector + fun launcherActivity(): LauncherActivity + + @ContributesAndroidInjector + fun editImageActivity(): EditImageActivity + + @ContributesAndroidInjector + fun fileInfoFragment(): FileInfoFragment + + @ContributesAndroidInjector + fun etmBackgroundJobsFragment(): EtmBackgroundJobsFragment + + @ContributesAndroidInjector + fun backgroundJobManagerImpl(): BackgroundJobManagerImpl + + @ContributesAndroidInjector + fun testJob(): TestJob + + @ContributesAndroidInjector + fun internalTwoWaySyncActivity(): InternalTwoWaySyncActivity + + @OptIn(UnstableApi::class) + @ContributesAndroidInjector + fun termsOfServiceDialog(): TermsOfServiceDialog + + @ContributesAndroidInjector + fun setStatusMessageBottomSheet(): SetStatusMessageBottomSheet + + @ContributesAndroidInjector + fun tagManagementBottomSheet(): TagManagementBottomSheet + + @ContributesAndroidInjector + fun navigatorActivity(): NavigatorActivity + + @ContributesAndroidInjector + fun communityFragment(): CommunityFragment + + @ContributesAndroidInjector + fun albumsPickerActivity(): AlbumsPickerActivity + + @ContributesAndroidInjector + fun createAlbumDialogFragment(): CreateAlbumDialogFragment + + @ContributesAndroidInjector + fun albumsFragment(): AlbumsFragment + + @ContributesAndroidInjector + fun albumItemsFragment(): AlbumItemsFragment + + @ContributesAndroidInjector + fun albumItemActionsBottomSheet(): AlbumItemActionsBottomSheet + + @ContributesAndroidInjector + fun albumSharingBottomSheet(): AlbumSharingBottomSheet +}