From 8a4d2a7d1b33ac8dcacd4f87eeceaa7acacb6311 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Fri, 4 Nov 2022 20:13:35 +0100 Subject: [PATCH 1/9] Use separate Firebase project to debug --- app/src/debug/google-services.json | 39 ++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 app/src/debug/google-services.json diff --git a/app/src/debug/google-services.json b/app/src/debug/google-services.json new file mode 100644 index 0000000..55fea2e --- /dev/null +++ b/app/src/debug/google-services.json @@ -0,0 +1,39 @@ +{ + "project_info": { + "project_number": "31935207760", + "project_id": "mealient-debug", + "storage_bucket": "mealient-debug.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:31935207760:android:530fa33d3ce1d3728ab455", + "android_client_info": { + "package_name": "gq.kirmanak.mealient" + } + }, + "oauth_client": [ + { + "client_id": "31935207760-cb50pa0gepc1ge42bigrmhev2o6mv42p.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyDWk5UIvCiYihBMCOYNbv71lB_DEbyXJn8" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "31935207760-cb50pa0gepc1ge42bigrmhev2o6mv42p.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file From b84406d38435ecb6f84fd0b94c7f97950c89b9cd Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Fri, 4 Nov 2022 20:28:31 +0100 Subject: [PATCH 2/9] Move release Firebase config to type dir --- app/{ => src/release}/google-services.json | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename app/{ => src/release}/google-services.json (100%) diff --git a/app/google-services.json b/app/src/release/google-services.json similarity index 100% rename from app/google-services.json rename to app/src/release/google-services.json From f98de3784ec7307583a5ba09b00c75375ce366fb Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Sat, 5 Nov 2022 12:00:51 +0100 Subject: [PATCH 3/9] Disable Firebase data collection in debug builds --- app/src/main/java/gq/kirmanak/mealient/App.kt | 9 +++++++ .../mealient/data/analytics/Analytics.kt | 6 +++++ .../mealient/data/analytics/AnalyticsImpl.kt | 21 ++++++++++++++++ .../data/configuration/BuildConfiguration.kt | 5 ++++ .../configuration/BuildConfigurationImpl.kt | 11 +++++++++ .../java/gq/kirmanak/mealient/di/AppModule.kt | 24 +++++++++++++++++++ 6 files changed, 76 insertions(+) create mode 100644 app/src/main/java/gq/kirmanak/mealient/data/analytics/Analytics.kt create mode 100644 app/src/main/java/gq/kirmanak/mealient/data/analytics/AnalyticsImpl.kt create mode 100644 app/src/main/java/gq/kirmanak/mealient/data/configuration/BuildConfiguration.kt create mode 100644 app/src/main/java/gq/kirmanak/mealient/data/configuration/BuildConfigurationImpl.kt 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 From 52519a8d29076d350ccd237516afe7d1719143b2 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Sat, 5 Nov 2022 12:00:56 +0100 Subject: [PATCH 4/9] Revert "Move release Firebase config to type dir" This reverts commit 3b08a6384c2349f426616b5f7d72c7040541e24f. --- app/{src/release => }/google-services.json | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename app/{src/release => }/google-services.json (100%) diff --git a/app/src/release/google-services.json b/app/google-services.json similarity index 100% rename from app/src/release/google-services.json rename to app/google-services.json From dc23c6574aada935b58f10ec2435d69ffb6e552c Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Sat, 5 Nov 2022 12:00:57 +0100 Subject: [PATCH 5/9] Revert "Use separate Firebase project to debug" This reverts commit 93b10eaaf61401efd26d7d8cb192880e434fd4ac. --- app/src/debug/google-services.json | 39 ------------------------------ 1 file changed, 39 deletions(-) delete mode 100644 app/src/debug/google-services.json diff --git a/app/src/debug/google-services.json b/app/src/debug/google-services.json deleted file mode 100644 index 55fea2e..0000000 --- a/app/src/debug/google-services.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "project_info": { - "project_number": "31935207760", - "project_id": "mealient-debug", - "storage_bucket": "mealient-debug.appspot.com" - }, - "client": [ - { - "client_info": { - "mobilesdk_app_id": "1:31935207760:android:530fa33d3ce1d3728ab455", - "android_client_info": { - "package_name": "gq.kirmanak.mealient" - } - }, - "oauth_client": [ - { - "client_id": "31935207760-cb50pa0gepc1ge42bigrmhev2o6mv42p.apps.googleusercontent.com", - "client_type": 3 - } - ], - "api_key": [ - { - "current_key": "AIzaSyDWk5UIvCiYihBMCOYNbv71lB_DEbyXJn8" - } - ], - "services": { - "appinvite_service": { - "other_platform_oauth_client": [ - { - "client_id": "31935207760-cb50pa0gepc1ge42bigrmhev2o6mv42p.apps.googleusercontent.com", - "client_type": 3 - } - ] - } - } - } - ], - "configuration_version": "1" -} \ No newline at end of file From 79324278de0c65b986debe479afbbc84a082ce2a Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Sat, 5 Nov 2022 12:23:32 +0100 Subject: [PATCH 6/9] Add Analytics tests --- .../data/analytics/AnalyticsImplTest.kt | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 app/src/test/java/gq/kirmanak/mealient/data/analytics/AnalyticsImplTest.kt diff --git a/app/src/test/java/gq/kirmanak/mealient/data/analytics/AnalyticsImplTest.kt b/app/src/test/java/gq/kirmanak/mealient/data/analytics/AnalyticsImplTest.kt new file mode 100644 index 0000000..e37e5b0 --- /dev/null +++ b/app/src/test/java/gq/kirmanak/mealient/data/analytics/AnalyticsImplTest.kt @@ -0,0 +1,42 @@ +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 gq.kirmanak.mealient.test.FakeLogger +import io.mockk.MockKAnnotations +import io.mockk.impl.annotations.MockK +import io.mockk.verify +import org.junit.Before +import org.junit.Test + +class AnalyticsImplTest { + + @MockK(relaxUnitFun = true) + lateinit var firebaseAnalytics: FirebaseAnalytics + + @MockK(relaxUnitFun = true) + lateinit var firebaseCrashlytics: FirebaseCrashlytics + + lateinit var subject: Analytics + + private val logger: Logger = FakeLogger() + + @Before + fun setUp() { + MockKAnnotations.init(this) + subject = AnalyticsImpl(firebaseAnalytics, firebaseCrashlytics, logger) + } + + @Test + fun `when setIsEnabled expect call to analytics`() { + subject.setIsEnabled(true) + verify { firebaseAnalytics.setAnalyticsCollectionEnabled(eq(true)) } + } + + @Test + fun `when setIsEnabled expect call to crashlytics`() { + subject.setIsEnabled(true) + verify { firebaseCrashlytics.setCrashlyticsCollectionEnabled(eq(true)) } + } +} \ No newline at end of file From 4eb119725a75eaae8ef8f2e6b194fd421029970d Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Sat, 5 Nov 2022 12:32:13 +0100 Subject: [PATCH 7/9] Remove obsolete log tag length check --- .../gq/kirmanak/mealient/logging/LogcatAppender.kt | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LogcatAppender.kt b/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LogcatAppender.kt index 638e1d3..f7a25f7 100644 --- a/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LogcatAppender.kt +++ b/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LogcatAppender.kt @@ -1,6 +1,5 @@ package gq.kirmanak.mealient.logging -import android.os.Build import android.util.Log import javax.inject.Inject import javax.inject.Singleton @@ -15,15 +14,8 @@ class LogcatAppender @Inject constructor() : Appender { override fun isLoggable(logLevel: LogLevel, tag: String): Boolean = isLoggable override fun log(logLevel: LogLevel, tag: String, message: String) { - // Tag length limit was removed in API 26. - val logTag = if (tag.length <= MAX_TAG_LENGTH || Build.VERSION.SDK_INT >= 26) { - tag - } else { - tag.substring(0, MAX_TAG_LENGTH) - } - if (message.length < MAX_LOG_LENGTH) { - Log.println(logLevel.priority, logTag, message) + Log.println(logLevel.priority, tag, message) return } @@ -36,7 +28,7 @@ class LogcatAppender @Inject constructor() : Appender { do { val end = newline.coerceAtMost(i + MAX_LOG_LENGTH) val part = message.substring(i, end) - Log.println(logLevel.priority, logTag, part) + Log.println(logLevel.priority, tag, part) i = end } while (i < newline) i++ @@ -45,7 +37,6 @@ class LogcatAppender @Inject constructor() : Appender { companion object { private const val MAX_LOG_LENGTH = 4000 - private const val MAX_TAG_LENGTH = 23 } } From bbc368ce6937860ddd843dd0d75aa74d49e0cf0b Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Sat, 5 Nov 2022 12:42:26 +0100 Subject: [PATCH 8/9] Reuse build configuration for logger --- app/build.gradle.kts | 1 + app/src/main/java/gq/kirmanak/mealient/App.kt | 2 +- .../configuration/BuildConfigurationImpl.kt | 11 ----------- .../java/gq/kirmanak/mealient/di/AppModule.kt | 6 ------ architecture/build.gradle.kts | 14 ++++++++++++++ .../architecture/ArchitectureModule.kt | 18 ++++++++++++++++++ .../configuration/BuildConfiguration.kt | 3 ++- .../configuration/BuildConfigurationImpl.kt | 14 ++++++++++++++ logging/build.gradle.kts | 2 ++ .../mealient/logging/LogcatAppender.kt | 8 ++++++-- settings.gradle.kts | 1 + 11 files changed, 59 insertions(+), 21 deletions(-) delete mode 100644 app/src/main/java/gq/kirmanak/mealient/data/configuration/BuildConfigurationImpl.kt create mode 100644 architecture/build.gradle.kts create mode 100644 architecture/src/main/kotlin/gq/kirmanak/mealient/architecture/ArchitectureModule.kt rename {app/src/main/java/gq/kirmanak/mealient/data => architecture/src/main/kotlin/gq/kirmanak/mealient/architecture}/configuration/BuildConfiguration.kt (51%) create mode 100644 architecture/src/main/kotlin/gq/kirmanak/mealient/architecture/configuration/BuildConfigurationImpl.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ccca534..02baf45 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -65,6 +65,7 @@ android { dependencies { + implementation(project(":architecture")) implementation(project(":database")) implementation(project(":datastore")) implementation(project(":datasource")) diff --git a/app/src/main/java/gq/kirmanak/mealient/App.kt b/app/src/main/java/gq/kirmanak/mealient/App.kt index 0d8dfde..24332c9 100644 --- a/app/src/main/java/gq/kirmanak/mealient/App.kt +++ b/app/src/main/java/gq/kirmanak/mealient/App.kt @@ -2,8 +2,8 @@ package gq.kirmanak.mealient import android.app.Application import dagger.hilt.android.HiltAndroidApp +import gq.kirmanak.mealient.architecture.configuration.BuildConfiguration import gq.kirmanak.mealient.data.analytics.Analytics -import gq.kirmanak.mealient.data.configuration.BuildConfiguration import gq.kirmanak.mealient.logging.Logger import javax.inject.Inject 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 deleted file mode 100644 index a260ae4..0000000 --- a/app/src/main/java/gq/kirmanak/mealient/data/configuration/BuildConfigurationImpl.kt +++ /dev/null @@ -1,11 +0,0 @@ -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 88a0b25..aef7ee1 100644 --- a/app/src/main/java/gq/kirmanak/mealient/di/AppModule.kt +++ b/app/src/main/java/gq/kirmanak/mealient/di/AppModule.kt @@ -15,8 +15,6 @@ 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 @@ -46,10 +44,6 @@ interface AppModule { @Singleton fun bindPreferencesStorage(preferencesStorage: PreferencesStorageImpl): PreferencesStorage - @Binds - @Singleton - fun bindBuildConfiguration(buildConfigurationImpl: BuildConfigurationImpl): BuildConfiguration - @Binds @Singleton fun bindAnalytics(analyticsImpl: AnalyticsImpl): Analytics diff --git a/architecture/build.gradle.kts b/architecture/build.gradle.kts new file mode 100644 index 0000000..011e9ed --- /dev/null +++ b/architecture/build.gradle.kts @@ -0,0 +1,14 @@ +plugins { + id("gq.kirmanak.mealient.library") + id("dagger.hilt.android.plugin") + id("kotlin-kapt") +} + +android { + namespace = "gq.kirmanak.mealient.architecture" +} + +dependencies { + implementation(libs.google.dagger.hiltAndroid) + kapt(libs.google.dagger.hiltCompiler) +} \ No newline at end of file diff --git a/architecture/src/main/kotlin/gq/kirmanak/mealient/architecture/ArchitectureModule.kt b/architecture/src/main/kotlin/gq/kirmanak/mealient/architecture/ArchitectureModule.kt new file mode 100644 index 0000000..59a979e --- /dev/null +++ b/architecture/src/main/kotlin/gq/kirmanak/mealient/architecture/ArchitectureModule.kt @@ -0,0 +1,18 @@ +package gq.kirmanak.mealient.architecture + +import dagger.Binds +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import gq.kirmanak.mealient.architecture.configuration.BuildConfiguration +import gq.kirmanak.mealient.architecture.configuration.BuildConfigurationImpl +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +interface ArchitectureModule { + + @Binds + @Singleton + fun bindBuildConfiguration(buildConfigurationImpl: BuildConfigurationImpl): BuildConfiguration +} \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/data/configuration/BuildConfiguration.kt b/architecture/src/main/kotlin/gq/kirmanak/mealient/architecture/configuration/BuildConfiguration.kt similarity index 51% rename from app/src/main/java/gq/kirmanak/mealient/data/configuration/BuildConfiguration.kt rename to architecture/src/main/kotlin/gq/kirmanak/mealient/architecture/configuration/BuildConfiguration.kt index 8aeb61c..e076468 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/configuration/BuildConfiguration.kt +++ b/architecture/src/main/kotlin/gq/kirmanak/mealient/architecture/configuration/BuildConfiguration.kt @@ -1,5 +1,6 @@ -package gq.kirmanak.mealient.data.configuration +package gq.kirmanak.mealient.architecture.configuration interface BuildConfiguration { + fun isDebug(): Boolean } \ No newline at end of file diff --git a/architecture/src/main/kotlin/gq/kirmanak/mealient/architecture/configuration/BuildConfigurationImpl.kt b/architecture/src/main/kotlin/gq/kirmanak/mealient/architecture/configuration/BuildConfigurationImpl.kt new file mode 100644 index 0000000..378b1a8 --- /dev/null +++ b/architecture/src/main/kotlin/gq/kirmanak/mealient/architecture/configuration/BuildConfigurationImpl.kt @@ -0,0 +1,14 @@ +package gq.kirmanak.mealient.architecture.configuration + +import androidx.viewbinding.BuildConfig +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class BuildConfigurationImpl @Inject constructor() : BuildConfiguration { + + @get:JvmName("_isDebug") + private val isDebug by lazy { BuildConfig.DEBUG } + + override fun isDebug(): Boolean = isDebug +} \ No newline at end of file diff --git a/logging/build.gradle.kts b/logging/build.gradle.kts index 518b450..efd2aee 100644 --- a/logging/build.gradle.kts +++ b/logging/build.gradle.kts @@ -9,6 +9,8 @@ android { } dependencies { + implementation(project(":architecture")) + implementation(libs.google.dagger.hiltAndroid) kapt(libs.google.dagger.hiltCompiler) } \ No newline at end of file diff --git a/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LogcatAppender.kt b/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LogcatAppender.kt index f7a25f7..e916fcf 100644 --- a/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LogcatAppender.kt +++ b/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LogcatAppender.kt @@ -1,13 +1,17 @@ package gq.kirmanak.mealient.logging import android.util.Log +import gq.kirmanak.mealient.architecture.configuration.BuildConfiguration import javax.inject.Inject import javax.inject.Singleton @Singleton -class LogcatAppender @Inject constructor() : Appender { +class LogcatAppender @Inject constructor( + private val buildConfiguration: BuildConfiguration, +) : Appender { - private val isLoggable: Boolean by lazy { BuildConfig.DEBUG } + private val isLoggable: Boolean + get() = buildConfiguration.isDebug() override fun isLoggable(logLevel: LogLevel): Boolean = isLoggable diff --git a/settings.gradle.kts b/settings.gradle.kts index 3c9d35e..a5dfdaf 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -20,6 +20,7 @@ dependencyResolutionManagement { rootProject.name = "Mealient" include(":app") +include(":architecture") include(":database") include(":datastore") include(":logging") From 12ec1540f54fe220920a7006470628d8dca4bc5c Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Sat, 5 Nov 2022 12:49:18 +0100 Subject: [PATCH 9/9] Ignore build dir in architecture module --- architecture/.gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 architecture/.gitignore diff --git a/architecture/.gitignore b/architecture/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/architecture/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file