From 29893f9ee7ae8f2edb1ae393304edd75ce1cc00b Mon Sep 17 00:00:00 2001 From: "Z. Charles Dziura" Date: Sat, 26 Oct 2024 22:43:08 -0400 Subject: [PATCH] Provide the prefs data store, also separate out the retrofit client into its own di module --- .../data/pref/PreferencesDataStore.kt | 2 +- .../di/modules/AuthRepositoryModule.kt | 15 --------- .../debtpirate/di/modules/HttpClientModule.kt | 32 +++++++++++++++++++ .../di/modules/PrefsDataStoreProvider.kt | 22 +++++++++++++ 4 files changed, 55 insertions(+), 16 deletions(-) create mode 100644 app/app/src/main/java/ing/bikeshedengineer/debtpirate/di/modules/HttpClientModule.kt create mode 100644 app/app/src/main/java/ing/bikeshedengineer/debtpirate/di/modules/PrefsDataStoreProvider.kt diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/data/pref/PreferencesDataStore.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/data/pref/PreferencesDataStore.kt index a065276..2d8ca68 100644 --- a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/data/pref/PreferencesDataStore.kt +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/data/pref/PreferencesDataStore.kt @@ -25,7 +25,7 @@ object PrefsDataStoreSerializer : Serializer { override suspend fun writeTo(t: PrefsDataStore, output: OutputStream) = t.writeTo(output) } -val Context.dataStore: DataStore by dataStore( +val Context.prefsDataStore: DataStore by dataStore( fileName = "prefs_data_store.proto", serializer = PrefsDataStoreSerializer ) \ No newline at end of file diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/di/modules/AuthRepositoryModule.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/di/modules/AuthRepositoryModule.kt index bcf0a99..fbbbbc8 100644 --- a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/di/modules/AuthRepositoryModule.kt +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/di/modules/AuthRepositoryModule.kt @@ -17,21 +17,6 @@ import javax.inject.Singleton @InstallIn(SingletonComponent::class) object AuthRepositoryModule { - @Provides - @Singleton - fun provideHttpClient(): Retrofit { - return Retrofit.Builder() - .baseUrl(BuildConfig.API_BASE_URL) - .addConverterFactory(GsonConverterFactory.create()) - .client(OkHttpClient.Builder() - .addInterceptor(HttpLoggingInterceptor().apply { - level = HttpLoggingInterceptor.Level.BODY - }) - .build() - ) - .build() - } - @Provides @Singleton fun provideAuthRepository(httpClient: Retrofit): AuthRepository { diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/di/modules/HttpClientModule.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/di/modules/HttpClientModule.kt new file mode 100644 index 0000000..c019925 --- /dev/null +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/di/modules/HttpClientModule.kt @@ -0,0 +1,32 @@ +package ing.bikeshedengineer.debtpirate.di.modules + +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import ing.bikeshedengineer.debtpirate.BuildConfig +import okhttp3.OkHttpClient +import okhttp3.logging.HttpLoggingInterceptor +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object HttpClientModule { + + @Provides + @Singleton + fun provideHttpClient(): Retrofit { + return Retrofit.Builder() + .baseUrl(BuildConfig.API_BASE_URL) + .addConverterFactory(GsonConverterFactory.create()) + .client(OkHttpClient.Builder() + .addInterceptor(HttpLoggingInterceptor().apply { + level = HttpLoggingInterceptor.Level.BODY + }) + .build() + ) + .build() + } +} \ No newline at end of file diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/di/modules/PrefsDataStoreProvider.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/di/modules/PrefsDataStoreProvider.kt new file mode 100644 index 0000000..756005d --- /dev/null +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/di/modules/PrefsDataStoreProvider.kt @@ -0,0 +1,22 @@ +package ing.bikeshedengineer.debtpirate.di.modules + +import android.app.Application +import androidx.datastore.core.DataStore +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import ing.bikeshedengineer.debtpirate.PrefsDataStore +import ing.bikeshedengineer.debtpirate.data.pref.prefsDataStore +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object PrefsDataStoreProvider { + + @Provides + @Singleton + fun providePrefsDataStore(application: Application): DataStore { + return application.prefsDataStore + } +} \ No newline at end of file