diff --git a/app/src/main/java/gq/kirmanak/mealient/App.kt b/app/src/main/java/gq/kirmanak/mealient/App.kt index 7854133..0d8dfde 100644 --- a/app/src/main/java/gq/kirmanak/mealient/App.kt +++ b/app/src/main/java/gq/kirmanak/mealient/App.kt @@ -2,6 +2,8 @@ package gq.kirmanak.mealient import android.app.Application import dagger.hilt.android.HiltAndroidApp +import gq.kirmanak.mealient.data.analytics.Analytics +import gq.kirmanak.mealient.data.configuration.BuildConfiguration import gq.kirmanak.mealient.logging.Logger import javax.inject.Inject @@ -11,8 +13,15 @@ class App : Application() { @Inject lateinit var logger: Logger + @Inject + lateinit var buildConfiguration: BuildConfiguration + + @Inject + lateinit var analytics: Analytics + override fun onCreate() { super.onCreate() logger.v { "onCreate() called" } + analytics.setIsEnabled(!buildConfiguration.isDebug()) } } diff --git a/app/src/main/java/gq/kirmanak/mealient/data/analytics/Analytics.kt b/app/src/main/java/gq/kirmanak/mealient/data/analytics/Analytics.kt new file mode 100644 index 0000000..351ae24 --- /dev/null +++ b/app/src/main/java/gq/kirmanak/mealient/data/analytics/Analytics.kt @@ -0,0 +1,6 @@ +package gq.kirmanak.mealient.data.analytics + +interface Analytics { + + fun setIsEnabled(enabled: Boolean) +} \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/data/analytics/AnalyticsImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/analytics/AnalyticsImpl.kt new file mode 100644 index 0000000..40daa5e --- /dev/null +++ b/app/src/main/java/gq/kirmanak/mealient/data/analytics/AnalyticsImpl.kt @@ -0,0 +1,21 @@ +package gq.kirmanak.mealient.data.analytics + +import com.google.firebase.analytics.FirebaseAnalytics +import com.google.firebase.crashlytics.FirebaseCrashlytics +import gq.kirmanak.mealient.logging.Logger +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class AnalyticsImpl @Inject constructor( + private val firebaseAnalytics: FirebaseAnalytics, + private val firebaseCrashlytics: FirebaseCrashlytics, + private val logger: Logger, +) : Analytics { + + override fun setIsEnabled(enabled: Boolean) { + logger.v { "setIsEnabled() called with: enabled = $enabled" } + firebaseAnalytics.setAnalyticsCollectionEnabled(enabled) + firebaseCrashlytics.setCrashlyticsCollectionEnabled(enabled) + } +} \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/data/configuration/BuildConfiguration.kt b/app/src/main/java/gq/kirmanak/mealient/data/configuration/BuildConfiguration.kt new file mode 100644 index 0000000..8aeb61c --- /dev/null +++ b/app/src/main/java/gq/kirmanak/mealient/data/configuration/BuildConfiguration.kt @@ -0,0 +1,5 @@ +package gq.kirmanak.mealient.data.configuration + +interface BuildConfiguration { + fun isDebug(): Boolean +} \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/data/configuration/BuildConfigurationImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/configuration/BuildConfigurationImpl.kt new file mode 100644 index 0000000..a260ae4 --- /dev/null +++ b/app/src/main/java/gq/kirmanak/mealient/data/configuration/BuildConfigurationImpl.kt @@ -0,0 +1,11 @@ +package gq.kirmanak.mealient.data.configuration + +import gq.kirmanak.mealient.BuildConfig +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class BuildConfigurationImpl @Inject constructor() : BuildConfiguration { + + override fun isDebug(): Boolean = BuildConfig.DEBUG +} \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/di/AppModule.kt b/app/src/main/java/gq/kirmanak/mealient/di/AppModule.kt index 8b3a7f7..88a0b25 100644 --- a/app/src/main/java/gq/kirmanak/mealient/di/AppModule.kt +++ b/app/src/main/java/gq/kirmanak/mealient/di/AppModule.kt @@ -5,12 +5,18 @@ 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.configuration.BuildConfiguration +import gq.kirmanak.mealient.data.configuration.BuildConfigurationImpl import gq.kirmanak.mealient.data.storage.PreferencesStorage import gq.kirmanak.mealient.data.storage.PreferencesStorageImpl import javax.inject.Singleton @@ -24,9 +30,27 @@ interface AppModule { @Singleton fun provideDataStore(@ApplicationContext context: Context): DataStore = 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 bindBuildConfiguration(buildConfigurationImpl: BuildConfigurationImpl): BuildConfiguration + + @Binds + @Singleton + fun bindAnalytics(analyticsImpl: AnalyticsImpl): Analytics } \ No newline at end of file