From 4d54501ed4a5d799a318b57072bb5c6789d0b13d Mon Sep 17 00:00:00 2001 From: Jean-Luc Makiola Date: Mon, 8 Jun 2026 17:48:34 +0200 Subject: [PATCH] di: wire CalendarRepository, DataSource, DataStore, IoDispatcher --- .../calendula/data/di/DataModule.kt | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 app/src/main/java/de/jeanlucmakiola/calendula/data/di/DataModule.kt diff --git a/app/src/main/java/de/jeanlucmakiola/calendula/data/di/DataModule.kt b/app/src/main/java/de/jeanlucmakiola/calendula/data/di/DataModule.kt new file mode 100644 index 0000000..09d37a1 --- /dev/null +++ b/app/src/main/java/de/jeanlucmakiola/calendula/data/di/DataModule.kt @@ -0,0 +1,54 @@ +package de.jeanlucmakiola.calendula.data.di + +import android.content.Context +import androidx.datastore.core.DataStore +import androidx.datastore.preferences.core.Preferences +import androidx.datastore.preferences.preferencesDataStore +import dagger.Binds +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext +import dagger.hilt.components.SingletonComponent +import de.jeanlucmakiola.calendula.data.calendar.AndroidCalendarDataSource +import de.jeanlucmakiola.calendula.data.calendar.CalendarDataSource +import de.jeanlucmakiola.calendula.data.calendar.CalendarRepository +import de.jeanlucmakiola.calendula.data.calendar.CalendarRepositoryImpl +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.Dispatchers +import javax.inject.Singleton + +private val Context.calendulaDataStore: DataStore by preferencesDataStore( + name = "calendula_prefs", +) + +@Module +@InstallIn(SingletonComponent::class) +abstract class DataBindModule { + + @Binds + @Singleton + abstract fun bindCalendarDataSource( + impl: AndroidCalendarDataSource, + ): CalendarDataSource + + @Binds + @Singleton + abstract fun bindCalendarRepository( + impl: CalendarRepositoryImpl, + ): CalendarRepository +} + +@Module +@InstallIn(SingletonComponent::class) +object DataProvideModule { + + @Provides + @Singleton + fun provideDataStore(@ApplicationContext context: Context): DataStore = + context.calendulaDataStore + + @Provides + @IoDispatcher + fun provideIoDispatcher(): CoroutineDispatcher = Dispatchers.IO +}