Compare commits

..

1 Commits

Author SHA1 Message Date
Ricki Hirner
281837b4c2 Refactor DI modules and qualifiers
- Move `ColorSchemeScopes` to `ColorSchemeQualifiers`
- Rename `CustomCertManagerModule` to `Cert4AndroidModule`
- Move `CoroutineScopes` to `CoroutineQualifiers`
- Add `ApplicationScope` qualifier to `CoroutineQualifiers`
- Remove redundant DI module declarations
- Add new `CoreSettingsProvidersModule`
- Add new `StartupPluginsModule`
- Add new `UncaughtExceptionHandlerModule`
- Add new `AuthorizationServiceModule`
- Add new `AppLicenseInfoProviderModule`
- Add new `IntroPageFactoryModule`
- Add new `LoginTypesProviderModule`
- Add new `AccountsDrawerHandlerModule`
2026-02-06 15:02:48 +01:00
58 changed files with 254 additions and 163 deletions

View File

@@ -0,0 +1,19 @@
/*
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
*/
package com.davx5.ose.di
import at.bitfire.davdroid.ui.AccountsDrawerHandler
import at.bitfire.davdroid.ui.OseAccountsDrawerHandler
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent
@Module
@InstallIn(ActivityComponent::class)
interface AccountsDrawerHandlerModule {
@Binds
fun accountsDrawerHandler(impl: OseAccountsDrawerHandler): AccountsDrawerHandler
}

View File

@@ -0,0 +1,19 @@
/*
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
*/
package com.davx5.ose.di
import at.bitfire.davdroid.ui.about.AboutActivity
import com.davx5.ose.ui.about.OpenSourceLicenseInfoProvider
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ViewModelComponent
@Module
@InstallIn(ViewModelComponent::class)
interface AppLicenseInfoProviderModule {
@Binds
fun appLicenseInfoProvider(impl: OpenSourceLicenseInfoProvider): AboutActivity.AppLicenseInfoProvider
}

View File

@@ -25,7 +25,7 @@ import java.util.Optional
*/
@Module
@InstallIn(SingletonComponent::class)
class CustomCertManagerModule {
class Cert4AndroidModule {
@Provides
fun customCertStore(@ApplicationContext context: Context): Optional<CustomCertStore> =

View File

@@ -5,8 +5,8 @@
package com.davx5.ose.di
import androidx.compose.material3.ColorScheme
import at.bitfire.davdroid.di.scope.DarkColorScheme
import at.bitfire.davdroid.di.scope.LightColorScheme
import at.bitfire.davdroid.di.qualifier.DarkColorScheme
import at.bitfire.davdroid.di.qualifier.LightColorScheme
import at.bitfire.davdroid.ui.OseTheme
import dagger.Module
import dagger.Provides

View File

@@ -0,0 +1,19 @@
/*
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
*/
package com.davx5.ose.di
import at.bitfire.davdroid.ui.intro.IntroPageFactory
import com.davx5.ose.ui.intro.OseIntroPageFactory
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
@Module
@InstallIn(SingletonComponent::class)
interface Global {
@Binds
fun introPageFactory(impl: OseIntroPageFactory): IntroPageFactory
}

View File

@@ -0,0 +1,21 @@
/*
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
*/
package com.davx5.ose.di
import at.bitfire.davdroid.ui.setup.LoginTypesProvider
import at.bitfire.davdroid.ui.setup.StandardLoginTypesProvider
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
@Module
@InstallIn(SingletonComponent::class)
interface LoginTypesProviderModule {
@Binds
fun loginTypesProvider(impl: StandardLoginTypesProvider): LoginTypesProvider
}

View File

@@ -1,51 +0,0 @@
/*
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
*/
package com.davx5.ose.di
import at.bitfire.davdroid.ui.AccountsDrawerHandler
import at.bitfire.davdroid.ui.OseAccountsDrawerHandler
import at.bitfire.davdroid.ui.about.AboutActivity
import at.bitfire.davdroid.ui.intro.IntroPageFactory
import at.bitfire.davdroid.ui.setup.LoginTypesProvider
import com.davx5.ose.ui.about.OpenSourceLicenseInfoProvider
import com.davx5.ose.ui.intro.OseIntroPageFactory
import at.bitfire.davdroid.ui.setup.StandardLoginTypesProvider
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent
import dagger.hilt.android.components.ViewModelComponent
import dagger.hilt.components.SingletonComponent
interface OseModules {
@Module
@InstallIn(ActivityComponent::class)
interface ForActivities {
@Binds
fun accountsDrawerHandler(impl: OseAccountsDrawerHandler): AccountsDrawerHandler
@Binds
fun loginTypesProvider(impl: StandardLoginTypesProvider): LoginTypesProvider
}
@Module
@InstallIn(ViewModelComponent::class)
interface ForViewModels {
@Binds
fun appLicenseInfoProvider(impl: OpenSourceLicenseInfoProvider): AboutActivity.AppLicenseInfoProvider
@Binds
fun loginTypesProvider(impl: StandardLoginTypesProvider): LoginTypesProvider
}
@Module
@InstallIn(SingletonComponent::class)
interface Global {
@Binds
fun introPageFactory(impl: OseIntroPageFactory): IntroPageFactory
}
}

View File

@@ -17,7 +17,7 @@ import androidx.core.text.HtmlCompat
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.compose.viewModel
import at.bitfire.davdroid.di.scope.IoDispatcher
import at.bitfire.davdroid.di.qualifier.IoDispatcher
import at.bitfire.davdroid.ui.UiUtils.toAnnotatedString
import at.bitfire.davdroid.ui.about.AboutActivity
import com.google.common.io.CharStreams

View File

@@ -5,8 +5,8 @@
package at.bitfire.davdroid.di
import androidx.compose.material3.ColorScheme
import at.bitfire.davdroid.di.scope.DarkColorScheme
import at.bitfire.davdroid.di.scope.LightColorScheme
import at.bitfire.davdroid.di.qualifier.DarkColorScheme
import at.bitfire.davdroid.di.qualifier.LightColorScheme
import at.bitfire.davdroid.ui.OseTheme
import dagger.Module
import dagger.Provides

View File

@@ -5,10 +5,10 @@
package at.bitfire.davdroid.di
import at.bitfire.davdroid.di.TestCoroutineDispatchersModule.standardTestDispatcher
import at.bitfire.davdroid.di.scope.DefaultDispatcher
import at.bitfire.davdroid.di.scope.IoDispatcher
import at.bitfire.davdroid.di.scope.MainDispatcher
import at.bitfire.davdroid.di.scope.SyncDispatcher
import at.bitfire.davdroid.di.qualifier.DefaultDispatcher
import at.bitfire.davdroid.di.qualifier.IoDispatcher
import at.bitfire.davdroid.di.qualifier.MainDispatcher
import at.bitfire.davdroid.di.qualifier.SyncDispatcher
import dagger.Module
import dagger.Provides
import dagger.hilt.components.SingletonComponent

View File

@@ -11,7 +11,7 @@ import at.bitfire.dav4jvm.okhttp.Response
import at.bitfire.dav4jvm.property.caldav.CalDAV
import at.bitfire.dav4jvm.property.caldav.GetCTag
import at.bitfire.davdroid.db.Collection
import at.bitfire.davdroid.di.scope.SyncDispatcher
import at.bitfire.davdroid.di.qualifier.SyncDispatcher
import at.bitfire.davdroid.resource.LocalResource
import at.bitfire.davdroid.resource.SyncState
import at.bitfire.davdroid.util.DavUtils.lastSegment

View File

@@ -5,7 +5,7 @@
package at.bitfire.davdroid.ui
import android.content.Context
import at.bitfire.davdroid.di.scope.IoDispatcher
import at.bitfire.davdroid.di.qualifier.IoDispatcher
import at.bitfire.davdroid.ui.about.AboutModel
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.android.testing.HiltAndroidRule

View File

@@ -6,7 +6,7 @@ package at.bitfire.davdroid
import android.app.Application
import androidx.hilt.work.HiltWorkerFactory
import at.bitfire.davdroid.di.scope.DefaultDispatcher
import at.bitfire.davdroid.di.qualifier.DefaultDispatcher
import at.bitfire.davdroid.log.LogManager
import at.bitfire.davdroid.startup.StartupPlugin
import at.bitfire.davdroid.sync.account.AccountsCleanupWorker

View File

@@ -0,0 +1,21 @@
/*
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
*/
package at.bitfire.davdroid.di
import at.bitfire.davdroid.ui.about.AboutActivity.AppLicenseInfoProvider
import dagger.BindsOptionalOf
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent
@Module
@InstallIn(ActivityComponent::class)
interface AppLicenseInfoProviderModule {
// allows to inject Optional<AppLicenseInfoProvider> by providing an empty Optional as default
@BindsOptionalOf
fun appLicenseInfoProvider(): AppLicenseInfoProvider
}

View File

@@ -2,7 +2,7 @@
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
*/
package at.bitfire.davdroid.network
package at.bitfire.davdroid.di
import android.content.Context
import at.bitfire.davdroid.ProductIds
@@ -16,12 +16,15 @@ import net.openid.appauth.AuthorizationService
import java.net.HttpURLConnection
import java.net.URL
/**
* AppAuth-Android integration
*/
@Module
@InstallIn(SingletonComponent::class)
object OAuthModule {
class AuthorizationServiceModule {
/**
* Make sure to call [AuthorizationService.dispose] when obtaining an instance.
* Make sure to call [net.openid.appauth.AuthorizationService.dispose] when obtaining an instance.
*
* Creating an instance is expensive (involves CustomTabsManager), so don't create an
* instance if not necessary (use Provider/Lazy).
@@ -31,7 +34,8 @@ object OAuthModule {
@ApplicationContext context: Context,
productIds: ProductIds
): AuthorizationService =
AuthorizationService(context,
AuthorizationService(
context,
AppAuthConfiguration.Builder()
.setConnectionBuilder { uri ->
val url = URL(uri.toString())

View File

@@ -0,0 +1,33 @@
/*
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
*/
package at.bitfire.davdroid.di
import at.bitfire.davdroid.settings.DefaultsProvider
import at.bitfire.davdroid.settings.SettingsProvider
import at.bitfire.davdroid.settings.SharedPreferencesProvider
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import dagger.multibindings.IntKey
import dagger.multibindings.IntoMap
@Module
@InstallIn(SingletonComponent::class)
abstract class CoreSettingsProvidersModule {
// sorted by descending priority (provides with higher priority are queried first)
@Binds
@IntoMap
@IntKey(/* priority */ 10)
abstract fun sharedPreferencesProvider(impl: SharedPreferencesProvider): SettingsProvider
@Binds
@IntoMap
@IntKey(/* priority */ 0)
abstract fun defaultsProvider(impl: DefaultsProvider): SettingsProvider
}

View File

@@ -4,10 +4,10 @@
package at.bitfire.davdroid.di
import at.bitfire.davdroid.di.scope.DefaultDispatcher
import at.bitfire.davdroid.di.scope.IoDispatcher
import at.bitfire.davdroid.di.scope.MainDispatcher
import at.bitfire.davdroid.di.scope.SyncDispatcher
import at.bitfire.davdroid.di.qualifier.DefaultDispatcher
import at.bitfire.davdroid.di.qualifier.IoDispatcher
import at.bitfire.davdroid.di.qualifier.MainDispatcher
import at.bitfire.davdroid.di.qualifier.SyncDispatcher
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn

View File

@@ -4,7 +4,8 @@
package at.bitfire.davdroid.di
import at.bitfire.davdroid.di.scope.MainDispatcher
import at.bitfire.davdroid.di.qualifier.ApplicationScope
import at.bitfire.davdroid.di.qualifier.MainDispatcher
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
@@ -15,10 +16,6 @@ import kotlinx.coroutines.SupervisorJob
import javax.inject.Qualifier
import javax.inject.Singleton
@Retention(AnnotationRetention.RUNTIME)
@Qualifier
annotation class ApplicationScope
@Module
@InstallIn(SingletonComponent::class)
class CoroutineScopesModule {

View File

@@ -0,0 +1,29 @@
/*
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
*/
package at.bitfire.davdroid.di
import at.bitfire.davdroid.startup.CrashHandlerSetup
import at.bitfire.davdroid.startup.StartupPlugin
import at.bitfire.davdroid.startup.TasksAppWatcher
import dagger.Binds
import dagger.BindsOptionalOf
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import dagger.multibindings.IntoSet
@Module
@InstallIn(SingletonComponent::class)
interface StartupPluginsModule {
@Binds
@IntoSet
fun crashHandlerSetup(impl: CrashHandlerSetup): StartupPlugin
@Binds
@IntoSet
fun tasksAppWatcher(impl: TasksAppWatcher): StartupPlugin
}

View File

@@ -0,0 +1,20 @@
/*
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
*/
package at.bitfire.davdroid.di
import dagger.BindsOptionalOf
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
@Module
@InstallIn(SingletonComponent::class)
interface UncaughtExceptionHandlerModule {
// allows to inject Optional<Thread.UncaughtExceptionHandler> by providing an empty Optional as default
@BindsOptionalOf
fun optionalDebugInfoCrashHandler(): Thread.UncaughtExceptionHandler
}

View File

@@ -2,7 +2,7 @@
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
*/
package at.bitfire.davdroid.di.scope
package at.bitfire.davdroid.di.qualifier
import javax.inject.Qualifier

View File

@@ -2,11 +2,20 @@
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
*/
package at.bitfire.davdroid.di.scope
package at.bitfire.davdroid.di.qualifier
import javax.inject.Qualifier
// CoroutineScope qualifiers
@Retention(AnnotationRetention.RUNTIME)
@Qualifier
annotation class ApplicationScope
// CoroutineDispatcher qualifiers
@Retention(AnnotationRetention.RUNTIME)
@Qualifier
annotation class DefaultDispatcher

View File

@@ -8,7 +8,7 @@ import android.accounts.Account
import androidx.annotation.WorkerThread
import at.bitfire.dav4jvm.okhttp.BasicDigestAuthHandler
import at.bitfire.dav4jvm.okhttp.UrlUtils
import at.bitfire.davdroid.di.scope.IoDispatcher
import at.bitfire.davdroid.di.qualifier.IoDispatcher
import at.bitfire.davdroid.settings.AccountSettings
import at.bitfire.davdroid.settings.Credentials
import at.bitfire.davdroid.settings.Settings

View File

@@ -22,7 +22,7 @@ import at.bitfire.dav4jvm.ktor.toUrlOrNull
import at.bitfire.dav4jvm.property.push.WebDAVPush
import at.bitfire.davdroid.db.Collection
import at.bitfire.davdroid.db.Service
import at.bitfire.davdroid.di.scope.IoDispatcher
import at.bitfire.davdroid.di.qualifier.IoDispatcher
import at.bitfire.davdroid.network.HttpClientBuilder
import at.bitfire.davdroid.push.PushRegistrationManager.Companion.mutex
import at.bitfire.davdroid.repository.AccountRepository

View File

@@ -4,7 +4,7 @@
package at.bitfire.davdroid.push
import at.bitfire.davdroid.di.ApplicationScope
import at.bitfire.davdroid.di.qualifier.ApplicationScope
import dagger.Lazy
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.CoroutineScope

View File

@@ -13,7 +13,7 @@ import at.bitfire.davdroid.R
import at.bitfire.davdroid.db.HomeSet
import at.bitfire.davdroid.db.Service
import at.bitfire.davdroid.db.ServiceType
import at.bitfire.davdroid.di.scope.DefaultDispatcher
import at.bitfire.davdroid.di.qualifier.DefaultDispatcher
import at.bitfire.davdroid.resource.LocalAddressBookStore
import at.bitfire.davdroid.resource.LocalCalendarStore
import at.bitfire.davdroid.servicedetection.DavResourceFinder

View File

@@ -21,7 +21,7 @@ import at.bitfire.davdroid.db.AppDatabase
import at.bitfire.davdroid.db.Collection
import at.bitfire.davdroid.db.CollectionType
import at.bitfire.davdroid.db.HomeSet
import at.bitfire.davdroid.di.scope.IoDispatcher
import at.bitfire.davdroid.di.qualifier.IoDispatcher
import at.bitfire.davdroid.network.HttpClientBuilder
import at.bitfire.davdroid.servicedetection.RefreshCollectionsWorker
import at.bitfire.davdroid.util.DavUtils

View File

@@ -85,14 +85,4 @@ class DefaultsProvider @Inject constructor(): SettingsProvider {
writer.write(table.toString())
}
@Module
@InstallIn(SingletonComponent::class)
abstract class DefaultsProviderModule {
@Binds
@IntoMap
@IntKey(/* priority */ 0)
abstract fun defaultsProvider(impl: DefaultsProvider): SettingsProvider
}
}

View File

@@ -142,14 +142,4 @@ class SharedPreferencesProvider @Inject constructor(
}
}
@Module
@InstallIn(SingletonComponent::class)
abstract class SharedPreferencesProviderModule {
@Binds
@IntoMap
@IntKey(/* priority */ 10)
abstract fun sharedPreferencesProvider(impl: SharedPreferencesProvider): SettingsProvider
}
}

View File

@@ -31,19 +31,6 @@ class CrashHandlerSetup @Inject constructor(
private val crashHandler: Optional<Thread.UncaughtExceptionHandler>
): StartupPlugin {
@Module
@InstallIn(SingletonComponent::class)
interface CrashHandlerSetupModule {
// allows to inject Optional<Thread.UncaughtExceptionHandler>
@BindsOptionalOf
fun optionalDebugInfoCrashHandler(): Thread.UncaughtExceptionHandler
@Binds
@IntoSet
fun crashHandlerSetup(impl: CrashHandlerSetup): StartupPlugin
}
override fun onAppCreate() {
if (BuildConfig.DEBUG) {
logger.info("Debug build, enabling StrictMode with logging")

View File

@@ -29,15 +29,6 @@ class TasksAppWatcher @Inject constructor(
private val tasksAppManager: Provider<TasksAppManager>
): StartupPlugin {
@Module
@InstallIn(SingletonComponent::class)
interface TasksAppWatcherModule {
@Binds
@IntoSet
fun tasksAppWatcher(impl: TasksAppWatcher): StartupPlugin
}
override fun onAppCreate() {
}

View File

@@ -20,7 +20,7 @@ import at.bitfire.dav4jvm.property.webdav.WebDAV
import at.bitfire.davdroid.ProductIds
import at.bitfire.davdroid.R
import at.bitfire.davdroid.db.Collection
import at.bitfire.davdroid.di.scope.SyncDispatcher
import at.bitfire.davdroid.di.qualifier.SyncDispatcher
import at.bitfire.davdroid.resource.LocalCalendar
import at.bitfire.davdroid.resource.LocalEvent
import at.bitfire.davdroid.resource.LocalResource

View File

@@ -23,7 +23,7 @@ import at.bitfire.dav4jvm.property.webdav.WebDAV
import at.bitfire.davdroid.ProductIds
import at.bitfire.davdroid.R
import at.bitfire.davdroid.db.Collection
import at.bitfire.davdroid.di.scope.SyncDispatcher
import at.bitfire.davdroid.di.qualifier.SyncDispatcher
import at.bitfire.davdroid.resource.LocalAddress
import at.bitfire.davdroid.resource.LocalAddressBook
import at.bitfire.davdroid.resource.LocalContact

View File

@@ -19,7 +19,7 @@ import at.bitfire.dav4jvm.property.webdav.WebDAV
import at.bitfire.davdroid.ProductIds
import at.bitfire.davdroid.R
import at.bitfire.davdroid.db.Collection
import at.bitfire.davdroid.di.scope.SyncDispatcher
import at.bitfire.davdroid.di.qualifier.SyncDispatcher
import at.bitfire.davdroid.resource.LocalJtxCollection
import at.bitfire.davdroid.resource.LocalJtxICalObject
import at.bitfire.davdroid.resource.LocalResource

View File

@@ -18,7 +18,7 @@ import at.bitfire.dav4jvm.property.webdav.WebDAV
import at.bitfire.davdroid.ProductIds
import at.bitfire.davdroid.R
import at.bitfire.davdroid.db.Collection
import at.bitfire.davdroid.di.scope.SyncDispatcher
import at.bitfire.davdroid.di.qualifier.SyncDispatcher
import at.bitfire.davdroid.resource.LocalResource
import at.bitfire.davdroid.resource.LocalTask
import at.bitfire.davdroid.resource.LocalTaskList

View File

@@ -13,7 +13,7 @@ import androidx.core.content.getSystemService
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import at.bitfire.cert4android.CustomCertStore
import at.bitfire.davdroid.di.scope.IoDispatcher
import at.bitfire.davdroid.di.qualifier.IoDispatcher
import at.bitfire.davdroid.push.PushRegistrationManager
import at.bitfire.davdroid.repository.PreferenceRepository
import at.bitfire.davdroid.settings.Settings

View File

@@ -5,8 +5,8 @@
package at.bitfire.davdroid.ui
import android.accounts.Account
import at.bitfire.davdroid.di.ApplicationScope
import at.bitfire.davdroid.di.scope.DefaultDispatcher
import at.bitfire.davdroid.di.qualifier.ApplicationScope
import at.bitfire.davdroid.di.qualifier.DefaultDispatcher
import at.bitfire.davdroid.push.PushRegistrationManager
import at.bitfire.davdroid.repository.AccountRepository
import at.bitfire.davdroid.repository.DavCollectionRepository

View File

@@ -11,7 +11,7 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import at.bitfire.davdroid.di.scope.DefaultDispatcher
import at.bitfire.davdroid.di.qualifier.DefaultDispatcher
import at.bitfire.davdroid.settings.SettingsManager
import at.bitfire.davdroid.sync.TasksAppManager
import at.bitfire.davdroid.util.packageChangedFlow

View File

@@ -182,11 +182,4 @@ class AboutActivity: AppCompatActivity() {
fun LicenseInfo()
}
@Module
@InstallIn(ActivityComponent::class)
interface AppLicenseInfoProviderModule {
@BindsOptionalOf
fun appLicenseInfoProvider(): AppLicenseInfoProvider
}
}

View File

@@ -10,7 +10,7 @@ import android.os.Build
import androidx.annotation.VisibleForTesting
import androidx.core.content.pm.PackageInfoCompat
import androidx.lifecycle.ViewModel
import at.bitfire.davdroid.di.scope.IoDispatcher
import at.bitfire.davdroid.di.qualifier.IoDispatcher
import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.CoroutineDispatcher

View File

@@ -13,7 +13,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import at.bitfire.davdroid.R
import at.bitfire.davdroid.db.Collection
import at.bitfire.davdroid.di.scope.DefaultDispatcher
import at.bitfire.davdroid.di.qualifier.DefaultDispatcher
import at.bitfire.davdroid.repository.AccountRepository
import at.bitfire.davdroid.repository.DavCollectionRepository
import at.bitfire.davdroid.repository.DavServiceRepository

View File

@@ -11,7 +11,7 @@ import androidx.lifecycle.viewModelScope
import at.bitfire.davdroid.R
import at.bitfire.davdroid.db.AppDatabase
import at.bitfire.davdroid.db.Service
import at.bitfire.davdroid.di.scope.DefaultDispatcher
import at.bitfire.davdroid.di.qualifier.DefaultDispatcher
import at.bitfire.davdroid.network.OAuthIntegration
import at.bitfire.davdroid.settings.AccountSettings
import at.bitfire.davdroid.settings.Credentials

View File

@@ -5,7 +5,7 @@
package at.bitfire.davdroid.ui.account
import android.accounts.Account
import at.bitfire.davdroid.di.scope.DefaultDispatcher
import at.bitfire.davdroid.di.qualifier.DefaultDispatcher
import at.bitfire.davdroid.push.PushRegistrationManager
import at.bitfire.davdroid.repository.AccountRepository
import at.bitfire.davdroid.repository.DavCollectionRepository

View File

@@ -26,8 +26,8 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.platform.LocalView
import androidx.lifecycle.compose.LifecycleResumeEffect
import at.bitfire.davdroid.di.scope.DarkColorScheme
import at.bitfire.davdroid.di.scope.LightColorScheme
import at.bitfire.davdroid.di.qualifier.DarkColorScheme
import at.bitfire.davdroid.di.qualifier.LightColorScheme
import at.bitfire.davdroid.ui.ForegroundTracker
import dagger.hilt.EntryPoint
import dagger.hilt.InstallIn

View File

@@ -16,7 +16,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.material3.ColorScheme
import androidx.compose.runtime.rememberCoroutineScope
import at.bitfire.davdroid.di.scope.LightColorScheme
import at.bitfire.davdroid.di.qualifier.LightColorScheme
import at.bitfire.davdroid.ui.composable.AppTheme
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch

View File

@@ -11,7 +11,7 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import at.bitfire.davdroid.di.scope.DefaultDispatcher
import at.bitfire.davdroid.di.qualifier.DefaultDispatcher
import at.bitfire.davdroid.repository.AccountRepository
import at.bitfire.davdroid.servicedetection.DavResourceFinder
import at.bitfire.davdroid.settings.AccountSettings

View File

@@ -7,8 +7,8 @@ package at.bitfire.davdroid.ui.widget
import androidx.compose.material3.ColorScheme
import androidx.glance.appwidget.GlanceAppWidget
import androidx.glance.appwidget.GlanceAppWidgetReceiver
import at.bitfire.davdroid.di.scope.DarkColorScheme
import at.bitfire.davdroid.di.scope.LightColorScheme
import at.bitfire.davdroid.di.qualifier.DarkColorScheme
import at.bitfire.davdroid.di.qualifier.LightColorScheme
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject

View File

@@ -7,8 +7,8 @@ package at.bitfire.davdroid.ui.widget
import androidx.compose.material3.ColorScheme
import androidx.glance.appwidget.GlanceAppWidget
import androidx.glance.appwidget.GlanceAppWidgetReceiver
import at.bitfire.davdroid.di.scope.DarkColorScheme
import at.bitfire.davdroid.di.scope.LightColorScheme
import at.bitfire.davdroid.di.qualifier.DarkColorScheme
import at.bitfire.davdroid.di.qualifier.LightColorScheme
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject

View File

@@ -7,7 +7,7 @@ package at.bitfire.davdroid.webdav
import android.os.ParcelFileDescriptor
import at.bitfire.dav4jvm.okhttp.DavResource
import at.bitfire.dav4jvm.okhttp.exception.HttpException
import at.bitfire.davdroid.di.scope.IoDispatcher
import at.bitfire.davdroid.di.qualifier.IoDispatcher
import at.bitfire.davdroid.util.DavUtils
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory

View File

@@ -11,7 +11,7 @@ import at.bitfire.dav4jvm.okhttp.DavResource
import at.bitfire.davdroid.R
import at.bitfire.davdroid.db.AppDatabase
import at.bitfire.davdroid.db.WebDavMount
import at.bitfire.davdroid.di.scope.IoDispatcher
import at.bitfire.davdroid.di.qualifier.IoDispatcher
import at.bitfire.davdroid.network.HttpClientBuilder
import at.bitfire.davdroid.settings.Credentials
import dagger.hilt.android.qualifiers.ApplicationContext

View File

@@ -9,7 +9,7 @@ import at.bitfire.dav4jvm.ktor.DavResource
import at.bitfire.dav4jvm.ktor.exception.HttpException
import at.bitfire.davdroid.db.AppDatabase
import at.bitfire.davdroid.db.WebDavDocument
import at.bitfire.davdroid.di.scope.IoDispatcher
import at.bitfire.davdroid.di.qualifier.IoDispatcher
import at.bitfire.davdroid.webdav.DavHttpClientBuilder
import at.bitfire.davdroid.webdav.DocumentProviderUtils
import at.bitfire.davdroid.webdav.throwForDocumentProvider

View File

@@ -10,7 +10,7 @@ import at.bitfire.dav4jvm.okhttp.DavResource
import at.bitfire.dav4jvm.okhttp.exception.HttpException
import at.bitfire.davdroid.db.AppDatabase
import at.bitfire.davdroid.db.WebDavDocument
import at.bitfire.davdroid.di.scope.IoDispatcher
import at.bitfire.davdroid.di.qualifier.IoDispatcher
import at.bitfire.davdroid.webdav.DavHttpClientBuilder
import at.bitfire.davdroid.webdav.DocumentProviderUtils
import at.bitfire.davdroid.webdav.DocumentProviderUtils.displayNameToMemberName

View File

@@ -8,7 +8,7 @@ import android.content.Context
import at.bitfire.dav4jvm.okhttp.DavResource
import at.bitfire.dav4jvm.okhttp.exception.HttpException
import at.bitfire.davdroid.db.AppDatabase
import at.bitfire.davdroid.di.scope.IoDispatcher
import at.bitfire.davdroid.di.qualifier.IoDispatcher
import at.bitfire.davdroid.webdav.DavHttpClientBuilder
import at.bitfire.davdroid.webdav.DocumentProviderUtils
import at.bitfire.davdroid.webdav.throwForDocumentProvider

View File

@@ -8,7 +8,7 @@ import android.content.Context
import at.bitfire.dav4jvm.ktor.DavResource
import at.bitfire.dav4jvm.ktor.exception.HttpException
import at.bitfire.davdroid.db.AppDatabase
import at.bitfire.davdroid.di.scope.IoDispatcher
import at.bitfire.davdroid.di.qualifier.IoDispatcher
import at.bitfire.davdroid.webdav.DavHttpClientBuilder
import at.bitfire.davdroid.webdav.DocumentProviderUtils
import at.bitfire.davdroid.webdav.throwForDocumentProvider

View File

@@ -9,7 +9,7 @@ import android.os.Build
import android.os.CancellationSignal
import android.os.ParcelFileDescriptor
import at.bitfire.davdroid.db.AppDatabase
import at.bitfire.davdroid.di.scope.IoDispatcher
import at.bitfire.davdroid.di.qualifier.IoDispatcher
import at.bitfire.davdroid.webdav.DavHttpClientBuilder
import at.bitfire.davdroid.webdav.DocumentProviderUtils
import at.bitfire.davdroid.webdav.HeadResponse

View File

@@ -16,7 +16,7 @@ import android.os.ParcelFileDescriptor
import androidx.core.content.getSystemService
import at.bitfire.davdroid.db.AppDatabase
import at.bitfire.davdroid.db.WebDavDocument
import at.bitfire.davdroid.di.scope.IoDispatcher
import at.bitfire.davdroid.di.qualifier.IoDispatcher
import at.bitfire.davdroid.webdav.DavHttpClientBuilder
import at.bitfire.davdroid.webdav.cache.ThumbnailCache
import dagger.hilt.android.qualifiers.ApplicationContext

View File

@@ -23,7 +23,7 @@ import at.bitfire.davdroid.R
import at.bitfire.davdroid.db.AppDatabase
import at.bitfire.davdroid.db.WebDavDocument
import at.bitfire.davdroid.db.WebDavDocumentDao
import at.bitfire.davdroid.di.scope.IoDispatcher
import at.bitfire.davdroid.di.qualifier.IoDispatcher
import at.bitfire.davdroid.webdav.DavHttpClientBuilder
import at.bitfire.davdroid.webdav.DocumentSortByMapper
import at.bitfire.davdroid.webdav.DocumentsCursor

View File

@@ -8,7 +8,7 @@ import android.content.Context
import at.bitfire.dav4jvm.ktor.DavResource
import at.bitfire.dav4jvm.ktor.exception.HttpException
import at.bitfire.davdroid.db.AppDatabase
import at.bitfire.davdroid.di.scope.IoDispatcher
import at.bitfire.davdroid.di.qualifier.IoDispatcher
import at.bitfire.davdroid.webdav.DavHttpClientBuilder
import at.bitfire.davdroid.webdav.DocumentProviderUtils
import at.bitfire.davdroid.webdav.DocumentProviderUtils.displayNameToMemberName