Disable Firebase data collection in debug builds
This commit is contained in:
@@ -2,6 +2,8 @@ package gq.kirmanak.mealient
|
|||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import dagger.hilt.android.HiltAndroidApp
|
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 gq.kirmanak.mealient.logging.Logger
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@@ -11,8 +13,15 @@ class App : Application() {
|
|||||||
@Inject
|
@Inject
|
||||||
lateinit var logger: Logger
|
lateinit var logger: Logger
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
lateinit var buildConfiguration: BuildConfiguration
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
lateinit var analytics: Analytics
|
||||||
|
|
||||||
override fun onCreate() {
|
override fun onCreate() {
|
||||||
super.onCreate()
|
super.onCreate()
|
||||||
logger.v { "onCreate() called" }
|
logger.v { "onCreate() called" }
|
||||||
|
analytics.setIsEnabled(!buildConfiguration.isDebug())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package gq.kirmanak.mealient.data.analytics
|
||||||
|
|
||||||
|
interface Analytics {
|
||||||
|
|
||||||
|
fun setIsEnabled(enabled: Boolean)
|
||||||
|
}
|
||||||
@@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package gq.kirmanak.mealient.data.configuration
|
||||||
|
|
||||||
|
interface BuildConfiguration {
|
||||||
|
fun isDebug(): Boolean
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -5,12 +5,18 @@ import androidx.datastore.core.DataStore
|
|||||||
import androidx.datastore.preferences.core.PreferenceDataStoreFactory
|
import androidx.datastore.preferences.core.PreferenceDataStoreFactory
|
||||||
import androidx.datastore.preferences.core.Preferences
|
import androidx.datastore.preferences.core.Preferences
|
||||||
import androidx.datastore.preferences.preferencesDataStoreFile
|
import androidx.datastore.preferences.preferencesDataStoreFile
|
||||||
|
import com.google.firebase.analytics.FirebaseAnalytics
|
||||||
|
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
||||||
import dagger.Binds
|
import dagger.Binds
|
||||||
import dagger.Module
|
import dagger.Module
|
||||||
import dagger.Provides
|
import dagger.Provides
|
||||||
import dagger.hilt.InstallIn
|
import dagger.hilt.InstallIn
|
||||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
import dagger.hilt.components.SingletonComponent
|
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.PreferencesStorage
|
||||||
import gq.kirmanak.mealient.data.storage.PreferencesStorageImpl
|
import gq.kirmanak.mealient.data.storage.PreferencesStorageImpl
|
||||||
import javax.inject.Singleton
|
import javax.inject.Singleton
|
||||||
@@ -24,9 +30,27 @@ interface AppModule {
|
|||||||
@Singleton
|
@Singleton
|
||||||
fun provideDataStore(@ApplicationContext context: Context): DataStore<Preferences> =
|
fun provideDataStore(@ApplicationContext context: Context): DataStore<Preferences> =
|
||||||
PreferenceDataStoreFactory.create { context.preferencesDataStoreFile("settings") }
|
PreferenceDataStoreFactory.create { context.preferencesDataStoreFile("settings") }
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
fun provideFirebaseAnalytics(@ApplicationContext context: Context): FirebaseAnalytics =
|
||||||
|
FirebaseAnalytics.getInstance(context)
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
fun provideFirebaseCrashlytics(): FirebaseCrashlytics =
|
||||||
|
FirebaseCrashlytics.getInstance()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Binds
|
@Binds
|
||||||
@Singleton
|
@Singleton
|
||||||
fun bindPreferencesStorage(preferencesStorage: PreferencesStorageImpl): PreferencesStorage
|
fun bindPreferencesStorage(preferencesStorage: PreferencesStorageImpl): PreferencesStorage
|
||||||
|
|
||||||
|
@Binds
|
||||||
|
@Singleton
|
||||||
|
fun bindBuildConfiguration(buildConfigurationImpl: BuildConfigurationImpl): BuildConfiguration
|
||||||
|
|
||||||
|
@Binds
|
||||||
|
@Singleton
|
||||||
|
fun bindAnalytics(analyticsImpl: AnalyticsImpl): Analytics
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user