You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tasks/app/src/main/java/org/tasks/injection/ProductionModule.kt

56 lines
1.8 KiB
Kotlin

package org.tasks.injection
import android.content.Context
import androidx.room.Room
import com.todoroo.astrid.dao.Database
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import org.tasks.BuildConfig
import org.tasks.R
import org.tasks.caldav.FileStorage
import org.tasks.data.CaldavDao
import org.tasks.data.OpenTaskDao
import org.tasks.db.Migrations
import org.tasks.jobs.WorkManager
import org.tasks.jobs.WorkManagerImpl
import org.tasks.location.AndroidLocationManager
import org.tasks.location.LocationManager
import org.tasks.preferences.Preferences
import javax.inject.Singleton
@Module
@InstallIn(SingletonComponent::class)
internal class ProductionModule {
@Provides
@Singleton
fun getAppDatabase(
@ApplicationContext context: Context,
preferences: Preferences,
fileStorage: FileStorage,
): Database {
val builder = Room.databaseBuilder(context, Database::class.java, Database.NAME)
.addMigrations(*Migrations.migrations(fileStorage))
if (!BuildConfig.DEBUG || !preferences.getBoolean(R.string.p_crash_main_queries, false)) {
builder.allowMainThreadQueries()
}
return builder.build()
}
@Provides
fun getPreferences(@ApplicationContext context: Context): Preferences = Preferences(context)
@Provides
fun locationManager(locationManager: AndroidLocationManager): LocationManager = locationManager
@Provides
@Singleton
fun getWorkManager(
@ApplicationContext context: Context,
preferences: Preferences,
caldavDao: CaldavDao,
openTaskDao: OpenTaskDao
): WorkManager = WorkManagerImpl(context, preferences, caldavDao, openTaskDao)
}