diff --git a/androidApp/dependencies/demoDebugRuntimeClasspath.txt b/androidApp/dependencies/demoDebugRuntimeClasspath.txt index 2974c8097..b6e6f4a16 100644 --- a/androidApp/dependencies/demoDebugRuntimeClasspath.txt +++ b/androidApp/dependencies/demoDebugRuntimeClasspath.txt @@ -186,6 +186,9 @@ dev.chrisbanes.snapper:snapper:0.2.2 io.github.mr0xf00:easycrop:0.1.1 io.insert-koin:koin-android:4.0.1-RC1 io.insert-koin:koin-androidx-compose:4.0.1-RC1 +io.insert-koin:koin-annotations-jvm:1.4.0-RC4 +io.insert-koin:koin-annotations:1.4.0-RC4 +io.insert-koin:koin-bom:4.0.1-RC1 io.insert-koin:koin-compose-jvm:4.0.1-RC1 io.insert-koin:koin-compose-viewmodel-jvm:4.0.1-RC1 io.insert-koin:koin-compose-viewmodel:4.0.1-RC1 @@ -212,8 +215,8 @@ org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.3 org.jetbrains.androidx.savedstate:savedstate:1.2.2 org.jetbrains.compose.animation:animation-core:1.7.0-rc01 org.jetbrains.compose.animation:animation:1.7.0-rc01 -org.jetbrains.compose.annotation-internal:annotation:1.7.0-rc01 -org.jetbrains.compose.collection-internal:collection:1.7.0-rc01 +org.jetbrains.compose.annotation-internal:annotation:1.7.3 +org.jetbrains.compose.collection-internal:collection:1.7.3 org.jetbrains.compose.foundation:foundation-layout:1.7.0-rc01 org.jetbrains.compose.foundation:foundation:1.7.0-rc01 org.jetbrains.compose.material3:material3:1.7.0-rc01 @@ -221,7 +224,7 @@ org.jetbrains.compose.material:material-icons-core:1.7.0-rc01 org.jetbrains.compose.material:material-ripple:1.7.0-rc01 org.jetbrains.compose.material:material:1.7.0-rc01 org.jetbrains.compose.runtime:runtime-saveable:1.7.0-rc01 -org.jetbrains.compose.runtime:runtime:1.7.0-rc01 +org.jetbrains.compose.runtime:runtime:1.7.3 org.jetbrains.compose.ui:ui-geometry:1.7.0-rc01 org.jetbrains.compose.ui:ui-graphics:1.7.0-rc01 org.jetbrains.compose.ui:ui-text:1.7.0-rc01 diff --git a/androidApp/dependencies/demoReleaseRuntimeClasspath.txt b/androidApp/dependencies/demoReleaseRuntimeClasspath.txt index 8aaa3f464..a2d888fbb 100644 --- a/androidApp/dependencies/demoReleaseRuntimeClasspath.txt +++ b/androidApp/dependencies/demoReleaseRuntimeClasspath.txt @@ -181,6 +181,9 @@ dev.chrisbanes.snapper:snapper:0.2.2 io.github.mr0xf00:easycrop:0.1.1 io.insert-koin:koin-android:4.0.1-RC1 io.insert-koin:koin-androidx-compose:4.0.1-RC1 +io.insert-koin:koin-annotations-jvm:1.4.0-RC4 +io.insert-koin:koin-annotations:1.4.0-RC4 +io.insert-koin:koin-bom:4.0.1-RC1 io.insert-koin:koin-compose-jvm:4.0.1-RC1 io.insert-koin:koin-compose-viewmodel-jvm:4.0.1-RC1 io.insert-koin:koin-compose-viewmodel:4.0.1-RC1 @@ -207,8 +210,8 @@ org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.3 org.jetbrains.androidx.savedstate:savedstate:1.2.2 org.jetbrains.compose.animation:animation-core:1.7.0-rc01 org.jetbrains.compose.animation:animation:1.7.0-rc01 -org.jetbrains.compose.annotation-internal:annotation:1.7.0-rc01 -org.jetbrains.compose.collection-internal:collection:1.7.0-rc01 +org.jetbrains.compose.annotation-internal:annotation:1.7.3 +org.jetbrains.compose.collection-internal:collection:1.7.3 org.jetbrains.compose.foundation:foundation-layout:1.7.0-rc01 org.jetbrains.compose.foundation:foundation:1.7.0-rc01 org.jetbrains.compose.material3:material3:1.7.0-rc01 @@ -216,7 +219,7 @@ org.jetbrains.compose.material:material-icons-core:1.7.0-rc01 org.jetbrains.compose.material:material-ripple:1.7.0-rc01 org.jetbrains.compose.material:material:1.7.0-rc01 org.jetbrains.compose.runtime:runtime-saveable:1.7.0-rc01 -org.jetbrains.compose.runtime:runtime:1.7.0-rc01 +org.jetbrains.compose.runtime:runtime:1.7.3 org.jetbrains.compose.ui:ui-geometry:1.7.0-rc01 org.jetbrains.compose.ui:ui-graphics:1.7.0-rc01 org.jetbrains.compose.ui:ui-text:1.7.0-rc01 diff --git a/androidApp/dependencies/prodDebugRuntimeClasspath.txt b/androidApp/dependencies/prodDebugRuntimeClasspath.txt index 2974c8097..b6e6f4a16 100644 --- a/androidApp/dependencies/prodDebugRuntimeClasspath.txt +++ b/androidApp/dependencies/prodDebugRuntimeClasspath.txt @@ -186,6 +186,9 @@ dev.chrisbanes.snapper:snapper:0.2.2 io.github.mr0xf00:easycrop:0.1.1 io.insert-koin:koin-android:4.0.1-RC1 io.insert-koin:koin-androidx-compose:4.0.1-RC1 +io.insert-koin:koin-annotations-jvm:1.4.0-RC4 +io.insert-koin:koin-annotations:1.4.0-RC4 +io.insert-koin:koin-bom:4.0.1-RC1 io.insert-koin:koin-compose-jvm:4.0.1-RC1 io.insert-koin:koin-compose-viewmodel-jvm:4.0.1-RC1 io.insert-koin:koin-compose-viewmodel:4.0.1-RC1 @@ -212,8 +215,8 @@ org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.3 org.jetbrains.androidx.savedstate:savedstate:1.2.2 org.jetbrains.compose.animation:animation-core:1.7.0-rc01 org.jetbrains.compose.animation:animation:1.7.0-rc01 -org.jetbrains.compose.annotation-internal:annotation:1.7.0-rc01 -org.jetbrains.compose.collection-internal:collection:1.7.0-rc01 +org.jetbrains.compose.annotation-internal:annotation:1.7.3 +org.jetbrains.compose.collection-internal:collection:1.7.3 org.jetbrains.compose.foundation:foundation-layout:1.7.0-rc01 org.jetbrains.compose.foundation:foundation:1.7.0-rc01 org.jetbrains.compose.material3:material3:1.7.0-rc01 @@ -221,7 +224,7 @@ org.jetbrains.compose.material:material-icons-core:1.7.0-rc01 org.jetbrains.compose.material:material-ripple:1.7.0-rc01 org.jetbrains.compose.material:material:1.7.0-rc01 org.jetbrains.compose.runtime:runtime-saveable:1.7.0-rc01 -org.jetbrains.compose.runtime:runtime:1.7.0-rc01 +org.jetbrains.compose.runtime:runtime:1.7.3 org.jetbrains.compose.ui:ui-geometry:1.7.0-rc01 org.jetbrains.compose.ui:ui-graphics:1.7.0-rc01 org.jetbrains.compose.ui:ui-text:1.7.0-rc01 diff --git a/androidApp/dependencies/prodReleaseRuntimeClasspath.txt b/androidApp/dependencies/prodReleaseRuntimeClasspath.txt index 8aaa3f464..a2d888fbb 100644 --- a/androidApp/dependencies/prodReleaseRuntimeClasspath.txt +++ b/androidApp/dependencies/prodReleaseRuntimeClasspath.txt @@ -181,6 +181,9 @@ dev.chrisbanes.snapper:snapper:0.2.2 io.github.mr0xf00:easycrop:0.1.1 io.insert-koin:koin-android:4.0.1-RC1 io.insert-koin:koin-androidx-compose:4.0.1-RC1 +io.insert-koin:koin-annotations-jvm:1.4.0-RC4 +io.insert-koin:koin-annotations:1.4.0-RC4 +io.insert-koin:koin-bom:4.0.1-RC1 io.insert-koin:koin-compose-jvm:4.0.1-RC1 io.insert-koin:koin-compose-viewmodel-jvm:4.0.1-RC1 io.insert-koin:koin-compose-viewmodel:4.0.1-RC1 @@ -207,8 +210,8 @@ org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.3 org.jetbrains.androidx.savedstate:savedstate:1.2.2 org.jetbrains.compose.animation:animation-core:1.7.0-rc01 org.jetbrains.compose.animation:animation:1.7.0-rc01 -org.jetbrains.compose.annotation-internal:annotation:1.7.0-rc01 -org.jetbrains.compose.collection-internal:collection:1.7.0-rc01 +org.jetbrains.compose.annotation-internal:annotation:1.7.3 +org.jetbrains.compose.collection-internal:collection:1.7.3 org.jetbrains.compose.foundation:foundation-layout:1.7.0-rc01 org.jetbrains.compose.foundation:foundation:1.7.0-rc01 org.jetbrains.compose.material3:material3:1.7.0-rc01 @@ -216,7 +219,7 @@ org.jetbrains.compose.material:material-icons-core:1.7.0-rc01 org.jetbrains.compose.material:material-ripple:1.7.0-rc01 org.jetbrains.compose.material:material:1.7.0-rc01 org.jetbrains.compose.runtime:runtime-saveable:1.7.0-rc01 -org.jetbrains.compose.runtime:runtime:1.7.0-rc01 +org.jetbrains.compose.runtime:runtime:1.7.3 org.jetbrains.compose.ui:ui-geometry:1.7.0-rc01 org.jetbrains.compose.ui:ui-graphics:1.7.0-rc01 org.jetbrains.compose.ui:ui-text:1.7.0-rc01 diff --git a/build-logic/convention/src/main/kotlin/org/mifos/mobile/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/org/mifos/mobile/KotlinAndroid.kt index 4811da865..3bf466707 100644 --- a/build-logic/convention/src/main/kotlin/org/mifos/mobile/KotlinAndroid.kt +++ b/build-logic/convention/src/main/kotlin/org/mifos/mobile/KotlinAndroid.kt @@ -8,10 +8,9 @@ import org.gradle.kotlin.dsl.assign import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.provideDelegate +import org.gradle.kotlin.dsl.withType import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension -import org.jetbrains.kotlin.gradle.dsl.KotlinBaseExtension -import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile /** * Configure base Kotlin with Android options @@ -35,7 +34,7 @@ internal fun Project.configureKotlinAndroid( } } - configureKotlin() + configureKotlin() dependencies { add("coreLibraryDesugaring", libs.findLibrary("android.desugarJdkLibs").get()) @@ -53,30 +52,26 @@ internal fun Project.configureKotlinJvm() { targetCompatibility = JavaVersion.VERSION_17 } - configureKotlin() + configureKotlin() } /** * Configure base Kotlin options */ -private inline fun Project.configureKotlin() = configure { - // Treat all Kotlin warnings as errors (disabled by default) - // Override by setting warningsAsErrors=true in your ~/.gradle/gradle.properties - val warningsAsErrors: String? by project - when (this) { - is KotlinAndroidProjectExtension -> compilerOptions - is KotlinJvmProjectExtension -> compilerOptions - else -> TODO("Unsupported project extension $this ${T::class}") - }.apply { - jvmTarget = JvmTarget.JVM_17 - allWarningsAsErrors = warningsAsErrors.toBoolean() - freeCompilerArgs.add( - // Enable experimental coroutines APIs, including Flow - "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", - ) - freeCompilerArgs.add( - "-opt-in=androidx.compose.material3.ExperimentalMaterial3Api", - ) +private fun Project.configureKotlin() { + // Use withType to workaround https://youtrack.jetbrains.com/issue/KT-55947 + tasks.withType().configureEach { + compilerOptions { + // Set JVM target to 17 + jvmTarget = JvmTarget.JVM_17 + // Treat all Kotlin warnings as errors (disabled by default) + // Override by setting warningsAsErrors=true in your ~/.gradle/gradle.properties + val warningsAsErrors: String? by project + allWarningsAsErrors = warningsAsErrors.toBoolean() + freeCompilerArgs.add( + // Enable experimental coroutines APIs, including Flow + "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", + ) + } } -} - +} \ No newline at end of file diff --git a/core/logs/build.gradle.kts b/core/logs/build.gradle.kts index 56154cc60..524e25d32 100644 --- a/core/logs/build.gradle.kts +++ b/core/logs/build.gradle.kts @@ -8,23 +8,24 @@ * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifos.android.library) - alias(libs.plugins.mifos.android.library.compose) - alias(libs.plugins.mifos.android.hilt) + alias(libs.plugins.mifos.kmp.library) + alias(libs.plugins.jetbrainsCompose) + alias(libs.plugins.compose.compiler) + } android { namespace = "org.mifos.mobile.core.logs" } - -dependencies { - implementation(libs.androidx.compose.runtime) - - implementation(platform(libs.firebase.bom)) - implementation(libs.firebase.analytics) - - testImplementation(libs.junit) - androidTestImplementation(libs.androidx.test.ext.junit) - androidTestImplementation(libs.androidx.test.espresso.core) +kotlin { + sourceSets { + commonMain.dependencies { + implementation(libs.jb.composeRuntime) + } + androidMain.dependencies { + implementation(project.dependencies.platform(libs.firebase.bom)) + implementation(libs.firebase.analytics) + } + } } \ No newline at end of file diff --git a/core/logs/src/main/AndroidManifest.xml b/core/logs/src/androidMain/kotlin/AndroidManifest.xml similarity index 100% rename from core/logs/src/main/AndroidManifest.xml rename to core/logs/src/androidMain/kotlin/AndroidManifest.xml diff --git a/core/logs/src/main/java/org/mifos/mobile/core/logs/AnalyticsEvent.kt b/core/logs/src/androidMain/kotlin/org/mifos/mobile/core/logs/AnalyticsEvent.kt similarity index 100% rename from core/logs/src/main/java/org/mifos/mobile/core/logs/AnalyticsEvent.kt rename to core/logs/src/androidMain/kotlin/org/mifos/mobile/core/logs/AnalyticsEvent.kt diff --git a/core/logs/src/main/java/org/mifos/mobile/core/logs/AnalyticsHelper.kt b/core/logs/src/androidMain/kotlin/org/mifos/mobile/core/logs/AnalyticsHelper.kt similarity index 100% rename from core/logs/src/main/java/org/mifos/mobile/core/logs/AnalyticsHelper.kt rename to core/logs/src/androidMain/kotlin/org/mifos/mobile/core/logs/AnalyticsHelper.kt diff --git a/core/logs/src/androidMain/kotlin/org/mifos/mobile/core/logs/di/AnalyticsModule.kt b/core/logs/src/androidMain/kotlin/org/mifos/mobile/core/logs/di/AnalyticsModule.kt new file mode 100644 index 000000000..08e744a3b --- /dev/null +++ b/core/logs/src/androidMain/kotlin/org/mifos/mobile/core/logs/di/AnalyticsModule.kt @@ -0,0 +1,25 @@ +/* + * Copyright 2024 Mifos Initiative + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md + */ +package org.mifos.mobile.core.logs.di + +import com.google.firebase.analytics.ktx.analytics +import com.google.firebase.ktx.Firebase +import org.koin.dsl.module +import org.mifos.mobile.core.logs.AnalyticsHelper + +val AnalyticsModule = module { + + single { + Firebase.analytics + } + single { + FirebaseAnalyticsHelper(firebaseAnalytics = get()) + } +} diff --git a/core/logs/src/main/java/org/mifos/mobile/core/logs/di/FirebaseAnalyticsHelper.kt b/core/logs/src/androidMain/kotlin/org/mifos/mobile/core/logs/di/FirebaseAnalyticsHelper.kt similarity index 92% rename from core/logs/src/main/java/org/mifos/mobile/core/logs/di/FirebaseAnalyticsHelper.kt rename to core/logs/src/androidMain/kotlin/org/mifos/mobile/core/logs/di/FirebaseAnalyticsHelper.kt index f038eed63..2d63c0201 100644 --- a/core/logs/src/main/java/org/mifos/mobile/core/logs/di/FirebaseAnalyticsHelper.kt +++ b/core/logs/src/androidMain/kotlin/org/mifos/mobile/core/logs/di/FirebaseAnalyticsHelper.kt @@ -13,12 +13,11 @@ import com.google.firebase.analytics.FirebaseAnalytics import com.google.firebase.analytics.logEvent import org.mifos.mobile.core.logs.AnalyticsEvent import org.mifos.mobile.core.logs.AnalyticsHelper -import javax.inject.Inject /** * Implementation of `AnalyticsHelper` which logs events to a Firebase backend. */ -internal class FirebaseAnalyticsHelper @Inject constructor( +internal class FirebaseAnalyticsHelper( private val firebaseAnalytics: FirebaseAnalytics, ) : AnalyticsHelper { override fun logEvent(event: AnalyticsEvent) { diff --git a/core/logs/src/main/java/org/mifos/mobile/core/logs/di/AnalyticsModule.kt b/core/logs/src/main/java/org/mifos/mobile/core/logs/di/AnalyticsModule.kt deleted file mode 100644 index 100cae27f..000000000 --- a/core/logs/src/main/java/org/mifos/mobile/core/logs/di/AnalyticsModule.kt +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2024 Mifos Initiative - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at https://mozilla.org/MPL/2.0/. - * - * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md - */ -package org.mifos.mobile.core.logs.di - -import com.google.firebase.analytics.FirebaseAnalytics -import com.google.firebase.analytics.ktx.analytics -import com.google.firebase.ktx.Firebase -import dagger.Binds -import dagger.Module -import dagger.Provides -import dagger.hilt.InstallIn -import dagger.hilt.components.SingletonComponent -import org.mifos.mobile.core.logs.AnalyticsHelper -import javax.inject.Singleton - -@Module -@InstallIn(SingletonComponent::class) -internal abstract class AnalyticsModule { - @Binds - abstract fun bindsAnalyticsHelper(analyticsHelperImpl: FirebaseAnalyticsHelper): AnalyticsHelper - - companion object { - @Provides - @Singleton - fun provideFirebaseAnalytics(): FirebaseAnalytics { - return Firebase.analytics - } - } -} diff --git a/core/testing/build.gradle.kts b/core/testing/build.gradle.kts index 9dc5d5eaf..01d7a07c0 100644 --- a/core/testing/build.gradle.kts +++ b/core/testing/build.gradle.kts @@ -21,7 +21,7 @@ dependencies { api(libs.bundles.androidx.compose.ui.test) api(libs.kotlinx.coroutines.test) api(projects.core.data) - api(projects.core.logs) +// api(projects.core.logs) api(projects.core.model) api(libs.turbine) api(libs.mockito.core)