50 lines
1.7 KiB
Kotlin
50 lines
1.7 KiB
Kotlin
package gq.kirmanak.mealient.di
|
|
|
|
import android.content.Context
|
|
import androidx.datastore.core.DataStore
|
|
import androidx.datastore.preferences.core.PreferenceDataStoreFactory
|
|
import androidx.datastore.preferences.core.Preferences
|
|
import androidx.datastore.preferences.preferencesDataStoreFile
|
|
import com.google.firebase.analytics.FirebaseAnalytics
|
|
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
|
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 gq.kirmanak.mealient.data.analytics.Analytics
|
|
import gq.kirmanak.mealient.data.analytics.AnalyticsImpl
|
|
import gq.kirmanak.mealient.data.storage.PreferencesStorage
|
|
import gq.kirmanak.mealient.data.storage.PreferencesStorageImpl
|
|
import javax.inject.Singleton
|
|
|
|
@Module
|
|
@InstallIn(SingletonComponent::class)
|
|
interface AppModule {
|
|
companion object {
|
|
|
|
@Provides
|
|
@Singleton
|
|
fun provideDataStore(@ApplicationContext context: Context): DataStore<Preferences> =
|
|
PreferenceDataStoreFactory.create { context.preferencesDataStoreFile("settings") }
|
|
|
|
@Provides
|
|
@Singleton
|
|
fun provideFirebaseAnalytics(@ApplicationContext context: Context): FirebaseAnalytics =
|
|
FirebaseAnalytics.getInstance(context)
|
|
|
|
@Provides
|
|
@Singleton
|
|
fun provideFirebaseCrashlytics(): FirebaseCrashlytics =
|
|
FirebaseCrashlytics.getInstance()
|
|
}
|
|
|
|
@Binds
|
|
@Singleton
|
|
fun bindPreferencesStorage(preferencesStorage: PreferencesStorageImpl): PreferencesStorage
|
|
|
|
@Binds
|
|
@Singleton
|
|
fun bindAnalytics(analyticsImpl: AnalyticsImpl): Analytics
|
|
} |