diff --git a/.run/cmp-ios.run.xml b/.run/cmp-ios.run.xml new file mode 100644 index 000000000..3cfa69a51 --- /dev/null +++ b/.run/cmp-ios.run.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt b/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt index 3ddfd7b9e..ce47af4bf 100644 --- a/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt @@ -24,6 +24,7 @@ class CMPFeatureConventionPlugin : Plugin { add("commonMainImplementation", libs.findLibrary("koin.compose.viewmodel").get()) add("commonMainImplementation", libs.findLibrary("jb.composeRuntime").get()) + add("commonMainImplementation", libs.findLibrary("jb.lifecycle.compose").get()) add("commonMainImplementation", libs.findLibrary("jb.composeViewmodel").get()) add("commonMainImplementation", libs.findLibrary("jb.lifecycleViewmodel").get()) add("commonMainImplementation", libs.findLibrary("jb.lifecycleViewmodelSavedState").get()) diff --git a/build.gradle.kts b/build.gradle.kts index ff96dd548..a34b3aeb4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,6 +8,7 @@ buildscript { } plugins { + alias(libs.plugins.kotlinCocoapods) apply false alias(libs.plugins.android.application) apply false alias(libs.plugins.android.library) apply false alias(libs.plugins.android.test) apply false diff --git a/cmp-android/dependencies/demoDebugRuntimeClasspath.txt b/cmp-android/dependencies/demoDebugRuntimeClasspath.txt index 97c622612..f9ee3fb08 100644 --- a/cmp-android/dependencies/demoDebugRuntimeClasspath.txt +++ b/cmp-android/dependencies/demoDebugRuntimeClasspath.txt @@ -17,61 +17,69 @@ androidx.camera:camera-view:1.4.1 androidx.collection:collection-jvm:1.5.0 androidx.collection:collection-ktx:1.5.0 androidx.collection:collection:1.5.0 -androidx.compose.animation:animation-android:1.8.2 -androidx.compose.animation:animation-core-android:1.8.2 -androidx.compose.animation:animation-core:1.8.2 -androidx.compose.animation:animation:1.8.2 -androidx.compose.foundation:foundation-android:1.8.2 -androidx.compose.foundation:foundation-layout-android:1.8.2 -androidx.compose.foundation:foundation-layout:1.8.2 -androidx.compose.foundation:foundation:1.8.2 +androidx.compose.animation:animation-android:1.8.3 +androidx.compose.animation:animation-core-android:1.8.3 +androidx.compose.animation:animation-core:1.8.3 +androidx.compose.animation:animation:1.8.3 +androidx.compose.foundation:foundation-android:1.8.3 +androidx.compose.foundation:foundation-layout-android:1.8.3 +androidx.compose.foundation:foundation-layout:1.8.3 +androidx.compose.foundation:foundation:1.8.3 +androidx.compose.material3.adaptive:adaptive-android:1.1.0 +androidx.compose.material3.adaptive:adaptive-layout-android:1.1.0 +androidx.compose.material3.adaptive:adaptive-layout:1.1.0 +androidx.compose.material3.adaptive:adaptive-navigation-android:1.1.0 +androidx.compose.material3.adaptive:adaptive-navigation:1.1.0 +androidx.compose.material3.adaptive:adaptive:1.1.0 +androidx.compose.material3:material3-adaptive-navigation-suite-android:1.3.2 +androidx.compose.material3:material3-adaptive-navigation-suite:1.3.2 androidx.compose.material3:material3-android:1.3.2 androidx.compose.material3:material3:1.3.2 -androidx.compose.material:material-android:1.8.2 -androidx.compose.material:material-icons-core-android:1.7.6 -androidx.compose.material:material-icons-core:1.7.6 -androidx.compose.material:material-icons-extended-android:1.7.6 -androidx.compose.material:material-icons-extended:1.7.6 -androidx.compose.material:material-ripple-android:1.8.2 -androidx.compose.material:material-ripple:1.8.2 -androidx.compose.material:material:1.8.2 -androidx.compose.runtime:runtime-android:1.8.2 -androidx.compose.runtime:runtime-saveable-android:1.8.2 -androidx.compose.runtime:runtime-saveable:1.8.2 -androidx.compose.runtime:runtime:1.8.2 -androidx.compose.ui:ui-android:1.8.2 -androidx.compose.ui:ui-geometry-android:1.8.2 -androidx.compose.ui:ui-geometry:1.8.2 -androidx.compose.ui:ui-graphics-android:1.8.2 -androidx.compose.ui:ui-graphics:1.8.2 -androidx.compose.ui:ui-text-android:1.8.2 -androidx.compose.ui:ui-text:1.8.2 -androidx.compose.ui:ui-tooling-android:1.8.2 -androidx.compose.ui:ui-tooling-data-android:1.8.2 -androidx.compose.ui:ui-tooling-data:1.8.2 -androidx.compose.ui:ui-tooling-preview-android:1.8.2 -androidx.compose.ui:ui-tooling-preview:1.8.2 -androidx.compose.ui:ui-tooling:1.8.2 -androidx.compose.ui:ui-unit-android:1.8.2 -androidx.compose.ui:ui-unit:1.8.2 -androidx.compose.ui:ui-util-android:1.8.2 -androidx.compose.ui:ui-util:1.8.2 -androidx.compose.ui:ui:1.8.2 -androidx.compose:compose-bom:2024.12.01 +androidx.compose.material:material-android:1.8.3 +androidx.compose.material:material-icons-core-android:1.7.8 +androidx.compose.material:material-icons-core:1.7.8 +androidx.compose.material:material-icons-extended-android:1.7.8 +androidx.compose.material:material-icons-extended:1.7.8 +androidx.compose.material:material-ripple-android:1.8.3 +androidx.compose.material:material-ripple:1.8.3 +androidx.compose.material:material:1.8.3 +androidx.compose.runtime:runtime-android:1.8.3 +androidx.compose.runtime:runtime-saveable-android:1.8.3 +androidx.compose.runtime:runtime-saveable:1.8.3 +androidx.compose.runtime:runtime:1.8.3 +androidx.compose.ui:ui-android:1.8.3 +androidx.compose.ui:ui-geometry-android:1.8.3 +androidx.compose.ui:ui-geometry:1.8.3 +androidx.compose.ui:ui-graphics-android:1.8.3 +androidx.compose.ui:ui-graphics:1.8.3 +androidx.compose.ui:ui-text-android:1.8.3 +androidx.compose.ui:ui-text:1.8.3 +androidx.compose.ui:ui-tooling-android:1.8.3 +androidx.compose.ui:ui-tooling-data-android:1.8.3 +androidx.compose.ui:ui-tooling-data:1.8.3 +androidx.compose.ui:ui-tooling-preview-android:1.8.3 +androidx.compose.ui:ui-tooling-preview:1.8.3 +androidx.compose.ui:ui-tooling:1.8.3 +androidx.compose.ui:ui-unit-android:1.8.3 +androidx.compose.ui:ui-unit:1.8.3 +androidx.compose.ui:ui-util-android:1.8.3 +androidx.compose.ui:ui-util:1.8.3 +androidx.compose.ui:ui:1.8.3 +androidx.compose:compose-bom:2025.06.01 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 -androidx.core:core-ktx:1.15.0 +androidx.core:core-ktx:1.16.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 -androidx.core:core:1.15.0 +androidx.core:core:1.16.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 androidx.customview:customview:1.1.0 -androidx.databinding:databinding-adapters:8.7.3 -androidx.databinding:databinding-common:8.7.3 -androidx.databinding:databinding-ktx:8.7.3 -androidx.databinding:databinding-runtime:8.7.3 -androidx.databinding:viewbinding:8.7.3 +androidx.databinding:databinding-adapters:8.10.0 +androidx.databinding:databinding-common:8.10.0 +androidx.databinding:databinding-ktx:8.10.0 +androidx.databinding:databinding-runtime:8.10.0 +androidx.databinding:viewbinding:8.10.0 androidx.datastore:datastore-core:1.0.0 androidx.datastore:datastore-preferences-core:1.0.0 androidx.datastore:datastore-preferences:1.0.0 @@ -130,15 +138,18 @@ androidx.savedstate:savedstate-ktx:1.3.1 androidx.savedstate:savedstate:1.3.1 androidx.slidingpanelayout:slidingpanelayout:1.2.0 androidx.startup:startup-runtime:1.2.0 -androidx.tracing:tracing-ktx:1.2.0 -androidx.tracing:tracing:1.2.0 +androidx.tracing:tracing-android:1.3.0 +androidx.tracing:tracing-ktx:1.3.0 +androidx.tracing:tracing:1.3.0 androidx.transition:transition:1.4.1 androidx.vectordrawable:vectordrawable-animated:1.2.0 androidx.vectordrawable:vectordrawable:1.2.0 androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager:viewpager:1.0.0 androidx.window.extensions.core:core:1.0.0 -androidx.window:window:1.2.0 +androidx.window:window-core-android:1.3.0 +androidx.window:window-core:1.3.0 +androidx.window:window:1.3.0 co.touchlab:kermit-android-debug:2.0.6 co.touchlab:kermit-core-android-debug:2.0.6 co.touchlab:kermit-core:2.0.6 @@ -159,7 +170,8 @@ com.attafitamim.krop:ui-android:0.1.6 com.attafitamim.krop:ui:0.1.6 com.caverock:androidsvg-aar:1.4 com.google.accompanist:accompanist-drawablepainter:0.37.3 -com.google.accompanist:accompanist-permissions:0.37.3 +com.google.accompanist:accompanist-pager:0.36.0 +com.google.accompanist:accompanist-permissions:0.36.0 com.google.android.datatransport:transport-api:3.2.0 com.google.android.datatransport:transport-backend-cct:3.3.0 com.google.android.datatransport:transport-runtime:3.3.0 @@ -231,6 +243,7 @@ de.jensklingenberg.ktorfit:ktorfit-lib-light:2.5.2 de.jensklingenberg.ktorfit:ktorfit-lib:2.5.2 dev.chrisbanes.material3:material3-window-size-class-multiplatform-android:0.5.0 dev.chrisbanes.material3:material3-window-size-class-multiplatform:0.5.0 +dev.chrisbanes.snapper:snapper:0.2.2 io.coil-kt.coil3:coil-android:3.2.0 io.coil-kt.coil3:coil-compose-android:3.2.0 io.coil-kt.coil3:coil-compose-core-android:3.2.0 @@ -271,12 +284,14 @@ io.github.panpf.zoomimage:zoomimage-core-android:1.3.0 io.github.panpf.zoomimage:zoomimage-core-coil3-android:1.3.0 io.github.panpf.zoomimage:zoomimage-core-coil3:1.3.0 io.github.panpf.zoomimage:zoomimage-core:1.3.0 -io.github.vinceglb:filekit-core-android:0.10.0 -io.github.vinceglb:filekit-core:0.10.0 -io.github.vinceglb:filekit-dialogs-android:0.10.0 -io.github.vinceglb:filekit-dialogs-compose-android:0.10.0 -io.github.vinceglb:filekit-dialogs-compose:0.10.0 -io.github.vinceglb:filekit-dialogs:0.10.0 +io.github.vinceglb:filekit-compose-android:0.8.8 +io.github.vinceglb:filekit-compose:0.8.8 +io.github.vinceglb:filekit-core-android:0.10.0-beta04 +io.github.vinceglb:filekit-core:0.10.0-beta04 +io.github.vinceglb:filekit-dialogs-android:0.10.0-beta04 +io.github.vinceglb:filekit-dialogs-compose-android:0.10.0-beta04 +io.github.vinceglb:filekit-dialogs-compose:0.10.0-beta04 +io.github.vinceglb:filekit-dialogs:0.10.0-beta04 io.insert-koin:koin-android:4.1.0 io.insert-koin:koin-androidx-compose:4.1.0 io.insert-koin:koin-androidx-navigation:4.1.0 @@ -345,7 +360,8 @@ org.jetbrains.androidx.navigation:navigation-common:2.9.0-beta03 org.jetbrains.androidx.navigation:navigation-compose:2.9.0-beta03 org.jetbrains.androidx.navigation:navigation-runtime:2.9.0-beta03 org.jetbrains.androidx.savedstate:savedstate-compose:1.3.1 -org.jetbrains.androidx.savedstate:savedstate:1.3.3 +org.jetbrains.androidx.savedstate:savedstate:1.3.1 +org.jetbrains.androidx.window:window-core:1.3.1 org.jetbrains.compose.animation:animation-core:1.8.2 org.jetbrains.compose.animation:animation:1.8.2 org.jetbrains.compose.annotation-internal:annotation:1.8.2 @@ -356,6 +372,10 @@ org.jetbrains.compose.components:components-ui-tooling-preview-android:1.8.2 org.jetbrains.compose.components:components-ui-tooling-preview:1.8.2 org.jetbrains.compose.foundation:foundation-layout:1.8.2 org.jetbrains.compose.foundation:foundation:1.8.2 +org.jetbrains.compose.material3.adaptive:adaptive-layout:1.1.2 +org.jetbrains.compose.material3.adaptive:adaptive-navigation:1.1.2 +org.jetbrains.compose.material3.adaptive:adaptive:1.1.2 +org.jetbrains.compose.material3:material3-adaptive-navigation-suite:1.8.2 org.jetbrains.compose.material3:material3:1.8.2 org.jetbrains.compose.material:material-icons-core:1.7.3 org.jetbrains.compose.material:material-icons-extended:1.7.3 @@ -374,12 +394,12 @@ org.jetbrains.compose.ui:ui-tooling:1.8.2 org.jetbrains.compose.ui:ui-unit:1.8.2 org.jetbrains.compose.ui:ui-util:1.8.2 org.jetbrains.compose.ui:ui:1.8.2 -org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 -org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 -org.jetbrains.kotlin:kotlin-reflect:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.23 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20 -org.jetbrains.kotlin:kotlin-stdlib:2.2.0 +org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.20 +org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.20 +org.jetbrains.kotlin:kotlin-reflect:2.1.20 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0 +org.jetbrains.kotlin:kotlin-stdlib:2.1.21 org.jetbrains.kotlinx:atomicfu-jvm:0.23.2 org.jetbrains.kotlinx:atomicfu:0.23.2 org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8 @@ -390,19 +410,19 @@ org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.2 org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.2 org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.2 -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1-0.6.x-compat -org.jetbrains.kotlinx:kotlinx-datetime:0.7.1-0.6.x-compat -org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.8.0 -org.jetbrains.kotlinx:kotlinx-io-bytestring:0.8.0 -org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.8.0 -org.jetbrains.kotlinx:kotlinx-io-core:0.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 +org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1 +org.jetbrains.kotlinx:kotlinx-datetime:0.7.1 +org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.7.0 +org.jetbrains.kotlinx:kotlinx-io-bytestring:0.7.0 +org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.7.0 +org.jetbrains.kotlinx:kotlinx-io-core:0.7.0 +org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1 org.jetbrains:annotations:23.0.0 org.jspecify:jspecify:1.0.0 org.slf4j:slf4j-api:2.0.16 diff --git a/cmp-android/dependencies/demoReleaseRuntimeClasspath.txt b/cmp-android/dependencies/demoReleaseRuntimeClasspath.txt index 1266bed3d..836c3e7d8 100644 --- a/cmp-android/dependencies/demoReleaseRuntimeClasspath.txt +++ b/cmp-android/dependencies/demoReleaseRuntimeClasspath.txt @@ -17,61 +17,69 @@ androidx.camera:camera-view:1.4.1 androidx.collection:collection-jvm:1.5.0 androidx.collection:collection-ktx:1.5.0 androidx.collection:collection:1.5.0 -androidx.compose.animation:animation-android:1.8.2 -androidx.compose.animation:animation-core-android:1.8.2 -androidx.compose.animation:animation-core:1.8.2 -androidx.compose.animation:animation:1.8.2 -androidx.compose.foundation:foundation-android:1.8.2 -androidx.compose.foundation:foundation-layout-android:1.8.2 -androidx.compose.foundation:foundation-layout:1.8.2 -androidx.compose.foundation:foundation:1.8.2 +androidx.compose.animation:animation-android:1.8.3 +androidx.compose.animation:animation-core-android:1.8.3 +androidx.compose.animation:animation-core:1.8.3 +androidx.compose.animation:animation:1.8.3 +androidx.compose.foundation:foundation-android:1.8.3 +androidx.compose.foundation:foundation-layout-android:1.8.3 +androidx.compose.foundation:foundation-layout:1.8.3 +androidx.compose.foundation:foundation:1.8.3 +androidx.compose.material3.adaptive:adaptive-android:1.1.0 +androidx.compose.material3.adaptive:adaptive-layout-android:1.1.0 +androidx.compose.material3.adaptive:adaptive-layout:1.1.0 +androidx.compose.material3.adaptive:adaptive-navigation-android:1.1.0 +androidx.compose.material3.adaptive:adaptive-navigation:1.1.0 +androidx.compose.material3.adaptive:adaptive:1.1.0 +androidx.compose.material3:material3-adaptive-navigation-suite-android:1.3.2 +androidx.compose.material3:material3-adaptive-navigation-suite:1.3.2 androidx.compose.material3:material3-android:1.3.2 androidx.compose.material3:material3:1.3.2 -androidx.compose.material:material-android:1.8.2 -androidx.compose.material:material-icons-core-android:1.7.6 -androidx.compose.material:material-icons-core:1.7.6 -androidx.compose.material:material-icons-extended-android:1.7.6 -androidx.compose.material:material-icons-extended:1.7.6 -androidx.compose.material:material-ripple-android:1.8.2 -androidx.compose.material:material-ripple:1.8.2 -androidx.compose.material:material:1.8.2 -androidx.compose.runtime:runtime-android:1.8.2 -androidx.compose.runtime:runtime-saveable-android:1.8.2 -androidx.compose.runtime:runtime-saveable:1.8.2 -androidx.compose.runtime:runtime:1.8.2 -androidx.compose.ui:ui-android:1.8.2 -androidx.compose.ui:ui-geometry-android:1.8.2 -androidx.compose.ui:ui-geometry:1.8.2 -androidx.compose.ui:ui-graphics-android:1.8.2 -androidx.compose.ui:ui-graphics:1.8.2 -androidx.compose.ui:ui-text-android:1.8.2 -androidx.compose.ui:ui-text:1.8.2 -androidx.compose.ui:ui-tooling-android:1.8.2 -androidx.compose.ui:ui-tooling-data-android:1.8.2 -androidx.compose.ui:ui-tooling-data:1.8.2 -androidx.compose.ui:ui-tooling-preview-android:1.8.2 -androidx.compose.ui:ui-tooling-preview:1.8.2 -androidx.compose.ui:ui-tooling:1.8.2 -androidx.compose.ui:ui-unit-android:1.8.2 -androidx.compose.ui:ui-unit:1.8.2 -androidx.compose.ui:ui-util-android:1.8.2 -androidx.compose.ui:ui-util:1.8.2 -androidx.compose.ui:ui:1.8.2 -androidx.compose:compose-bom:2024.12.01 +androidx.compose.material:material-android:1.8.3 +androidx.compose.material:material-icons-core-android:1.7.8 +androidx.compose.material:material-icons-core:1.7.8 +androidx.compose.material:material-icons-extended-android:1.7.8 +androidx.compose.material:material-icons-extended:1.7.8 +androidx.compose.material:material-ripple-android:1.8.3 +androidx.compose.material:material-ripple:1.8.3 +androidx.compose.material:material:1.8.3 +androidx.compose.runtime:runtime-android:1.8.3 +androidx.compose.runtime:runtime-saveable-android:1.8.3 +androidx.compose.runtime:runtime-saveable:1.8.3 +androidx.compose.runtime:runtime:1.8.3 +androidx.compose.ui:ui-android:1.8.3 +androidx.compose.ui:ui-geometry-android:1.8.3 +androidx.compose.ui:ui-geometry:1.8.3 +androidx.compose.ui:ui-graphics-android:1.8.3 +androidx.compose.ui:ui-graphics:1.8.3 +androidx.compose.ui:ui-text-android:1.8.3 +androidx.compose.ui:ui-text:1.8.3 +androidx.compose.ui:ui-tooling-android:1.8.3 +androidx.compose.ui:ui-tooling-data-android:1.8.3 +androidx.compose.ui:ui-tooling-data:1.8.3 +androidx.compose.ui:ui-tooling-preview-android:1.8.3 +androidx.compose.ui:ui-tooling-preview:1.8.3 +androidx.compose.ui:ui-tooling:1.8.3 +androidx.compose.ui:ui-unit-android:1.8.3 +androidx.compose.ui:ui-unit:1.8.3 +androidx.compose.ui:ui-util-android:1.8.3 +androidx.compose.ui:ui-util:1.8.3 +androidx.compose.ui:ui:1.8.3 +androidx.compose:compose-bom:2025.06.01 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 -androidx.core:core-ktx:1.15.0 +androidx.core:core-ktx:1.16.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 -androidx.core:core:1.15.0 +androidx.core:core:1.16.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 androidx.customview:customview:1.1.0 -androidx.databinding:databinding-adapters:8.7.3 -androidx.databinding:databinding-common:8.7.3 -androidx.databinding:databinding-ktx:8.7.3 -androidx.databinding:databinding-runtime:8.7.3 -androidx.databinding:viewbinding:8.7.3 +androidx.databinding:databinding-adapters:8.10.0 +androidx.databinding:databinding-common:8.10.0 +androidx.databinding:databinding-ktx:8.10.0 +androidx.databinding:databinding-runtime:8.10.0 +androidx.databinding:viewbinding:8.10.0 androidx.datastore:datastore-core:1.0.0 androidx.datastore:datastore-preferences-core:1.0.0 androidx.datastore:datastore-preferences:1.0.0 @@ -130,15 +138,18 @@ androidx.savedstate:savedstate-ktx:1.3.1 androidx.savedstate:savedstate:1.3.1 androidx.slidingpanelayout:slidingpanelayout:1.2.0 androidx.startup:startup-runtime:1.2.0 -androidx.tracing:tracing-ktx:1.2.0 -androidx.tracing:tracing:1.2.0 +androidx.tracing:tracing-android:1.3.0 +androidx.tracing:tracing-ktx:1.3.0 +androidx.tracing:tracing:1.3.0 androidx.transition:transition:1.4.1 androidx.vectordrawable:vectordrawable-animated:1.2.0 androidx.vectordrawable:vectordrawable:1.2.0 androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager:viewpager:1.0.0 androidx.window.extensions.core:core:1.0.0 -androidx.window:window:1.2.0 +androidx.window:window-core-android:1.3.0 +androidx.window:window-core:1.3.0 +androidx.window:window:1.3.0 co.touchlab:kermit-android:2.0.6 co.touchlab:kermit-core-android:2.0.6 co.touchlab:kermit-core:2.0.6 @@ -159,7 +170,8 @@ com.attafitamim.krop:ui-android:0.1.6 com.attafitamim.krop:ui:0.1.6 com.caverock:androidsvg-aar:1.4 com.google.accompanist:accompanist-drawablepainter:0.37.3 -com.google.accompanist:accompanist-permissions:0.37.3 +com.google.accompanist:accompanist-pager:0.36.0 +com.google.accompanist:accompanist-permissions:0.36.0 com.google.android.datatransport:transport-api:3.2.0 com.google.android.datatransport:transport-backend-cct:3.3.0 com.google.android.datatransport:transport-runtime:3.3.0 @@ -231,6 +243,7 @@ de.jensklingenberg.ktorfit:ktorfit-lib-light:2.5.2 de.jensklingenberg.ktorfit:ktorfit-lib:2.5.2 dev.chrisbanes.material3:material3-window-size-class-multiplatform-android:0.5.0 dev.chrisbanes.material3:material3-window-size-class-multiplatform:0.5.0 +dev.chrisbanes.snapper:snapper:0.2.2 io.coil-kt.coil3:coil-android:3.2.0 io.coil-kt.coil3:coil-compose-android:3.2.0 io.coil-kt.coil3:coil-compose-core-android:3.2.0 @@ -271,12 +284,14 @@ io.github.panpf.zoomimage:zoomimage-core-android:1.3.0 io.github.panpf.zoomimage:zoomimage-core-coil3-android:1.3.0 io.github.panpf.zoomimage:zoomimage-core-coil3:1.3.0 io.github.panpf.zoomimage:zoomimage-core:1.3.0 -io.github.vinceglb:filekit-core-android:0.10.0 -io.github.vinceglb:filekit-core:0.10.0 -io.github.vinceglb:filekit-dialogs-android:0.10.0 -io.github.vinceglb:filekit-dialogs-compose-android:0.10.0 -io.github.vinceglb:filekit-dialogs-compose:0.10.0 -io.github.vinceglb:filekit-dialogs:0.10.0 +io.github.vinceglb:filekit-compose-android:0.8.8 +io.github.vinceglb:filekit-compose:0.8.8 +io.github.vinceglb:filekit-core-android:0.10.0-beta04 +io.github.vinceglb:filekit-core:0.10.0-beta04 +io.github.vinceglb:filekit-dialogs-android:0.10.0-beta04 +io.github.vinceglb:filekit-dialogs-compose-android:0.10.0-beta04 +io.github.vinceglb:filekit-dialogs-compose:0.10.0-beta04 +io.github.vinceglb:filekit-dialogs:0.10.0-beta04 io.insert-koin:koin-android:4.1.0 io.insert-koin:koin-androidx-compose:4.1.0 io.insert-koin:koin-androidx-navigation:4.1.0 @@ -345,7 +360,8 @@ org.jetbrains.androidx.navigation:navigation-common:2.9.0-beta03 org.jetbrains.androidx.navigation:navigation-compose:2.9.0-beta03 org.jetbrains.androidx.navigation:navigation-runtime:2.9.0-beta03 org.jetbrains.androidx.savedstate:savedstate-compose:1.3.1 -org.jetbrains.androidx.savedstate:savedstate:1.3.3 +org.jetbrains.androidx.savedstate:savedstate:1.3.1 +org.jetbrains.androidx.window:window-core:1.3.1 org.jetbrains.compose.animation:animation-core:1.8.2 org.jetbrains.compose.animation:animation:1.8.2 org.jetbrains.compose.annotation-internal:annotation:1.8.2 @@ -356,6 +372,10 @@ org.jetbrains.compose.components:components-ui-tooling-preview-android:1.8.2 org.jetbrains.compose.components:components-ui-tooling-preview:1.8.2 org.jetbrains.compose.foundation:foundation-layout:1.8.2 org.jetbrains.compose.foundation:foundation:1.8.2 +org.jetbrains.compose.material3.adaptive:adaptive-layout:1.1.2 +org.jetbrains.compose.material3.adaptive:adaptive-navigation:1.1.2 +org.jetbrains.compose.material3.adaptive:adaptive:1.1.2 +org.jetbrains.compose.material3:material3-adaptive-navigation-suite:1.8.2 org.jetbrains.compose.material3:material3:1.8.2 org.jetbrains.compose.material:material-icons-core:1.7.3 org.jetbrains.compose.material:material-icons-extended:1.7.3 @@ -371,12 +391,12 @@ org.jetbrains.compose.ui:ui-text:1.8.2 org.jetbrains.compose.ui:ui-unit:1.8.2 org.jetbrains.compose.ui:ui-util:1.8.2 org.jetbrains.compose.ui:ui:1.8.2 -org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 -org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 -org.jetbrains.kotlin:kotlin-reflect:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.23 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20 -org.jetbrains.kotlin:kotlin-stdlib:2.2.0 +org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.20 +org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.20 +org.jetbrains.kotlin:kotlin-reflect:2.1.20 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0 +org.jetbrains.kotlin:kotlin-stdlib:2.1.21 org.jetbrains.kotlinx:atomicfu-jvm:0.23.2 org.jetbrains.kotlinx:atomicfu:0.23.2 org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8 @@ -387,19 +407,19 @@ org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.2 org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.2 org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.2 -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1-0.6.x-compat -org.jetbrains.kotlinx:kotlinx-datetime:0.7.1-0.6.x-compat -org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.8.0 -org.jetbrains.kotlinx:kotlinx-io-bytestring:0.8.0 -org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.8.0 -org.jetbrains.kotlinx:kotlinx-io-core:0.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 +org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1 +org.jetbrains.kotlinx:kotlinx-datetime:0.7.1 +org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.7.0 +org.jetbrains.kotlinx:kotlinx-io-bytestring:0.7.0 +org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.7.0 +org.jetbrains.kotlinx:kotlinx-io-core:0.7.0 +org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1 org.jetbrains:annotations:23.0.0 org.jspecify:jspecify:1.0.0 org.slf4j:slf4j-api:2.0.16 diff --git a/cmp-android/dependencies/prodDebugRuntimeClasspath.txt b/cmp-android/dependencies/prodDebugRuntimeClasspath.txt index 97c622612..f9ee3fb08 100644 --- a/cmp-android/dependencies/prodDebugRuntimeClasspath.txt +++ b/cmp-android/dependencies/prodDebugRuntimeClasspath.txt @@ -17,61 +17,69 @@ androidx.camera:camera-view:1.4.1 androidx.collection:collection-jvm:1.5.0 androidx.collection:collection-ktx:1.5.0 androidx.collection:collection:1.5.0 -androidx.compose.animation:animation-android:1.8.2 -androidx.compose.animation:animation-core-android:1.8.2 -androidx.compose.animation:animation-core:1.8.2 -androidx.compose.animation:animation:1.8.2 -androidx.compose.foundation:foundation-android:1.8.2 -androidx.compose.foundation:foundation-layout-android:1.8.2 -androidx.compose.foundation:foundation-layout:1.8.2 -androidx.compose.foundation:foundation:1.8.2 +androidx.compose.animation:animation-android:1.8.3 +androidx.compose.animation:animation-core-android:1.8.3 +androidx.compose.animation:animation-core:1.8.3 +androidx.compose.animation:animation:1.8.3 +androidx.compose.foundation:foundation-android:1.8.3 +androidx.compose.foundation:foundation-layout-android:1.8.3 +androidx.compose.foundation:foundation-layout:1.8.3 +androidx.compose.foundation:foundation:1.8.3 +androidx.compose.material3.adaptive:adaptive-android:1.1.0 +androidx.compose.material3.adaptive:adaptive-layout-android:1.1.0 +androidx.compose.material3.adaptive:adaptive-layout:1.1.0 +androidx.compose.material3.adaptive:adaptive-navigation-android:1.1.0 +androidx.compose.material3.adaptive:adaptive-navigation:1.1.0 +androidx.compose.material3.adaptive:adaptive:1.1.0 +androidx.compose.material3:material3-adaptive-navigation-suite-android:1.3.2 +androidx.compose.material3:material3-adaptive-navigation-suite:1.3.2 androidx.compose.material3:material3-android:1.3.2 androidx.compose.material3:material3:1.3.2 -androidx.compose.material:material-android:1.8.2 -androidx.compose.material:material-icons-core-android:1.7.6 -androidx.compose.material:material-icons-core:1.7.6 -androidx.compose.material:material-icons-extended-android:1.7.6 -androidx.compose.material:material-icons-extended:1.7.6 -androidx.compose.material:material-ripple-android:1.8.2 -androidx.compose.material:material-ripple:1.8.2 -androidx.compose.material:material:1.8.2 -androidx.compose.runtime:runtime-android:1.8.2 -androidx.compose.runtime:runtime-saveable-android:1.8.2 -androidx.compose.runtime:runtime-saveable:1.8.2 -androidx.compose.runtime:runtime:1.8.2 -androidx.compose.ui:ui-android:1.8.2 -androidx.compose.ui:ui-geometry-android:1.8.2 -androidx.compose.ui:ui-geometry:1.8.2 -androidx.compose.ui:ui-graphics-android:1.8.2 -androidx.compose.ui:ui-graphics:1.8.2 -androidx.compose.ui:ui-text-android:1.8.2 -androidx.compose.ui:ui-text:1.8.2 -androidx.compose.ui:ui-tooling-android:1.8.2 -androidx.compose.ui:ui-tooling-data-android:1.8.2 -androidx.compose.ui:ui-tooling-data:1.8.2 -androidx.compose.ui:ui-tooling-preview-android:1.8.2 -androidx.compose.ui:ui-tooling-preview:1.8.2 -androidx.compose.ui:ui-tooling:1.8.2 -androidx.compose.ui:ui-unit-android:1.8.2 -androidx.compose.ui:ui-unit:1.8.2 -androidx.compose.ui:ui-util-android:1.8.2 -androidx.compose.ui:ui-util:1.8.2 -androidx.compose.ui:ui:1.8.2 -androidx.compose:compose-bom:2024.12.01 +androidx.compose.material:material-android:1.8.3 +androidx.compose.material:material-icons-core-android:1.7.8 +androidx.compose.material:material-icons-core:1.7.8 +androidx.compose.material:material-icons-extended-android:1.7.8 +androidx.compose.material:material-icons-extended:1.7.8 +androidx.compose.material:material-ripple-android:1.8.3 +androidx.compose.material:material-ripple:1.8.3 +androidx.compose.material:material:1.8.3 +androidx.compose.runtime:runtime-android:1.8.3 +androidx.compose.runtime:runtime-saveable-android:1.8.3 +androidx.compose.runtime:runtime-saveable:1.8.3 +androidx.compose.runtime:runtime:1.8.3 +androidx.compose.ui:ui-android:1.8.3 +androidx.compose.ui:ui-geometry-android:1.8.3 +androidx.compose.ui:ui-geometry:1.8.3 +androidx.compose.ui:ui-graphics-android:1.8.3 +androidx.compose.ui:ui-graphics:1.8.3 +androidx.compose.ui:ui-text-android:1.8.3 +androidx.compose.ui:ui-text:1.8.3 +androidx.compose.ui:ui-tooling-android:1.8.3 +androidx.compose.ui:ui-tooling-data-android:1.8.3 +androidx.compose.ui:ui-tooling-data:1.8.3 +androidx.compose.ui:ui-tooling-preview-android:1.8.3 +androidx.compose.ui:ui-tooling-preview:1.8.3 +androidx.compose.ui:ui-tooling:1.8.3 +androidx.compose.ui:ui-unit-android:1.8.3 +androidx.compose.ui:ui-unit:1.8.3 +androidx.compose.ui:ui-util-android:1.8.3 +androidx.compose.ui:ui-util:1.8.3 +androidx.compose.ui:ui:1.8.3 +androidx.compose:compose-bom:2025.06.01 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 -androidx.core:core-ktx:1.15.0 +androidx.core:core-ktx:1.16.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 -androidx.core:core:1.15.0 +androidx.core:core:1.16.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 androidx.customview:customview:1.1.0 -androidx.databinding:databinding-adapters:8.7.3 -androidx.databinding:databinding-common:8.7.3 -androidx.databinding:databinding-ktx:8.7.3 -androidx.databinding:databinding-runtime:8.7.3 -androidx.databinding:viewbinding:8.7.3 +androidx.databinding:databinding-adapters:8.10.0 +androidx.databinding:databinding-common:8.10.0 +androidx.databinding:databinding-ktx:8.10.0 +androidx.databinding:databinding-runtime:8.10.0 +androidx.databinding:viewbinding:8.10.0 androidx.datastore:datastore-core:1.0.0 androidx.datastore:datastore-preferences-core:1.0.0 androidx.datastore:datastore-preferences:1.0.0 @@ -130,15 +138,18 @@ androidx.savedstate:savedstate-ktx:1.3.1 androidx.savedstate:savedstate:1.3.1 androidx.slidingpanelayout:slidingpanelayout:1.2.0 androidx.startup:startup-runtime:1.2.0 -androidx.tracing:tracing-ktx:1.2.0 -androidx.tracing:tracing:1.2.0 +androidx.tracing:tracing-android:1.3.0 +androidx.tracing:tracing-ktx:1.3.0 +androidx.tracing:tracing:1.3.0 androidx.transition:transition:1.4.1 androidx.vectordrawable:vectordrawable-animated:1.2.0 androidx.vectordrawable:vectordrawable:1.2.0 androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager:viewpager:1.0.0 androidx.window.extensions.core:core:1.0.0 -androidx.window:window:1.2.0 +androidx.window:window-core-android:1.3.0 +androidx.window:window-core:1.3.0 +androidx.window:window:1.3.0 co.touchlab:kermit-android-debug:2.0.6 co.touchlab:kermit-core-android-debug:2.0.6 co.touchlab:kermit-core:2.0.6 @@ -159,7 +170,8 @@ com.attafitamim.krop:ui-android:0.1.6 com.attafitamim.krop:ui:0.1.6 com.caverock:androidsvg-aar:1.4 com.google.accompanist:accompanist-drawablepainter:0.37.3 -com.google.accompanist:accompanist-permissions:0.37.3 +com.google.accompanist:accompanist-pager:0.36.0 +com.google.accompanist:accompanist-permissions:0.36.0 com.google.android.datatransport:transport-api:3.2.0 com.google.android.datatransport:transport-backend-cct:3.3.0 com.google.android.datatransport:transport-runtime:3.3.0 @@ -231,6 +243,7 @@ de.jensklingenberg.ktorfit:ktorfit-lib-light:2.5.2 de.jensklingenberg.ktorfit:ktorfit-lib:2.5.2 dev.chrisbanes.material3:material3-window-size-class-multiplatform-android:0.5.0 dev.chrisbanes.material3:material3-window-size-class-multiplatform:0.5.0 +dev.chrisbanes.snapper:snapper:0.2.2 io.coil-kt.coil3:coil-android:3.2.0 io.coil-kt.coil3:coil-compose-android:3.2.0 io.coil-kt.coil3:coil-compose-core-android:3.2.0 @@ -271,12 +284,14 @@ io.github.panpf.zoomimage:zoomimage-core-android:1.3.0 io.github.panpf.zoomimage:zoomimage-core-coil3-android:1.3.0 io.github.panpf.zoomimage:zoomimage-core-coil3:1.3.0 io.github.panpf.zoomimage:zoomimage-core:1.3.0 -io.github.vinceglb:filekit-core-android:0.10.0 -io.github.vinceglb:filekit-core:0.10.0 -io.github.vinceglb:filekit-dialogs-android:0.10.0 -io.github.vinceglb:filekit-dialogs-compose-android:0.10.0 -io.github.vinceglb:filekit-dialogs-compose:0.10.0 -io.github.vinceglb:filekit-dialogs:0.10.0 +io.github.vinceglb:filekit-compose-android:0.8.8 +io.github.vinceglb:filekit-compose:0.8.8 +io.github.vinceglb:filekit-core-android:0.10.0-beta04 +io.github.vinceglb:filekit-core:0.10.0-beta04 +io.github.vinceglb:filekit-dialogs-android:0.10.0-beta04 +io.github.vinceglb:filekit-dialogs-compose-android:0.10.0-beta04 +io.github.vinceglb:filekit-dialogs-compose:0.10.0-beta04 +io.github.vinceglb:filekit-dialogs:0.10.0-beta04 io.insert-koin:koin-android:4.1.0 io.insert-koin:koin-androidx-compose:4.1.0 io.insert-koin:koin-androidx-navigation:4.1.0 @@ -345,7 +360,8 @@ org.jetbrains.androidx.navigation:navigation-common:2.9.0-beta03 org.jetbrains.androidx.navigation:navigation-compose:2.9.0-beta03 org.jetbrains.androidx.navigation:navigation-runtime:2.9.0-beta03 org.jetbrains.androidx.savedstate:savedstate-compose:1.3.1 -org.jetbrains.androidx.savedstate:savedstate:1.3.3 +org.jetbrains.androidx.savedstate:savedstate:1.3.1 +org.jetbrains.androidx.window:window-core:1.3.1 org.jetbrains.compose.animation:animation-core:1.8.2 org.jetbrains.compose.animation:animation:1.8.2 org.jetbrains.compose.annotation-internal:annotation:1.8.2 @@ -356,6 +372,10 @@ org.jetbrains.compose.components:components-ui-tooling-preview-android:1.8.2 org.jetbrains.compose.components:components-ui-tooling-preview:1.8.2 org.jetbrains.compose.foundation:foundation-layout:1.8.2 org.jetbrains.compose.foundation:foundation:1.8.2 +org.jetbrains.compose.material3.adaptive:adaptive-layout:1.1.2 +org.jetbrains.compose.material3.adaptive:adaptive-navigation:1.1.2 +org.jetbrains.compose.material3.adaptive:adaptive:1.1.2 +org.jetbrains.compose.material3:material3-adaptive-navigation-suite:1.8.2 org.jetbrains.compose.material3:material3:1.8.2 org.jetbrains.compose.material:material-icons-core:1.7.3 org.jetbrains.compose.material:material-icons-extended:1.7.3 @@ -374,12 +394,12 @@ org.jetbrains.compose.ui:ui-tooling:1.8.2 org.jetbrains.compose.ui:ui-unit:1.8.2 org.jetbrains.compose.ui:ui-util:1.8.2 org.jetbrains.compose.ui:ui:1.8.2 -org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 -org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 -org.jetbrains.kotlin:kotlin-reflect:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.23 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20 -org.jetbrains.kotlin:kotlin-stdlib:2.2.0 +org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.20 +org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.20 +org.jetbrains.kotlin:kotlin-reflect:2.1.20 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0 +org.jetbrains.kotlin:kotlin-stdlib:2.1.21 org.jetbrains.kotlinx:atomicfu-jvm:0.23.2 org.jetbrains.kotlinx:atomicfu:0.23.2 org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8 @@ -390,19 +410,19 @@ org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.2 org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.2 org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.2 -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1-0.6.x-compat -org.jetbrains.kotlinx:kotlinx-datetime:0.7.1-0.6.x-compat -org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.8.0 -org.jetbrains.kotlinx:kotlinx-io-bytestring:0.8.0 -org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.8.0 -org.jetbrains.kotlinx:kotlinx-io-core:0.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 +org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1 +org.jetbrains.kotlinx:kotlinx-datetime:0.7.1 +org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.7.0 +org.jetbrains.kotlinx:kotlinx-io-bytestring:0.7.0 +org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.7.0 +org.jetbrains.kotlinx:kotlinx-io-core:0.7.0 +org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1 org.jetbrains:annotations:23.0.0 org.jspecify:jspecify:1.0.0 org.slf4j:slf4j-api:2.0.16 diff --git a/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt b/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt index 1266bed3d..836c3e7d8 100644 --- a/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt +++ b/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt @@ -17,61 +17,69 @@ androidx.camera:camera-view:1.4.1 androidx.collection:collection-jvm:1.5.0 androidx.collection:collection-ktx:1.5.0 androidx.collection:collection:1.5.0 -androidx.compose.animation:animation-android:1.8.2 -androidx.compose.animation:animation-core-android:1.8.2 -androidx.compose.animation:animation-core:1.8.2 -androidx.compose.animation:animation:1.8.2 -androidx.compose.foundation:foundation-android:1.8.2 -androidx.compose.foundation:foundation-layout-android:1.8.2 -androidx.compose.foundation:foundation-layout:1.8.2 -androidx.compose.foundation:foundation:1.8.2 +androidx.compose.animation:animation-android:1.8.3 +androidx.compose.animation:animation-core-android:1.8.3 +androidx.compose.animation:animation-core:1.8.3 +androidx.compose.animation:animation:1.8.3 +androidx.compose.foundation:foundation-android:1.8.3 +androidx.compose.foundation:foundation-layout-android:1.8.3 +androidx.compose.foundation:foundation-layout:1.8.3 +androidx.compose.foundation:foundation:1.8.3 +androidx.compose.material3.adaptive:adaptive-android:1.1.0 +androidx.compose.material3.adaptive:adaptive-layout-android:1.1.0 +androidx.compose.material3.adaptive:adaptive-layout:1.1.0 +androidx.compose.material3.adaptive:adaptive-navigation-android:1.1.0 +androidx.compose.material3.adaptive:adaptive-navigation:1.1.0 +androidx.compose.material3.adaptive:adaptive:1.1.0 +androidx.compose.material3:material3-adaptive-navigation-suite-android:1.3.2 +androidx.compose.material3:material3-adaptive-navigation-suite:1.3.2 androidx.compose.material3:material3-android:1.3.2 androidx.compose.material3:material3:1.3.2 -androidx.compose.material:material-android:1.8.2 -androidx.compose.material:material-icons-core-android:1.7.6 -androidx.compose.material:material-icons-core:1.7.6 -androidx.compose.material:material-icons-extended-android:1.7.6 -androidx.compose.material:material-icons-extended:1.7.6 -androidx.compose.material:material-ripple-android:1.8.2 -androidx.compose.material:material-ripple:1.8.2 -androidx.compose.material:material:1.8.2 -androidx.compose.runtime:runtime-android:1.8.2 -androidx.compose.runtime:runtime-saveable-android:1.8.2 -androidx.compose.runtime:runtime-saveable:1.8.2 -androidx.compose.runtime:runtime:1.8.2 -androidx.compose.ui:ui-android:1.8.2 -androidx.compose.ui:ui-geometry-android:1.8.2 -androidx.compose.ui:ui-geometry:1.8.2 -androidx.compose.ui:ui-graphics-android:1.8.2 -androidx.compose.ui:ui-graphics:1.8.2 -androidx.compose.ui:ui-text-android:1.8.2 -androidx.compose.ui:ui-text:1.8.2 -androidx.compose.ui:ui-tooling-android:1.8.2 -androidx.compose.ui:ui-tooling-data-android:1.8.2 -androidx.compose.ui:ui-tooling-data:1.8.2 -androidx.compose.ui:ui-tooling-preview-android:1.8.2 -androidx.compose.ui:ui-tooling-preview:1.8.2 -androidx.compose.ui:ui-tooling:1.8.2 -androidx.compose.ui:ui-unit-android:1.8.2 -androidx.compose.ui:ui-unit:1.8.2 -androidx.compose.ui:ui-util-android:1.8.2 -androidx.compose.ui:ui-util:1.8.2 -androidx.compose.ui:ui:1.8.2 -androidx.compose:compose-bom:2024.12.01 +androidx.compose.material:material-android:1.8.3 +androidx.compose.material:material-icons-core-android:1.7.8 +androidx.compose.material:material-icons-core:1.7.8 +androidx.compose.material:material-icons-extended-android:1.7.8 +androidx.compose.material:material-icons-extended:1.7.8 +androidx.compose.material:material-ripple-android:1.8.3 +androidx.compose.material:material-ripple:1.8.3 +androidx.compose.material:material:1.8.3 +androidx.compose.runtime:runtime-android:1.8.3 +androidx.compose.runtime:runtime-saveable-android:1.8.3 +androidx.compose.runtime:runtime-saveable:1.8.3 +androidx.compose.runtime:runtime:1.8.3 +androidx.compose.ui:ui-android:1.8.3 +androidx.compose.ui:ui-geometry-android:1.8.3 +androidx.compose.ui:ui-geometry:1.8.3 +androidx.compose.ui:ui-graphics-android:1.8.3 +androidx.compose.ui:ui-graphics:1.8.3 +androidx.compose.ui:ui-text-android:1.8.3 +androidx.compose.ui:ui-text:1.8.3 +androidx.compose.ui:ui-tooling-android:1.8.3 +androidx.compose.ui:ui-tooling-data-android:1.8.3 +androidx.compose.ui:ui-tooling-data:1.8.3 +androidx.compose.ui:ui-tooling-preview-android:1.8.3 +androidx.compose.ui:ui-tooling-preview:1.8.3 +androidx.compose.ui:ui-tooling:1.8.3 +androidx.compose.ui:ui-unit-android:1.8.3 +androidx.compose.ui:ui-unit:1.8.3 +androidx.compose.ui:ui-util-android:1.8.3 +androidx.compose.ui:ui-util:1.8.3 +androidx.compose.ui:ui:1.8.3 +androidx.compose:compose-bom:2025.06.01 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 -androidx.core:core-ktx:1.15.0 +androidx.core:core-ktx:1.16.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 -androidx.core:core:1.15.0 +androidx.core:core:1.16.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 androidx.customview:customview:1.1.0 -androidx.databinding:databinding-adapters:8.7.3 -androidx.databinding:databinding-common:8.7.3 -androidx.databinding:databinding-ktx:8.7.3 -androidx.databinding:databinding-runtime:8.7.3 -androidx.databinding:viewbinding:8.7.3 +androidx.databinding:databinding-adapters:8.10.0 +androidx.databinding:databinding-common:8.10.0 +androidx.databinding:databinding-ktx:8.10.0 +androidx.databinding:databinding-runtime:8.10.0 +androidx.databinding:viewbinding:8.10.0 androidx.datastore:datastore-core:1.0.0 androidx.datastore:datastore-preferences-core:1.0.0 androidx.datastore:datastore-preferences:1.0.0 @@ -130,15 +138,18 @@ androidx.savedstate:savedstate-ktx:1.3.1 androidx.savedstate:savedstate:1.3.1 androidx.slidingpanelayout:slidingpanelayout:1.2.0 androidx.startup:startup-runtime:1.2.0 -androidx.tracing:tracing-ktx:1.2.0 -androidx.tracing:tracing:1.2.0 +androidx.tracing:tracing-android:1.3.0 +androidx.tracing:tracing-ktx:1.3.0 +androidx.tracing:tracing:1.3.0 androidx.transition:transition:1.4.1 androidx.vectordrawable:vectordrawable-animated:1.2.0 androidx.vectordrawable:vectordrawable:1.2.0 androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager:viewpager:1.0.0 androidx.window.extensions.core:core:1.0.0 -androidx.window:window:1.2.0 +androidx.window:window-core-android:1.3.0 +androidx.window:window-core:1.3.0 +androidx.window:window:1.3.0 co.touchlab:kermit-android:2.0.6 co.touchlab:kermit-core-android:2.0.6 co.touchlab:kermit-core:2.0.6 @@ -159,7 +170,8 @@ com.attafitamim.krop:ui-android:0.1.6 com.attafitamim.krop:ui:0.1.6 com.caverock:androidsvg-aar:1.4 com.google.accompanist:accompanist-drawablepainter:0.37.3 -com.google.accompanist:accompanist-permissions:0.37.3 +com.google.accompanist:accompanist-pager:0.36.0 +com.google.accompanist:accompanist-permissions:0.36.0 com.google.android.datatransport:transport-api:3.2.0 com.google.android.datatransport:transport-backend-cct:3.3.0 com.google.android.datatransport:transport-runtime:3.3.0 @@ -231,6 +243,7 @@ de.jensklingenberg.ktorfit:ktorfit-lib-light:2.5.2 de.jensklingenberg.ktorfit:ktorfit-lib:2.5.2 dev.chrisbanes.material3:material3-window-size-class-multiplatform-android:0.5.0 dev.chrisbanes.material3:material3-window-size-class-multiplatform:0.5.0 +dev.chrisbanes.snapper:snapper:0.2.2 io.coil-kt.coil3:coil-android:3.2.0 io.coil-kt.coil3:coil-compose-android:3.2.0 io.coil-kt.coil3:coil-compose-core-android:3.2.0 @@ -271,12 +284,14 @@ io.github.panpf.zoomimage:zoomimage-core-android:1.3.0 io.github.panpf.zoomimage:zoomimage-core-coil3-android:1.3.0 io.github.panpf.zoomimage:zoomimage-core-coil3:1.3.0 io.github.panpf.zoomimage:zoomimage-core:1.3.0 -io.github.vinceglb:filekit-core-android:0.10.0 -io.github.vinceglb:filekit-core:0.10.0 -io.github.vinceglb:filekit-dialogs-android:0.10.0 -io.github.vinceglb:filekit-dialogs-compose-android:0.10.0 -io.github.vinceglb:filekit-dialogs-compose:0.10.0 -io.github.vinceglb:filekit-dialogs:0.10.0 +io.github.vinceglb:filekit-compose-android:0.8.8 +io.github.vinceglb:filekit-compose:0.8.8 +io.github.vinceglb:filekit-core-android:0.10.0-beta04 +io.github.vinceglb:filekit-core:0.10.0-beta04 +io.github.vinceglb:filekit-dialogs-android:0.10.0-beta04 +io.github.vinceglb:filekit-dialogs-compose-android:0.10.0-beta04 +io.github.vinceglb:filekit-dialogs-compose:0.10.0-beta04 +io.github.vinceglb:filekit-dialogs:0.10.0-beta04 io.insert-koin:koin-android:4.1.0 io.insert-koin:koin-androidx-compose:4.1.0 io.insert-koin:koin-androidx-navigation:4.1.0 @@ -345,7 +360,8 @@ org.jetbrains.androidx.navigation:navigation-common:2.9.0-beta03 org.jetbrains.androidx.navigation:navigation-compose:2.9.0-beta03 org.jetbrains.androidx.navigation:navigation-runtime:2.9.0-beta03 org.jetbrains.androidx.savedstate:savedstate-compose:1.3.1 -org.jetbrains.androidx.savedstate:savedstate:1.3.3 +org.jetbrains.androidx.savedstate:savedstate:1.3.1 +org.jetbrains.androidx.window:window-core:1.3.1 org.jetbrains.compose.animation:animation-core:1.8.2 org.jetbrains.compose.animation:animation:1.8.2 org.jetbrains.compose.annotation-internal:annotation:1.8.2 @@ -356,6 +372,10 @@ org.jetbrains.compose.components:components-ui-tooling-preview-android:1.8.2 org.jetbrains.compose.components:components-ui-tooling-preview:1.8.2 org.jetbrains.compose.foundation:foundation-layout:1.8.2 org.jetbrains.compose.foundation:foundation:1.8.2 +org.jetbrains.compose.material3.adaptive:adaptive-layout:1.1.2 +org.jetbrains.compose.material3.adaptive:adaptive-navigation:1.1.2 +org.jetbrains.compose.material3.adaptive:adaptive:1.1.2 +org.jetbrains.compose.material3:material3-adaptive-navigation-suite:1.8.2 org.jetbrains.compose.material3:material3:1.8.2 org.jetbrains.compose.material:material-icons-core:1.7.3 org.jetbrains.compose.material:material-icons-extended:1.7.3 @@ -371,12 +391,12 @@ org.jetbrains.compose.ui:ui-text:1.8.2 org.jetbrains.compose.ui:ui-unit:1.8.2 org.jetbrains.compose.ui:ui-util:1.8.2 org.jetbrains.compose.ui:ui:1.8.2 -org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 -org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 -org.jetbrains.kotlin:kotlin-reflect:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.23 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20 -org.jetbrains.kotlin:kotlin-stdlib:2.2.0 +org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.20 +org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.20 +org.jetbrains.kotlin:kotlin-reflect:2.1.20 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0 +org.jetbrains.kotlin:kotlin-stdlib:2.1.21 org.jetbrains.kotlinx:atomicfu-jvm:0.23.2 org.jetbrains.kotlinx:atomicfu:0.23.2 org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8 @@ -387,19 +407,19 @@ org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.2 org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.2 org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.2 -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1-0.6.x-compat -org.jetbrains.kotlinx:kotlinx-datetime:0.7.1-0.6.x-compat -org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.8.0 -org.jetbrains.kotlinx:kotlinx-io-bytestring:0.8.0 -org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.8.0 -org.jetbrains.kotlinx:kotlinx-io-core:0.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 -org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 +org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1 +org.jetbrains.kotlinx:kotlinx-datetime:0.7.1 +org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.7.0 +org.jetbrains.kotlinx:kotlinx-io-bytestring:0.7.0 +org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.7.0 +org.jetbrains.kotlinx:kotlinx-io-core:0.7.0 +org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1 org.jetbrains:annotations:23.0.0 org.jspecify:jspecify:1.0.0 org.slf4j:slf4j-api:2.0.16 diff --git a/cmp-ios/Configuration/Config.xcconfig b/cmp-ios/Configuration/Config.xcconfig index 17d58e842..ce3c249ae 100644 --- a/cmp-ios/Configuration/Config.xcconfig +++ b/cmp-ios/Configuration/Config.xcconfig @@ -1,3 +1,3 @@ TEAM_ID=L432S2FZP5 -BUNDLE_ID=cmp.ios -APP_NAME=iOSApp +BUNDLE_ID=org.mifos.mobile +APP_NAME=Mifos Mobile diff --git a/cmp-ios/Podfile b/cmp-ios/Podfile new file mode 100644 index 000000000..0f05686a7 --- /dev/null +++ b/cmp-ios/Podfile @@ -0,0 +1,21 @@ +deployment_target = '16.0' + +target 'iosApp' do + use_frameworks! + platform :ios, deployment_target + # Pods for iosApp + pod 'cmp_shared', :path => '../cmp-shared' +end + +post_install do |installer| + installer.generated_projects.each do |project| + project.targets.each do |target| + target.build_configurations.each do |config| + config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = deployment_target + end + end + project.build_configurations.each do |config| + config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = deployment_target + end + end +end \ No newline at end of file diff --git a/cmp-ios/Podfile.lock b/cmp-ios/Podfile.lock new file mode 100644 index 000000000..220c85428 --- /dev/null +++ b/cmp-ios/Podfile.lock @@ -0,0 +1,16 @@ +PODS: + - cmp_shared (1.0) + +DEPENDENCIES: + - cmp_shared (from `../cmp-shared`) + +EXTERNAL SOURCES: + cmp_shared: + :path: "../cmp-shared" + +SPEC CHECKSUMS: + cmp_shared: bba9ecd776184671d0ea35c27194f0fb83f94797 + +PODFILE CHECKSUM: fba668dc0eba2e4694ef273d90789cf739b8504c + +COCOAPODS: 1.16.2 diff --git a/cmp-ios/iosApp.xcodeproj/project.pbxproj b/cmp-ios/iosApp.xcodeproj/project.pbxproj index f228b3799..1cbac6655 100644 --- a/cmp-ios/iosApp.xcodeproj/project.pbxproj +++ b/cmp-ios/iosApp.xcodeproj/project.pbxproj @@ -9,6 +9,7 @@ /* Begin PBXBuildFile section */ 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557BA273AAA24004C7B11 /* Assets.xcassets */; }; 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */; }; + 1C3FE2006C77932769810076 /* Pods_iosApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6DF4DB1CF5E68C5614135A56 /* Pods_iosApp.framework */; }; 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2152FB032600AC8F00CF470E /* iOSApp.swift */; }; 7555FF83242A565900829871 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7555FF82242A565900829871 /* ContentView.swift */; }; /* End PBXBuildFile section */ @@ -16,10 +17,13 @@ /* Begin PBXFileReference section */ 058557BA273AAA24004C7B11 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 1EB8E354CA5D35F960D11D5D /* Pods-iosApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iosApp.release.xcconfig"; path = "Target Support Files/Pods-iosApp/Pods-iosApp.release.xcconfig"; sourceTree = ""; }; 2152FB032600AC8F00CF470E /* iOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSApp.swift; sourceTree = ""; }; - 7555FF7B242A565900829871 /* iOSApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iOSApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 6DF4DB1CF5E68C5614135A56 /* Pods_iosApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_iosApp.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7555FF7B242A565900829871 /* Mifos Mobile.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Mifos Mobile.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 7555FF82242A565900829871 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; 7555FF8C242A565B00829871 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8DADAFB5E75F5E24CA4F0EB4 /* Pods-iosApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iosApp.debug.xcconfig"; path = "Target Support Files/Pods-iosApp/Pods-iosApp.debug.xcconfig"; sourceTree = ""; }; AB3632DC29227652001CCB65 /* Config.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; }; /* End PBXFileReference section */ @@ -28,6 +32,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 1C3FE2006C77932769810076 /* Pods_iosApp.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -42,9 +47,19 @@ path = "Preview Content"; sourceTree = ""; }; + 1826950F674A72E12E219090 /* Pods */ = { + isa = PBXGroup; + children = ( + 8DADAFB5E75F5E24CA4F0EB4 /* Pods-iosApp.debug.xcconfig */, + 1EB8E354CA5D35F960D11D5D /* Pods-iosApp.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; 42799AB246E5F90AF97AA0EF /* Frameworks */ = { isa = PBXGroup; children = ( + 6DF4DB1CF5E68C5614135A56 /* Pods_iosApp.framework */, ); name = Frameworks; sourceTree = ""; @@ -56,13 +71,14 @@ 7555FF7D242A565900829871 /* iosApp */, 7555FF7C242A565900829871 /* Products */, 42799AB246E5F90AF97AA0EF /* Frameworks */, + 1826950F674A72E12E219090 /* Pods */, ); sourceTree = ""; }; 7555FF7C242A565900829871 /* Products */ = { isa = PBXGroup; children = ( - 7555FF7B242A565900829871 /* iOSApp.app */, + 7555FF7B242A565900829871 /* Mifos Mobile.app */, ); name = Products; sourceTree = ""; @@ -94,20 +110,19 @@ isa = PBXNativeTarget; buildConfigurationList = 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */; buildPhases = ( - F36B1CEB2AD83DDC00CB74D5 /* Compile Kotlin Framework */, + D005710AF42AFBD3373CBB90 /* [CP] Check Pods Manifest.lock */, 7555FF77242A565900829871 /* Sources */, B92378962B6B1156000C7307 /* Frameworks */, 7555FF79242A565900829871 /* Resources */, + 3843B476B28208558ACE8C15 /* [CP] Copy Pods Resources */, ); buildRules = ( ); dependencies = ( ); name = iosApp; - packageProductDependencies = ( - ); productName = iosApp; - productReference = 7555FF7B242A565900829871 /* iOSApp.app */; + productReference = 7555FF7B242A565900829871 /* Mifos Mobile.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -135,8 +150,6 @@ Base, ); mainGroup = 7555FF72242A565900829871; - packageReferences = ( - ); productRefGroup = 7555FF7C242A565900829871 /* Products */; projectDirPath = ""; projectRoot = ""; @@ -159,7 +172,24 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - F36B1CEB2AD83DDC00CB74D5 /* Compile Kotlin Framework */ = { + 3843B476B28208558ACE8C15 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + D005710AF42AFBD3373CBB90 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -167,15 +197,19 @@ inputFileListPaths = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); - name = "Compile Kotlin Framework"; + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( ); outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-iosApp-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ \"YES\" = \"$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED\" ]; then\n echo \"Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \\\"YES\\\"\"\n exit 0\nfi\ncd \"$SRCROOT/..\"\n./gradlew :cmp-shared:embedAndSignAppleFrameworkForXcode\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -316,19 +350,20 @@ }; 7555FFA6242A565B00829871 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 8DADAFB5E75F5E24CA4F0EB4 /* Pods-iosApp.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\""; - DEVELOPMENT_TEAM = "${TEAM_ID}"; + DEVELOPMENT_TEAM = L432S2FZP5; ENABLE_PREVIEWS = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)\n$(SRCROOT)/../composeApp/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)", ); INFOPLIST_FILE = iosApp/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "Mifos Pay"; + INFOPLIST_KEY_CFBundleDisplayName = "Mifos Mobile"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.finance"; IPHONEOS_DEPLOYMENT_TARGET = 15.3; LD_RUNPATH_SEARCH_PATHS = ( @@ -346,6 +381,7 @@ }; 7555FFA7242A565B00829871 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 1EB8E354CA5D35F960D11D5D /* Pods-iosApp.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "Apple Development"; @@ -358,7 +394,7 @@ "$(SRCROOT)/../shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)\n$(SRCROOT)/../composeApp/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)", ); INFOPLIST_FILE = iosApp/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "Mifos Pay"; + INFOPLIST_KEY_CFBundleDisplayName = "Mifos Mobile"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.finance"; IPHONEOS_DEPLOYMENT_TARGET = 15.3; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/cmp-ios/iosApp.xcodeproj/project.xcworkspace/xcuserdata/hekmatullahamin.xcuserdatad/UserInterfaceState.xcuserstate b/cmp-ios/iosApp.xcodeproj/project.xcworkspace/xcuserdata/hekmatullahamin.xcuserdatad/UserInterfaceState.xcuserstate index 8331989cb..86c5772eb 100644 Binary files a/cmp-ios/iosApp.xcodeproj/project.xcworkspace/xcuserdata/hekmatullahamin.xcuserdatad/UserInterfaceState.xcuserstate and b/cmp-ios/iosApp.xcodeproj/project.xcworkspace/xcuserdata/hekmatullahamin.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/cmp-ios/iosApp.xcodeproj/project.xcworkspace/xcuserdata/hekmatullahamin.xcuserdatad/xcschemes/xcschememanagement.plist b/cmp-ios/iosApp.xcodeproj/project.xcworkspace/xcuserdata/hekmatullahamin.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 000000000..ee3458dd7 --- /dev/null +++ b/cmp-ios/iosApp.xcodeproj/project.xcworkspace/xcuserdata/hekmatullahamin.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,5 @@ + + + + + diff --git a/cmp-ios/iosApp.xcodeproj/xcshareddata/xcschemes/cmp-ios.xcscheme b/cmp-ios/iosApp.xcodeproj/xcshareddata/xcschemes/cmp-ios.xcscheme new file mode 100644 index 000000000..ecd5e7fae --- /dev/null +++ b/cmp-ios/iosApp.xcodeproj/xcshareddata/xcschemes/cmp-ios.xcscheme @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cmp-ios/iosApp.xcodeproj/xcuserdata/hekmatullahamin.xcuserdatad/xcschemes/xcschememanagement.plist b/cmp-ios/iosApp.xcodeproj/xcuserdata/hekmatullahamin.xcuserdatad/xcschemes/xcschememanagement.plist index 56b5955f8..aede5d13b 100644 --- a/cmp-ios/iosApp.xcodeproj/xcuserdata/hekmatullahamin.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/cmp-ios/iosApp.xcodeproj/xcuserdata/hekmatullahamin.xcuserdatad/xcschemes/xcschememanagement.plist @@ -4,7 +4,7 @@ SchemeUserState - iosApp.xcscheme_^#shared#^_ + cmp-ios.xcscheme_^#shared#^_ orderHint 0 diff --git a/cmp-ios/iosApp.xcworkspace/contents.xcworkspacedata b/cmp-ios/iosApp.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..c009e7d7c --- /dev/null +++ b/cmp-ios/iosApp.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/cmp-shared/build.gradle.kts b/cmp-shared/build.gradle.kts index 9ad6f049d..d548fabb5 100644 --- a/cmp-shared/build.gradle.kts +++ b/cmp-shared/build.gradle.kts @@ -9,26 +9,15 @@ */ plugins { - alias(libs.plugins.kmp.library.convention) alias(libs.plugins.cmp.feature.convention) - alias(libs.plugins.android.library) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.jetbrainsCompose) alias(libs.plugins.kotlin.parcelize) + alias(libs.plugins.kotlinCocoapods) } kotlin { - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64() - ).forEach { iosTarget -> - iosTarget.binaries.framework { - baseName = "ComposeApp" - isStatic = true - optimized = true - } - } + iosX64() + iosArm64() + iosSimulatorArm64() sourceSets { commonMain.dependencies { @@ -40,9 +29,6 @@ kotlin { //put your multiplatform dependencies here implementation(compose.material) implementation(compose.material3) - api(libs.koin.core) - implementation(libs.koin.compose) - implementation(libs.koin.compose.viewmodel) } desktopMain.dependencies { @@ -51,6 +37,19 @@ kotlin { implementation(compose.desktop.common) } } + + cocoapods { + summary = "KMP Shared Module" + homepage = "https://github.com/openMF/mifos-mobile" + version = "1.0" + ios.deploymentTarget = "16.0" + podfile = project.file("../cmp-ios/Podfile") + + framework { + baseName = "ComposeApp" + isStatic = true + } + } } android { diff --git a/cmp-shared/cmp_shared.podspec b/cmp-shared/cmp_shared.podspec new file mode 100644 index 000000000..7094d449a --- /dev/null +++ b/cmp-shared/cmp_shared.podspec @@ -0,0 +1,54 @@ +Pod::Spec.new do |spec| + spec.name = 'cmp_shared' + spec.version = '1.0' + spec.homepage = 'https://github.com/openMF/mifos-mobile' + spec.source = { :http=> ''} + spec.authors = '' + spec.license = '' + spec.summary = 'KMP Shared Module' + spec.vendored_frameworks = 'build/cocoapods/framework/ComposeApp.framework' + spec.libraries = 'c++' + spec.ios.deployment_target = '16.0' + + + if !Dir.exist?('build/cocoapods/framework/ComposeApp.framework') || Dir.empty?('build/cocoapods/framework/ComposeApp.framework') + raise " + + Kotlin framework 'ComposeApp' doesn't exist yet, so a proper Xcode project can't be generated. + 'pod install' should be executed after running ':generateDummyFramework' Gradle task: + + ./gradlew :cmp-shared:generateDummyFramework + + Alternatively, proper pod installation is performed during Gradle sync in the IDE (if Podfile location is set)" + end + + spec.xcconfig = { + 'ENABLE_USER_SCRIPT_SANDBOXING' => 'NO', + } + + spec.pod_target_xcconfig = { + 'KOTLIN_PROJECT_PATH' => ':cmp-shared', + 'PRODUCT_MODULE_NAME' => 'ComposeApp', + } + + spec.script_phases = [ + { + :name => 'Build cmp_shared', + :execution_position => :before_compile, + :shell_path => '/bin/sh', + :script => <<-SCRIPT + if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then + echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\"" + exit 0 + fi + set -ev + REPO_ROOT="$PODS_TARGET_SRCROOT" + "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \ + -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \ + -Pkotlin.native.cocoapods.archs="$ARCHS" \ + -Pkotlin.native.cocoapods.configuration="$CONFIGURATION" + SCRIPT + } + ] + spec.resources = ['build/compose/cocoapods/compose-resources'] +end \ No newline at end of file diff --git a/cmp-shared/src/nativeMain/kotlin/org/mifos/shared/ViewController.kt b/cmp-shared/src/nativeMain/kotlin/org/mifos/shared/ViewController.kt index b109c261c..bcca05304 100644 --- a/cmp-shared/src/nativeMain/kotlin/org/mifos/shared/ViewController.kt +++ b/cmp-shared/src/nativeMain/kotlin/org/mifos/shared/ViewController.kt @@ -18,5 +18,9 @@ fun viewController() = ComposeUIViewController( initKoin() }, ) { - SharedApp() + SharedApp( + handleThemeMode = {}, + handleAppLocale = {}, + onSplashScreenRemoved = {}, + ) } diff --git a/core-base/analytics/src/commonMain/kotlin/template/core/base/analytics/AnalyticsExtensions.kt b/core-base/analytics/src/commonMain/kotlin/template/core/base/analytics/AnalyticsExtensions.kt index 60e7e385a..848f7c7b1 100644 --- a/core-base/analytics/src/commonMain/kotlin/template/core/base/analytics/AnalyticsExtensions.kt +++ b/core-base/analytics/src/commonMain/kotlin/template/core/base/analytics/AnalyticsExtensions.kt @@ -9,7 +9,7 @@ */ package template.core.base.analytics -import kotlin.time.Clock +import kotlinx.datetime.Clock import kotlin.time.Duration import kotlin.time.DurationUnit diff --git a/core-base/analytics/src/commonMain/kotlin/template/core/base/analytics/PerformanceTracker.kt b/core-base/analytics/src/commonMain/kotlin/template/core/base/analytics/PerformanceTracker.kt index b93ba5b9b..d8fa77fa8 100644 --- a/core-base/analytics/src/commonMain/kotlin/template/core/base/analytics/PerformanceTracker.kt +++ b/core-base/analytics/src/commonMain/kotlin/template/core/base/analytics/PerformanceTracker.kt @@ -9,7 +9,7 @@ */ package template.core.base.analytics -import kotlin.time.Clock +import kotlinx.datetime.Clock /** Performance tracking utilities for analytics */ diff --git a/core-base/datastore/src/commonTest/kotlin/template/core/base/datastore/DataStoreComprehensiveFeatureTest.kt b/core-base/datastore/src/commonTest/kotlin/template/core/base/datastore/DataStoreComprehensiveFeatureTest.kt index cb83c58a2..6c8400cee 100644 --- a/core-base/datastore/src/commonTest/kotlin/template/core/base/datastore/DataStoreComprehensiveFeatureTest.kt +++ b/core-base/datastore/src/commonTest/kotlin/template/core/base/datastore/DataStoreComprehensiveFeatureTest.kt @@ -18,7 +18,6 @@ import kotlinx.coroutines.flow.first import kotlinx.coroutines.test.StandardTestDispatcher import kotlinx.coroutines.test.advanceUntilIdle import kotlinx.coroutines.test.runTest -import kotlinx.datetime.Clock.System import kotlinx.serialization.Serializable import org.koin.core.context.startKoin import org.koin.core.context.stopKoin @@ -45,6 +44,8 @@ import kotlin.test.assertEquals import kotlin.test.assertFalse import kotlin.test.assertNull import kotlin.test.assertTrue +import kotlin.time.Clock +import kotlin.time.ExperimentalTime import kotlin.time.measureTime /** @@ -631,6 +632,7 @@ class DataStoreComprehensiveFeatureTest : KoinTest { * Test 9: Complete Integration Scenario * Tests realistic app usage patterns */ + @OptIn(ExperimentalTime::class) @Test fun test09_CompleteIntegrationScenario() = runTest(testDispatcher) { println("=== Testing Complete Integration Scenario ===") @@ -668,7 +670,7 @@ class DataStoreComprehensiveFeatureTest : KoinTest { // 3. Session preferences repository.savePreference("session_id", "sess_abc123") - repository.savePreference("login_timestamp", System.now().toEpochMilliseconds()) + repository.savePreference("login_timestamp", Clock.System.now().toEpochMilliseconds()) repository.savePreference("device_id", "device_xyz789") // 4. Feature flags and settings diff --git a/core/common/build.gradle.kts b/core/common/build.gradle.kts index ffff73a0e..1a904db94 100644 --- a/core/common/build.gradle.kts +++ b/core/common/build.gradle.kts @@ -9,6 +9,8 @@ */ plugins { alias(libs.plugins.kmp.library.convention) + alias(libs.plugins.compose.compiler) + alias(libs.plugins.jetbrainsCompose) } android { @@ -39,6 +41,7 @@ kotlin { api(libs.squareup.okio) api(libs.jb.kotlin.stdlib) api(libs.kotlinx.datetime) + implementation(libs.jb.composeRuntime) } androidMain.dependencies { diff --git a/core/common/src/commonMain/kotlin/org/mifos/mobile/core/common/DateHelper.kt b/core/common/src/commonMain/kotlin/org/mifos/mobile/core/common/DateHelper.kt index d04df5a18..3ea6fa96f 100644 --- a/core/common/src/commonMain/kotlin/org/mifos/mobile/core/common/DateHelper.kt +++ b/core/common/src/commonMain/kotlin/org/mifos/mobile/core/common/DateHelper.kt @@ -25,7 +25,6 @@ import kotlinx.datetime.isoDayNumber import kotlinx.datetime.minus import kotlinx.datetime.toLocalDateTime import kotlin.time.Duration.Companion.days -import kotlin.time.ExperimentalTime @Suppress("TooManyFunctions") @OptIn(FormatStringsInDatetimeFormats::class) @@ -163,7 +162,6 @@ object DateHelper { private val monthNumberToAbbreviation = monthMap.entries.associate { (k, v) -> v to k } - @OptIn(ExperimentalTime::class) fun getDateAsLongFromList(integersOfDate: List?): Long? { if (integersOfDate == null) return null val dateStr = getDateAsString(integersOfDate) diff --git a/core/designsystem/build.gradle.kts b/core/designsystem/build.gradle.kts index 12ff303e2..8b2508841 100644 --- a/core/designsystem/build.gradle.kts +++ b/core/designsystem/build.gradle.kts @@ -48,6 +48,7 @@ kotlin { implementation(libs.fluentui.system.icons) api(libs.back.handler) api(libs.window.size) + api(projects.coreBase.designsystem) } nativeMain.dependencies { diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts index aa72f039a..bc8c1d2f3 100644 --- a/core/ui/build.gradle.kts +++ b/core/ui/build.gradle.kts @@ -33,6 +33,7 @@ kotlin{ api(projects.core.designsystem) implementation(projects.core.model) api(libs.kotlinx.datetime) + implementation(libs.jb.lifecycle.compose) implementation(libs.jb.composeViewmodel) implementation(libs.jb.lifecycleViewmodel) implementation(libs.jb.lifecycleViewmodelSavedState) diff --git a/core/ui/src/commonMain/kotlin/org/mifos/mobile/core/ui/utils/PresentOrFutureSelectableDates.kt b/core/ui/src/commonMain/kotlin/org/mifos/mobile/core/ui/utils/PresentOrFutureSelectableDates.kt index 5489dcaf9..1bb49c555 100644 --- a/core/ui/src/commonMain/kotlin/org/mifos/mobile/core/ui/utils/PresentOrFutureSelectableDates.kt +++ b/core/ui/src/commonMain/kotlin/org/mifos/mobile/core/ui/utils/PresentOrFutureSelectableDates.kt @@ -11,11 +11,12 @@ package org.mifos.mobile.core.ui.utils import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.SelectableDates -import kotlinx.datetime.Clock import kotlinx.datetime.TimeZone import kotlinx.datetime.toLocalDateTime +import kotlin.time.Clock +import kotlin.time.ExperimentalTime -@OptIn(ExperimentalMaterial3Api::class) +@OptIn(ExperimentalMaterial3Api::class, ExperimentalTime::class) object PresentOrFutureSelectableDates : SelectableDates { @ExperimentalMaterial3Api diff --git a/feature/accounts/src/commonMain/kotlin/org/mifos/mobile/feature/accounts/accountTransactions/TransactionViewModel.kt b/feature/accounts/src/commonMain/kotlin/org/mifos/mobile/feature/accounts/accountTransactions/TransactionViewModel.kt index 9bdbc1f14..ad1fe95c8 100644 --- a/feature/accounts/src/commonMain/kotlin/org/mifos/mobile/feature/accounts/accountTransactions/TransactionViewModel.kt +++ b/feature/accounts/src/commonMain/kotlin/org/mifos/mobile/feature/accounts/accountTransactions/TransactionViewModel.kt @@ -17,7 +17,6 @@ import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -import kotlinx.datetime.Clock import kotlinx.datetime.DateTimeUnit import kotlinx.datetime.LocalDate import kotlinx.datetime.TimeZone @@ -55,6 +54,8 @@ import org.mifos.mobile.feature.accounts.model.TransactionCheckboxStatus import org.mifos.mobile.feature.accounts.model.TransactionFilterType import org.mifos.mobile.feature.accounts.utils.StatusUtils import kotlin.collections.map +import kotlin.time.Clock +import kotlin.time.ExperimentalTime /** * ViewModel for managing the state and logic of the account transactions screen. @@ -527,6 +528,7 @@ internal class AccountsTransactionViewModel( * @param selectedFilters A list of [TransactionCheckboxStatus] representing the active checkbox filters. * @return A map of filtered transactions grouped by date. */ + @OptIn(ExperimentalTime::class) internal fun applyTransactionFilters( selectedFilters: List, ): Map> { diff --git a/feature/accounts/src/commonMain/kotlin/org/mifos/mobile/feature/accounts/accounts/AccountsViewModel.kt b/feature/accounts/src/commonMain/kotlin/org/mifos/mobile/feature/accounts/accounts/AccountsViewModel.kt index a9b78f259..1415ee353 100644 --- a/feature/accounts/src/commonMain/kotlin/org/mifos/mobile/feature/accounts/accounts/AccountsViewModel.kt +++ b/feature/accounts/src/commonMain/kotlin/org/mifos/mobile/feature/accounts/accounts/AccountsViewModel.kt @@ -12,7 +12,6 @@ package org.mifos.mobile.feature.accounts.accounts import androidx.lifecycle.SavedStateHandle import androidx.navigation.toRoute import kotlinx.coroutines.flow.update -import kotlinx.datetime.Clock import org.jetbrains.compose.resources.StringResource import org.mifos.mobile.core.common.Constants import org.mifos.mobile.core.model.enums.AccountType @@ -21,6 +20,8 @@ import org.mifos.mobile.core.ui.utils.ScreenUiState import org.mifos.mobile.feature.accounts.model.CheckboxStatus import org.mifos.mobile.feature.accounts.model.FilterType import org.mifos.mobile.feature.accounts.utils.StatusUtils +import kotlin.time.Clock +import kotlin.time.ExperimentalTime /** * ViewModel responsible for managing the account screen state, @@ -41,6 +42,7 @@ internal class AccountsViewModel( observeAccountTypeAndInitCheckboxes() } + @OptIn(ExperimentalTime::class) override fun handleAction(action: AccountsAction) { when (action) { is AccountsAction.SetCheckboxFilterList -> { @@ -113,6 +115,7 @@ internal class AccountsViewModel( * Applies the selected checkboxes as filters, sets refresh signal, * and dismisses the filter dialog. */ + @OptIn(ExperimentalTime::class) private fun handleConfirmFilterDialog() { val selectedFilters = state.checkboxOptions.filter { it.isChecked } @@ -203,7 +206,9 @@ internal class AccountsViewModel( * UI state for the Accounts screen, containing filter options, dialog visibility, * current account type, and refresh signals. */ -internal data class AccountsState( +internal data class AccountsState +@OptIn(ExperimentalTime::class) +constructor( val isRefreshing: Boolean = false, /** Current filter checkboxes shown in the dialog */ diff --git a/feature/auth/src/commonMain/kotlin/org/mifos/mobile/feature/auth/uploadId/UploadIdScreen.kt b/feature/auth/src/commonMain/kotlin/org/mifos/mobile/feature/auth/uploadId/UploadIdScreen.kt index 8355efdf6..e6877a913 100644 --- a/feature/auth/src/commonMain/kotlin/org/mifos/mobile/feature/auth/uploadId/UploadIdScreen.kt +++ b/feature/auth/src/commonMain/kotlin/org/mifos/mobile/feature/auth/uploadId/UploadIdScreen.kt @@ -45,7 +45,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardType import androidx.lifecycle.compose.collectAsStateWithLifecycle -import kotlinx.datetime.Clock import mifos_mobile.feature.auth.generated.resources.Res import mifos_mobile.feature.auth.generated.resources.feature_common_submit import mifos_mobile.feature.auth.generated.resources.feature_upload_id_cancel @@ -75,6 +74,8 @@ import org.mifos.mobile.core.designsystem.theme.MifosMobileTheme import org.mifos.mobile.core.designsystem.theme.MifosTypography import org.mifos.mobile.core.ui.component.MifosPoweredCard import org.mifos.mobile.core.ui.utils.EventsEffect +import kotlin.time.Clock +import kotlin.time.ExperimentalTime @Composable internal fun UploadIdScreen( @@ -179,7 +180,7 @@ internal fun UploadIdScreenContent( } } -@OptIn(ExperimentalMaterial3Api::class) +@OptIn(ExperimentalMaterial3Api::class, ExperimentalTime::class) @Composable internal fun InputForm( state: UploadIdUiState, diff --git a/feature/loan-account/src/commonMain/kotlin/org/mifos/mobile/feature/loanaccount/component/RepaymentPeriodCard.kt b/feature/loan-account/src/commonMain/kotlin/org/mifos/mobile/feature/loanaccount/component/RepaymentPeriodCard.kt index 72e426e88..ef9e2f5c7 100644 --- a/feature/loan-account/src/commonMain/kotlin/org/mifos/mobile/feature/loanaccount/component/RepaymentPeriodCard.kt +++ b/feature/loan-account/src/commonMain/kotlin/org/mifos/mobile/feature/loanaccount/component/RepaymentPeriodCard.kt @@ -31,7 +31,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp -import kotlinx.datetime.Clock import mifos_mobile.feature.loan_account.generated.resources.Res import mifos_mobile.feature.loan_account.generated.resources.feature_loan_due import mifos_mobile.feature.loan_account.generated.resources.feature_loan_installment_number @@ -47,7 +46,10 @@ import org.mifos.mobile.core.designsystem.theme.AppColors import org.mifos.mobile.core.designsystem.theme.DesignToken import org.mifos.mobile.core.designsystem.theme.MifosTypography import org.mifos.mobile.core.model.entity.accounts.loan.Periods +import kotlin.time.Clock +import kotlin.time.ExperimentalTime +@OptIn(ExperimentalTime::class) @Composable fun RepaymentScheduleItem( period: Periods, diff --git a/feature/loan-application/src/commonMain/kotlin/org/mifos/mobile/feature/loan/application/loanApplication/LoanApplyScreen.kt b/feature/loan-application/src/commonMain/kotlin/org/mifos/mobile/feature/loan/application/loanApplication/LoanApplyScreen.kt index 48b090ef7..17f5ab6f8 100644 --- a/feature/loan-application/src/commonMain/kotlin/org/mifos/mobile/feature/loan/application/loanApplication/LoanApplyScreen.kt +++ b/feature/loan-application/src/commonMain/kotlin/org/mifos/mobile/feature/loan/application/loanApplication/LoanApplyScreen.kt @@ -36,7 +36,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardType import androidx.lifecycle.compose.collectAsStateWithLifecycle -import kotlinx.datetime.Clock import mifos_mobile.feature.loan_application.generated.resources.Res import mifos_mobile.feature.loan_application.generated.resources.feature_apply_loan_button_cancel import mifos_mobile.feature.loan_application.generated.resources.feature_apply_loan_button_continue @@ -65,6 +64,8 @@ import org.mifos.mobile.core.ui.component.MifosPoweredCard import org.mifos.mobile.core.ui.component.MifosProgressIndicator import org.mifos.mobile.core.ui.utils.EventsEffect import org.mifos.mobile.core.ui.utils.ScreenUiState +import kotlin.time.Clock +import kotlin.time.ExperimentalTime @Composable internal fun LoanApplyScreen( @@ -136,7 +137,7 @@ internal fun LoanAccountDialog( } } -@OptIn(ExperimentalMaterial3Api::class) +@OptIn(ExperimentalMaterial3Api::class, ExperimentalTime::class) @Composable internal fun LoanAccountContent( state: LoanApplicationState, diff --git a/feature/loan-application/src/commonMain/kotlin/org/mifos/mobile/feature/loan/application/loanApplication/LoanApplyViewModel.kt b/feature/loan-application/src/commonMain/kotlin/org/mifos/mobile/feature/loan/application/loanApplication/LoanApplyViewModel.kt index b1ca5d190..c818040c4 100644 --- a/feature/loan-application/src/commonMain/kotlin/org/mifos/mobile/feature/loan/application/loanApplication/LoanApplyViewModel.kt +++ b/feature/loan-application/src/commonMain/kotlin/org/mifos/mobile/feature/loan/application/loanApplication/LoanApplyViewModel.kt @@ -20,7 +20,6 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -import kotlinx.datetime.Clock import mifos_mobile.feature.loan_application.generated.resources.Res import mifos_mobile.feature.loan_application.generated.resources.feature_apply_loan_error_amount_too_large import mifos_mobile.feature.loan_application.generated.resources.feature_apply_loan_error_amount_too_small @@ -48,6 +47,8 @@ import org.mifos.mobile.core.ui.utils.AmountValidationResult import org.mifos.mobile.core.ui.utils.BaseViewModel import org.mifos.mobile.core.ui.utils.ScreenUiState import org.mifos.mobile.core.ui.utils.ValidationHelper +import kotlin.time.Clock +import kotlin.time.ExperimentalTime import org.mifos.mobile.core.model.entity.Currency as ModelCurrency /** @@ -675,6 +676,7 @@ internal data class LoanApplicationState( /** * The current time in milliseconds, used for date pickers. */ + @OptIn(ExperimentalTime::class) val currentDate: Long get() = Clock.System.now().toEpochMilliseconds() @@ -714,6 +716,7 @@ internal data class LoanApplicationState( * The effective submission date, which is the later of today's date or the * client's activation date. */ + @OptIn(ExperimentalTime::class) val submittedOnDate: String get() { val todayMillis = Clock.System.now().toEpochMilliseconds() diff --git a/feature/savings-application/src/commonMain/kotlin/org/mifos/mobile/feature/savings/application/fillApplication/FillApplicationViewModel.kt b/feature/savings-application/src/commonMain/kotlin/org/mifos/mobile/feature/savings/application/fillApplication/FillApplicationViewModel.kt index c4db091da..bb3e15ad4 100644 --- a/feature/savings-application/src/commonMain/kotlin/org/mifos/mobile/feature/savings/application/fillApplication/FillApplicationViewModel.kt +++ b/feature/savings-application/src/commonMain/kotlin/org/mifos/mobile/feature/savings/application/fillApplication/FillApplicationViewModel.kt @@ -18,7 +18,6 @@ import kotlinx.coroutines.delay import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -import kotlinx.datetime.Clock import kotlinx.io.IOException import mifos_mobile.feature.savings_application.generated.resources.Res import mifos_mobile.feature.savings_application.generated.resources.feature_apply_savings_error_amount_too_large @@ -56,6 +55,8 @@ import org.mifos.mobile.core.ui.utils.ScreenUiState import org.mifos.mobile.core.ui.utils.ValidationHelper import org.mifos.mobile.core.ui.utils.observe import kotlin.String +import kotlin.time.Clock +import kotlin.time.ExperimentalTime import org.mifos.mobile.core.model.entity.Currency as ModelCurrency private const val DEFAULT_DECIMAL_PLACES = 2 @@ -723,6 +724,7 @@ internal data class SavingsApplicationState( /** * The current date as a formatted string. */ + @OptIn(ExperimentalTime::class) val currentDate: String get() = DateHelper.getDateMonthYearString(Clock.System.now().toEpochMilliseconds()) diff --git a/feature/savings-application/src/commonMain/kotlin/org/mifos/mobile/feature/savings/application/savingsApplication/SavingsApplyViewModel.kt b/feature/savings-application/src/commonMain/kotlin/org/mifos/mobile/feature/savings/application/savingsApplication/SavingsApplyViewModel.kt index df0f4a66d..5488b0394 100644 --- a/feature/savings-application/src/commonMain/kotlin/org/mifos/mobile/feature/savings/application/savingsApplication/SavingsApplyViewModel.kt +++ b/feature/savings-application/src/commonMain/kotlin/org/mifos/mobile/feature/savings/application/savingsApplication/SavingsApplyViewModel.kt @@ -18,7 +18,6 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -import kotlinx.datetime.Clock import kotlinx.io.IOException import mifos_mobile.feature.savings_application.generated.resources.Res import mifos_mobile.feature.savings_application.generated.resources.feature_apply_savings_error_product_empty @@ -38,6 +37,8 @@ import org.mifos.mobile.core.model.entity.templates.savings.SavingsAccountTempla import org.mifos.mobile.core.model.entity.templates.savings.SavingsProduct import org.mifos.mobile.core.ui.utils.BaseViewModel import org.mifos.mobile.core.ui.utils.ScreenUiState +import kotlin.time.Clock +import kotlin.time.ExperimentalTime /** * A `ViewModel` for the savings application screen, responsible for handling user input, @@ -588,6 +589,7 @@ internal data class SavingsApplicationState( id to name } + @OptIn(ExperimentalTime::class) val submittedOnDate: String get() { val todayMillis = Clock.System.now().toEpochMilliseconds() diff --git a/feature/share-application/src/commonMain/kotlin/org/mifos/mobile/feature/share/application/fillApplication/FillApplicationViewModel.kt b/feature/share-application/src/commonMain/kotlin/org/mifos/mobile/feature/share/application/fillApplication/FillApplicationViewModel.kt index 3edcf75fa..ed8970c09 100644 --- a/feature/share-application/src/commonMain/kotlin/org/mifos/mobile/feature/share/application/fillApplication/FillApplicationViewModel.kt +++ b/feature/share-application/src/commonMain/kotlin/org/mifos/mobile/feature/share/application/fillApplication/FillApplicationViewModel.kt @@ -19,7 +19,6 @@ import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -import kotlinx.datetime.Clock import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.InternalSerializationApi import mifos_mobile.feature.share_application.generated.resources.Res @@ -62,6 +61,8 @@ import org.mifos.mobile.core.ui.utils.ResultNavigator import org.mifos.mobile.core.ui.utils.ValidationHelper import org.mifos.mobile.core.ui.utils.observe import kotlin.String +import kotlin.time.Clock +import kotlin.time.ExperimentalTime import org.mifos.mobile.core.model.entity.Currency as ModelCurrency private const val DEFAULT_DECIMAL_PLACES = 2 @@ -818,6 +819,7 @@ internal data class ShareApplicationState( /** * The current date formatted as a string. */ + @OptIn(ExperimentalTime::class) val currentDate: String get() = DateHelper.getDateMonthYearString(Clock.System.now().toEpochMilliseconds()) diff --git a/feature/share-application/src/commonMain/kotlin/org/mifos/mobile/feature/share/application/shareApplication/ShareApplyViewModel.kt b/feature/share-application/src/commonMain/kotlin/org/mifos/mobile/feature/share/application/shareApplication/ShareApplyViewModel.kt index a721d1813..d9064b12c 100644 --- a/feature/share-application/src/commonMain/kotlin/org/mifos/mobile/feature/share/application/shareApplication/ShareApplyViewModel.kt +++ b/feature/share-application/src/commonMain/kotlin/org/mifos/mobile/feature/share/application/shareApplication/ShareApplyViewModel.kt @@ -16,7 +16,6 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -import kotlinx.datetime.Clock import kotlinx.io.IOException import mifos_mobile.feature.share_application.generated.resources.Res import mifos_mobile.feature.share_application.generated.resources.feature_apply_share_error_server @@ -34,6 +33,8 @@ import org.mifos.mobile.core.model.entity.client.Client import org.mifos.mobile.core.model.entity.templates.savings.SavingsAccountTemplate import org.mifos.mobile.core.model.entity.templates.shares.ShareProduct import org.mifos.mobile.core.ui.utils.BaseViewModel +import kotlin.time.Clock +import kotlin.time.ExperimentalTime /** * `ViewModel` for the savings application screen, responsible for handling user input, @@ -398,6 +399,7 @@ internal data class ShareApplicationState( } .toMap() + @OptIn(ExperimentalTime::class) val submittedOnDate: String get() { val todayMillis = Clock.System.now().toEpochMilliseconds() diff --git a/gradle.properties b/gradle.properties index 78a3d9e35..f207670f8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -47,4 +47,6 @@ kotlin.code.style=official android.defaults.buildfeatures.resvalues=false android.defaults.buildfeatures.shaders=false org.jetbrains.compose.experimental.jscanvas.enabled=true -kotlin.native.ignoreDisabledTargets=true \ No newline at end of file +kotlin.native.ignoreDisabledTargets=true + +org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4d5c3e3ab..a236c91ab 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,29 +1,29 @@ [versions] -accompanistVersion = "0.37.3" +accompanistVersion = "0.36.0" activityVersion = "1.9.3" -androidDesugarJdkLibs = "2.1.4" -androidGradlePlugin = "8.7.3" -androidTools = "31.7.3" +androidDesugarJdkLibs = "2.1.5" +androidGradlePlugin = "8.10.0" +androidTools = "31.10.0" androidx-test-ext-junit = "1.2.1" -androidxActivity = "1.9.3" -androidxComposeBom = "2024.12.01" +androidxActivity = "1.10.1" +androidxComposeBom = "2025.06.01" androidxComposeCompiler = "1.5.15" androidxCoreSplashscreen = "1.0.1" androidxEspresso = "3.6.1" -androidxLifecycle = "2.8.7" +androidxLifecycle = "2.9.2" androidxMetrics = "1.0.0-beta01" -androidxNavigation = "2.8.5" +androidxNavigation = "2.9.2" androidxProfileinstaller = "1.4.1" androidxTestRules = "1.6.1" -androidxTracing = "1.2.0" -appcompatVersion = "1.7.0" +androidxTracing = "1.3.0" +appcompatVersion = "1.7.1" androidxBrowser = "1.8.0" mlkit="17.3.0" guavaVersion = "33.3.1-android" cameraxVersion = "1.4.1" -coreKtx = "1.15.0" +coreKtx = "1.16.0" dependencyGuard = "0.5.0" -detekt = "1.23.7" +detekt = "1.23.8" easycropVersion = "0.1.1" firebaseBom = "33.7.0" firebaseCrashlyticsPlugin = "3.0.2" @@ -37,7 +37,7 @@ ktlint = "12.1.1" libphonenumberAndroidVersion = "8.13.35" lifecycleExtensionsVersion = "2.2.0" lifecycleLivedataKtxVersion = "2.8.7" -lifecycleVersion = "2.8.7" +lifecycleVersion = "2.9.2" material3 = "1.3.1" mockitoCoreVersion = "5.6.0" multidexVersion = "2.0.1" @@ -57,12 +57,12 @@ lottie = "6.6.7" compottie = "2.0.0-rc05" # Kotlin KMP Dependencies -kotlin = "2.1.0" +kotlin = "2.1.20" kotlinInject = "0.7.2" kotlinxCoroutines = "1.10.1" -kotlinxDatetime = "0.7.1-0.6.x-compat" +kotlinxDatetime = "0.6.2" kotlinxImmutable = "0.3.8" -kotlinxSerializationJson = "1.7.3" +kotlinxSerializationJson = "1.8.1" ksp = "2.1.20-2.0.1" # Ktor & Ktorfit @@ -81,20 +81,22 @@ backHandlerVersion = "2.5.0" multiplatformSettings = "1.3.0" mokoPermission = "0.19.1" qroseVersion = "1.0.1" -okioVersion = "3.15.0" + +okioVersion = "3.9.1" kermit = "2.0.6" fileKit = "0.10.0-beta04" -fileKitDialog = "0.10.0" +fileKitCompose = "0.8.8" wire = "5.0.0" zoomImage = "1.3.0" uiBackhandler = "1.8.2" # Jetbrains CMP windowsSizeClass = "0.5.0" +composeJB = "1.8.2" composeLifecycle = "2.9.1" composeNavigation = "2.9.0-beta03" jbCoreBundle = "1.0.1" -jbSavedState = "1.3.3" +jbSavedState = "1.3.1" gitLive = "2.1.0" material3adaptive = "1.1.2" @@ -203,7 +205,7 @@ zxing-core = { group = "com.google.zxing", name = "core", version.ref = "zxingVe jb-kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" } jb-kotlin-stdlib-js = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-js", version.ref = "kotlin" } jb-kotlin-dom = { group = "org.jetbrains.kotlin", name = "kotlin-dom-api-compat", version.ref = "kotlin" } -jb-composeRuntime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "compose-plugin" } +jb-composeRuntime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "composeJB" } jb-lifecycle-compose = { group = "org.jetbrains.androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "composeLifecycle" } jb-composeViewmodel = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "composeLifecycle" } jb-lifecycleViewmodel = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel", version.ref = "composeLifecycle" } @@ -276,9 +278,10 @@ compose-gradlePlugin = { group = "org.jetbrains.kotlin", name = "compose-compile squareup-okio = { group = "com.squareup.okio", name = "okio", version.ref = "okioVersion" } back-handler = { group = "com.arkivanov.essenty", name = "back-handler", version.ref = "backHandlerVersion" } filekit-core = { group = "io.github.vinceglb", name = "filekit-core", version.ref = "fileKit" } -filekit-compose = { group = "io.github.vinceglb", name = "filekit-compose", version.ref = "fileKit" } filekit-coil = { module = "io.github.vinceglb:filekit-coil", version.ref = "fileKit" } -filekit-dialog-compose = { group = "io.github.vinceglb", name = "filekit-dialogs-compose", version.ref = "fileKitDialog" } +filekit-dialog-compose = { group = "io.github.vinceglb", name = "filekit-dialogs-compose", version.ref = "fileKit" } +filekit-dialogs = { module = "io.github.vinceglb:filekit-dialogs", version.ref = "fileKit" } +filekit-compose = { group = "io.github.vinceglb", name = "filekit-compose", version.ref = "fileKitCompose" } qrose = { group = "io.github.alexzhirkevich", name="qrose", version.ref = "qroseVersion" } lottie-compose = { group = "com.airbnb.android", name = "lottie-compose", version.ref = "lottie" } compottie = { module = "io.github.alexzhirkevich:compottie", version.ref = "compottie" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f5e988661..b71b8dc73 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Oct 10 11:28:53 IST 2017 +#Sun Sep 07 08:57:15 BST 2025 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip