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
4 years ago
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
4 years ago
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
4 years ago
@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
4 years ago
fun getPreferences(@ApplicationContext context: Context): Preferences = Preferences(context)
@Provides
fun locationManager(locationManager: AndroidLocationManager): LocationManager = locationManager
4 years ago
@Provides
@Singleton
fun getWorkManager(
@ApplicationContext context: Context,
preferences: Preferences,
caldavDao: CaldavDao,
openTaskDao: OpenTaskDao
): WorkManager = WorkManagerImpl(context, preferences, caldavDao, openTaskDao)
}