diff --git a/androidApp/build.gradle.kts b/androidApp/build.gradle.kts
index 53b677298..0ef096062 100644
--- a/androidApp/build.gradle.kts
+++ b/androidApp/build.gradle.kts
@@ -9,15 +9,6 @@
*/
import org.mifos.mobile.dynamicVersion
-/*
- * Copyright 2024 Mifos Initiative
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/.
- *
- * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
- */
plugins {
alias(libs.plugins.mifos.android.application)
alias(libs.plugins.mifos.android.application.compose)
@@ -84,7 +75,7 @@ dependencies {
implementation(projects.core.common)
implementation(projects.core.model)
implementation(projects.core.data)
- implementation(projects.core.datastore)
+ implementation(projects.core.database)
implementation(projects.core.ui)
implementation(projects.core.designsystem)
@@ -132,7 +123,6 @@ dependencies {
implementation(libs.androidx.profileinstaller)
implementation(libs.google.oss.licenses)
implementation(libs.androidx.multidex)
- implementation(libs.dbflow)
testImplementation(projects.core.testing)
testImplementation(libs.hilt.android.testing)
diff --git a/androidApp/dependencies/releaseRuntimeClasspath.tree.txt b/androidApp/dependencies/releaseRuntimeClasspath.tree.txt
index cba5bcc19..d37a3da71 100644
--- a/androidApp/dependencies/releaseRuntimeClasspath.tree.txt
+++ b/androidApp/dependencies/releaseRuntimeClasspath.tree.txt
@@ -1,132 +1,133 @@
-+--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20
++--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0
| +--- org.jetbrains:annotations:13.0 -> 23.0.0
-| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0 -> 2.0.20 (c)
+| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0 -> 2.1.0 (c)
| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 1.9.10 (c)
-| \--- org.jetbrains.kotlin:kotlin-stdlib-common:2.0.20 (c)
-+--- androidx.compose:compose-bom:2024.08.00
-| +--- androidx.compose.foundation:foundation:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.foundation:foundation-layout:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.material:material:1.6.8 (c)
-| +--- androidx.compose.material:material-icons-extended:1.6.8 (c)
-| +--- androidx.compose.material3:material3:1.2.1 (c)
-| +--- androidx.compose.runtime:runtime:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.ui:ui-tooling-preview:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.ui:ui-util:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.ui:ui:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.runtime:runtime-saveable:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.material3:material3-android:1.2.1 (c)
-| +--- androidx.compose.material:material-android:1.6.8 (c)
-| +--- androidx.compose.material:material-icons-extended-android:1.6.8 (c)
-| +--- androidx.compose.animation:animation:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.animation:animation-core:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.material:material-icons-core:1.6.8 (c)
-| +--- androidx.compose.material:material-ripple:1.6.8 (c)
-| +--- androidx.compose.ui:ui-graphics:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.ui:ui-text:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.foundation:foundation-layout-android:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.runtime:runtime-android:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.runtime:runtime-saveable-android:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.ui:ui-android:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.animation:animation-android:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.material:material-icons-core-android:1.6.8 (c)
-| +--- androidx.compose.material:material-ripple-android:1.6.8 (c)
-| +--- androidx.compose.ui:ui-unit:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.ui:ui-geometry:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.ui:ui-util-android:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.foundation:foundation-android:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.ui:ui-unit-android:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.ui:ui-graphics-android:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.ui:ui-text-android:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.ui:ui-tooling-preview-android:1.6.8 -> 1.7.0-rc01 (c)
-| +--- androidx.compose.ui:ui-geometry-android:1.6.8 -> 1.7.0-rc01 (c)
-| \--- androidx.compose.animation:animation-core-android:1.6.8 -> 1.7.0-rc01 (c)
-+--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01
-| \--- androidx.compose.ui:ui-tooling-preview-android:1.7.0-rc01
+| \--- org.jetbrains.kotlin:kotlin-stdlib-common:2.1.0 (c)
++--- androidx.compose:compose-bom:2024.12.01
+| +--- androidx.compose.foundation:foundation:1.7.6 (c)
+| +--- androidx.compose.foundation:foundation-layout:1.7.6 (c)
+| +--- androidx.compose.material:material:1.7.6 (c)
+| +--- androidx.compose.material:material-icons-extended:1.7.6 (c)
+| +--- androidx.compose.material3:material3:1.3.1 (c)
+| +--- androidx.compose.runtime:runtime:1.7.6 (c)
+| +--- androidx.compose.ui:ui-tooling-preview:1.7.6 (c)
+| +--- androidx.compose.ui:ui-util:1.7.6 (c)
+| +--- androidx.compose.ui:ui:1.7.6 (c)
+| +--- androidx.compose.runtime:runtime-saveable:1.7.6 (c)
+| +--- androidx.compose.material3:material3-android:1.3.1 (c)
+| +--- androidx.compose.material:material-android:1.7.6 (c)
+| +--- androidx.compose.foundation:foundation-android:1.7.6 (c)
+| +--- androidx.compose.foundation:foundation-layout-android:1.7.6 (c)
+| +--- androidx.compose.material:material-icons-extended-android:1.7.6 (c)
+| +--- androidx.compose.runtime:runtime-android:1.7.6 (c)
+| +--- androidx.compose.ui:ui-tooling-preview-android:1.7.6 (c)
+| +--- androidx.compose.ui:ui-util-android:1.7.6 (c)
+| +--- androidx.compose.animation:animation:1.7.6 (c)
+| +--- androidx.compose.ui:ui-android:1.7.6 (c)
+| +--- androidx.compose.runtime:runtime-saveable-android:1.7.6 (c)
+| +--- androidx.compose.animation:animation-core:1.7.6 (c)
+| +--- androidx.compose.material:material-icons-core:1.7.6 (c)
+| +--- androidx.compose.material:material-ripple:1.7.6 (c)
+| +--- androidx.compose.ui:ui-text:1.7.6 (c)
+| +--- androidx.compose.ui:ui-unit:1.7.6 (c)
+| +--- androidx.compose.animation:animation-android:1.7.6 (c)
+| +--- androidx.compose.animation:animation-core-android:1.7.6 (c)
+| +--- androidx.compose.material:material-ripple-android:1.7.6 (c)
+| +--- androidx.compose.ui:ui-text-android:1.7.6 (c)
+| +--- androidx.compose.material:material-icons-core-android:1.7.6 (c)
+| +--- androidx.compose.ui:ui-unit-android:1.7.6 (c)
+| +--- androidx.compose.ui:ui-geometry:1.7.6 (c)
+| +--- androidx.compose.ui:ui-graphics:1.7.6 (c)
+| +--- androidx.compose.ui:ui-geometry-android:1.7.6 (c)
+| \--- androidx.compose.ui:ui-graphics-android:1.7.6 (c)
++--- androidx.compose.ui:ui-tooling-preview -> 1.7.6
+| \--- androidx.compose.ui:ui-tooling-preview-android:1.7.6
| +--- androidx.annotation:annotation:1.2.0 -> 1.8.1
| | \--- androidx.annotation:annotation-jvm:1.8.1
-| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.0.20 (*)
-| +--- androidx.compose.runtime:runtime:1.7.0-rc01
-| | \--- androidx.compose.runtime:runtime-android:1.7.0-rc01
-| | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1
-| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.0.20 (*)
-| | +--- androidx.collection:collection:1.4.0 -> 1.4.2
-| | | \--- androidx.collection:collection-jvm:1.4.2
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.1.0 (*)
+| +--- androidx.compose.runtime:runtime:1.7.6
+| | \--- androidx.compose.runtime:runtime-android:1.7.6
+| | +--- androidx.annotation:annotation-experimental:1.4.1
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.1.0 (*)
+| | +--- androidx.collection:collection:1.4.4
+| | | \--- androidx.collection:collection-jvm:1.4.4
| | | +--- androidx.annotation:annotation:1.8.1 (*)
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | +--- androidx.collection:collection-ktx:1.4.2 (c)
-| | | \--- androidx.collection:collection-ktx:1.3.0 -> 1.4.2 (c)
-| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.8.0
-| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0
-| | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | +--- androidx.collection:collection-ktx:1.4.4 (c)
+| | | \--- androidx.collection:collection-ktx:1.3.0 -> 1.4.4 (c)
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.10.1
+| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1
+| | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1
| | | | +--- org.jetbrains:annotations:23.0.0
-| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0
-| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.0 (c)
-| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0 (c)
-| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 (c)
-| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.8.0 (c)
-| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.0 (c)
-| | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0 (c)
-| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.0.20 (*)
-| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0 (*)
-| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.0.20 (*)
-| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.8.0 (*)
-| | \--- androidx.compose.runtime:runtime-saveable:1.7.0-rc01 (c)
-| +--- androidx.compose.ui:ui:1.7.0-rc01 (c)
-| +--- androidx.compose.ui:ui-geometry:1.7.0-rc01 (c)
-| +--- androidx.compose.ui:ui-graphics:1.7.0-rc01 (c)
-| +--- androidx.compose.ui:ui-text:1.7.0-rc01 (c)
-| +--- androidx.compose.ui:ui-unit:1.7.0-rc01 (c)
-| \--- androidx.compose.ui:ui-util:1.7.0-rc01 (c)
-+--- com.google.dagger:hilt-android:2.52
-| +--- com.google.dagger:dagger:2.52
+| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1
+| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.1 (c)
+| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1 (c)
+| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (c)
+| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.1 (c)
+| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.1 (c)
+| | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.10.1 (c)
+| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1 (*)
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.1 (*)
+| | \--- androidx.compose.runtime:runtime-saveable:1.7.6 (c)
+| +--- androidx.compose.ui:ui:1.7.6 (c)
+| +--- androidx.compose.ui:ui-text:1.7.6 (c)
+| +--- androidx.compose.ui:ui-unit:1.7.6 (c)
+| +--- androidx.compose.ui:ui-util:1.7.6 (c)
+| +--- androidx.compose.ui:ui-geometry:1.7.6 (c)
+| \--- androidx.compose.ui:ui-graphics:1.7.6 (c)
++--- com.google.dagger:hilt-android:2.54
+| +--- com.google.dagger:dagger:2.54
| | +--- jakarta.inject:jakarta.inject-api:2.0.1
-| | \--- javax.inject:javax.inject:1
-| +--- com.google.dagger:dagger-lint-aar:2.52
-| +--- com.google.dagger:hilt-core:2.52
-| | +--- com.google.dagger:dagger:2.52 (*)
+| | +--- javax.inject:javax.inject:1
+| | \--- org.jspecify:jspecify:1.0.0
+| +--- com.google.dagger:dagger-lint-aar:2.54
+| +--- com.google.dagger:hilt-core:2.54
+| | +--- com.google.dagger:dagger:2.54 (*)
| | +--- com.google.code.findbugs:jsr305:3.0.2
| | \--- javax.inject:javax.inject:1
| +--- com.google.code.findbugs:jsr305:3.0.2
-| +--- androidx.activity:activity:1.5.1 -> 1.9.1
+| +--- androidx.activity:activity:1.5.1 -> 1.9.3
| | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
-| | +--- androidx.collection:collection:1.0.0 -> 1.4.2 (*)
-| | +--- androidx.core:core:1.13.0 -> 1.13.1
-| | | +--- androidx.annotation:annotation:1.6.0 -> 1.8.1 (*)
-| | | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*)
-| | | +--- androidx.collection:collection:1.0.0 -> 1.4.2 (*)
+| | +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*)
+| | +--- androidx.core:core:1.13.0 -> 1.15.0
+| | | +--- androidx.annotation:annotation:1.8.1 (*)
+| | | +--- androidx.annotation:annotation-experimental:1.4.1 (*)
+| | | +--- androidx.collection:collection:1.4.2 -> 1.4.4 (*)
| | | +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0
| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
| | | | \--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
| | | +--- androidx.interpolator:interpolator:1.0.0
| | | | \--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*)
-| | | +--- androidx.lifecycle:lifecycle-runtime:2.6.2 -> 2.8.4
-| | | | \--- androidx.lifecycle:lifecycle-runtime-android:2.8.4
+| | | +--- androidx.lifecycle:lifecycle-runtime:2.6.2 -> 2.8.7
+| | | | \--- androidx.lifecycle:lifecycle-runtime-android:2.8.7
| | | | +--- androidx.annotation:annotation:1.8.0 -> 1.8.1 (*)
| | | | +--- androidx.arch.core:core-common:2.2.0
| | | | | \--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
| | | | +--- androidx.arch.core:core-runtime:2.2.0
| | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
| | | | | \--- androidx.arch.core:core-common:2.2.0 (*)
-| | | | +--- androidx.lifecycle:lifecycle-common:2.8.4
-| | | | | \--- androidx.lifecycle:lifecycle-common-jvm:2.8.4
-| | | | | +--- androidx.annotation:annotation:1.8.0 -> 1.8.1 (*)
-| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.8.0 (*)
-| | | | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-livedata:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-process:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4 (c)
-| | | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.4 (c)
-| | | | +--- androidx.profileinstaller:profileinstaller:1.3.1
-| | | | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*)
+| | | | +--- androidx.lifecycle:lifecycle-common:2.8.7
+| | | | | \--- androidx.lifecycle:lifecycle-common-jvm:2.8.7
+| | | | | +--- androidx.annotation:annotation:1.8.1 (*)
+| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.1 (*)
+| | | | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-process:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7 (c)
+| | | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c)
+| | | | +--- androidx.profileinstaller:profileinstaller:1.3.1 -> 1.4.1
+| | | | | +--- androidx.annotation:annotation:1.8.1 (*)
| | | | | +--- androidx.concurrent:concurrent-futures:1.1.0 (*)
| | | | | +--- androidx.startup:startup-runtime:1.1.1
| | | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
@@ -134,181 +135,182 @@
| | | | | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*)
| | | | | | \--- androidx.tracing:tracing-ktx:1.2.0 (c)
| | | | | \--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
-| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.8.0 (*)
-| | | | +--- androidx.lifecycle:lifecycle-common:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-livedata:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-process:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4 (c)
-| | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.4 (c)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.10.1 (*)
+| | | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-process:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7 (c)
+| | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c)
+| | | +--- androidx.tracing:tracing:1.2.0 (*)
| | | +--- androidx.versionedparcelable:versionedparcelable:1.1.1
| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
-| | | | \--- androidx.collection:collection:1.0.0 -> 1.4.2 (*)
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | \--- androidx.core:core-ktx:1.13.1 (c)
-| | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.8.4 (*)
-| | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.8.4
-| | | \--- androidx.lifecycle:lifecycle-viewmodel-android:2.8.4
+| | | | \--- androidx.collection:collection:1.0.0 -> 1.4.4 (*)
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | \--- androidx.core:core-ktx:1.15.0 (c)
+| | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.8.7 (*)
+| | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.8.7
+| | | \--- androidx.lifecycle:lifecycle-viewmodel-android:2.8.7
| | | +--- androidx.annotation:annotation:1.8.0 -> 1.8.1 (*)
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.8.0 (*)
-| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.8.0 (*)
-| | | +--- androidx.lifecycle:lifecycle-common:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-livedata:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-process:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-runtime:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4 (c)
-| | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.4 (c)
-| | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.1 -> 2.8.4
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.10.1 (*)
+| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.1 (*)
+| | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-process:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7 (c)
+| | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c)
+| | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.1 -> 2.8.7
| | | +--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*)
-| | | +--- androidx.core:core-ktx:1.2.0 -> 1.13.1
-| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
-| | | | +--- androidx.core:core:1.13.1 (*)
-| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | | \--- androidx.core:core:1.13.1 (c)
-| | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.4
+| | | +--- androidx.core:core-ktx:1.2.0 -> 1.15.0
+| | | | +--- androidx.annotation:annotation:1.8.1 (*)
+| | | | +--- androidx.core:core:1.15.0 (*)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | \--- androidx.core:core:1.15.0 (c)
+| | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.7
| | | | +--- androidx.arch.core:core-common:2.2.0 (*)
| | | | +--- androidx.arch.core:core-runtime:2.2.0 (*)
-| | | | +--- androidx.lifecycle:lifecycle-common:2.8.4 (*)
-| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | | +--- androidx.lifecycle:lifecycle-common:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-livedata:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-process:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4 (c)
-| | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.4 (*)
+| | | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (*)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-process:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7 (c)
+| | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (*)
| | | +--- androidx.savedstate:savedstate:1.2.1
| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
| | | | +--- androidx.arch.core:core-common:2.1.0 -> 2.2.0 (*)
-| | | | +--- androidx.lifecycle:lifecycle-common:2.6.1 -> 2.8.4 (*)
-| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.10 -> 2.0.20 (*)
+| | | | +--- androidx.lifecycle:lifecycle-common:2.6.1 -> 2.8.7 (*)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.10 -> 2.1.0 (*)
| | | | \--- androidx.savedstate:savedstate-ktx:1.2.1 (c)
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.8.0 (*)
-| | | +--- androidx.lifecycle:lifecycle-common:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-livedata:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-process:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-runtime:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (c)
-| | | \--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4 (c)
-| | +--- androidx.profileinstaller:profileinstaller:1.3.1 (*)
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.10.1 (*)
+| | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-process:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (c)
+| | | \--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7 (c)
+| | +--- androidx.profileinstaller:profileinstaller:1.3.1 -> 1.4.1 (*)
| | +--- androidx.savedstate:savedstate:1.2.1 (*)
| | +--- androidx.tracing:tracing:1.0.0 -> 1.2.0 (*)
-| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | +--- androidx.activity:activity-compose:1.9.1 (c)
-| | \--- androidx.activity:activity-ktx:1.9.1 (c)
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | +--- androidx.activity:activity-compose:1.9.3 (c)
+| | \--- androidx.activity:activity-ktx:1.9.3 (c)
| +--- androidx.annotation:annotation:1.3.0 -> 1.8.1 (*)
| +--- androidx.annotation:annotation-experimental:1.3.1 -> 1.4.1 (*)
-| +--- androidx.fragment:fragment:1.5.1 -> 1.7.1
-| | +--- androidx.activity:activity:1.8.1 -> 1.9.1 (*)
+| +--- androidx.fragment:fragment:1.5.1 -> 1.8.3
+| | +--- androidx.activity:activity:1.8.1 -> 1.9.3 (*)
| | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
| | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*)
-| | +--- androidx.collection:collection:1.1.0 -> 1.4.2 (*)
-| | +--- androidx.core:core-ktx:1.2.0 -> 1.13.1 (*)
-| | +--- androidx.lifecycle:lifecycle-livedata-core:2.6.1 -> 2.8.4 (*)
-| | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.8.4 (*)
-| | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.8.4 (*)
-| | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.1 -> 2.8.4 (*)
+| | +--- androidx.collection:collection:1.1.0 -> 1.4.4 (*)
+| | +--- androidx.core:core-ktx:1.2.0 -> 1.15.0 (*)
+| | +--- androidx.lifecycle:lifecycle-livedata-core:2.6.1 -> 2.8.7 (*)
+| | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.8.7 (*)
+| | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.8.7 (*)
+| | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.1 -> 2.8.7 (*)
| | +--- androidx.loader:loader:1.0.0
| | | +--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*)
-| | | +--- androidx.core:core:1.0.0 -> 1.13.1 (*)
-| | | +--- androidx.lifecycle:lifecycle-livedata:2.0.0 -> 2.8.4
+| | | +--- androidx.core:core:1.0.0 -> 1.15.0 (*)
+| | | +--- androidx.lifecycle:lifecycle-livedata:2.0.0 -> 2.8.7
| | | | +--- androidx.arch.core:core-common:2.2.0 (*)
| | | | +--- androidx.arch.core:core-runtime:2.2.0 (*)
-| | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.4 (*)
-| | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.4
-| | | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.4 (*)
-| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | | | +--- androidx.lifecycle:lifecycle-common:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-livedata:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-process:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (c)
-| | | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4 (c)
-| | | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.4 (c)
-| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.8.0 (*)
-| | | | +--- androidx.lifecycle:lifecycle-common:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-process:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4 (c)
-| | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.4 (c)
-| | | \--- androidx.lifecycle:lifecycle-viewmodel:2.0.0 -> 2.8.4 (*)
-| | +--- androidx.profileinstaller:profileinstaller:1.3.1 (*)
+| | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.7 (*)
+| | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7
+| | | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.7 (*)
+| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-process:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (c)
+| | | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7 (c)
+| | | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.1 (*)
+| | | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-process:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7 (c)
+| | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c)
+| | | \--- androidx.lifecycle:lifecycle-viewmodel:2.0.0 -> 2.8.7 (*)
+| | +--- androidx.profileinstaller:profileinstaller:1.3.1 -> 1.4.1 (*)
| | +--- androidx.savedstate:savedstate:1.2.1 (*)
| | +--- androidx.viewpager:viewpager:1.0.0
| | | +--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*)
-| | | +--- androidx.core:core:1.0.0 -> 1.13.1 (*)
+| | | +--- androidx.core:core:1.0.0 -> 1.15.0 (*)
| | | \--- androidx.customview:customview:1.0.0
| | | +--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*)
-| | | \--- androidx.core:core:1.0.0 -> 1.13.1 (*)
-| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | \--- androidx.fragment:fragment-ktx:1.7.1 (c)
-| +--- androidx.lifecycle:lifecycle-common:2.5.1 -> 2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel:2.5.1 -> 2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.5.1 -> 2.8.4 (*)
+| | | \--- androidx.core:core:1.0.0 -> 1.15.0 (*)
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | \--- androidx.fragment:fragment-ktx:1.8.3 (c)
+| +--- androidx.lifecycle:lifecycle-common:2.5.1 -> 2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel:2.5.1 -> 2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.5.1 -> 2.8.7 (*)
| +--- androidx.savedstate:savedstate:1.2.0 -> 1.2.1 (*)
| +--- javax.inject:javax.inject:1
-| \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*)
-+--- com.google.firebase:firebase-bom:33.2.0
-| +--- com.google.firebase:firebase-perf-ktx:21.0.1 (c)
-| +--- com.google.firebase:firebase-crashlytics-ktx:19.0.3 (c)
-| +--- com.google.firebase:firebase-analytics-ktx:22.1.0 (c)
-| +--- com.google.firebase:firebase-messaging-ktx:24.0.1 (c)
-| +--- com.google.firebase:firebase-perf:21.0.1 (c)
+| \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.1.0 (*)
++--- com.google.firebase:firebase-bom:33.7.0
+| +--- com.google.firebase:firebase-perf-ktx:21.0.3 (c)
+| +--- com.google.firebase:firebase-crashlytics-ktx:19.3.0 (c)
+| +--- com.google.firebase:firebase-analytics-ktx:22.1.2 (c)
+| +--- com.google.firebase:firebase-messaging-ktx:24.1.0 (c)
+| +--- com.google.firebase:firebase-perf:21.0.3 (c)
| +--- com.google.firebase:firebase-common:21.0.0 (c)
| +--- com.google.firebase:firebase-common-ktx:21.0.0 (c)
-| +--- com.google.firebase:firebase-crashlytics:19.0.3 (c)
-| +--- com.google.firebase:firebase-analytics:22.1.0 (c)
-| +--- com.google.firebase:firebase-messaging:24.0.1 (c)
-| +--- com.google.firebase:firebase-config:22.0.0 (c)
+| +--- com.google.firebase:firebase-crashlytics:19.3.0 (c)
+| +--- com.google.firebase:firebase-analytics:22.1.2 (c)
+| +--- com.google.firebase:firebase-messaging:24.1.0 (c)
+| +--- com.google.firebase:firebase-config:22.0.1 (c)
| +--- com.google.firebase:firebase-installations:18.0.0 (c)
| \--- com.google.firebase:firebase-encoders:17.0.0 (c)
-+--- com.google.firebase:firebase-analytics-ktx -> 22.1.0
-| +--- com.google.firebase:firebase-analytics:22.1.0
-| | +--- com.google.android.gms:play-services-measurement:22.1.0
-| | | +--- androidx.collection:collection:1.0.0 -> 1.4.2 (*)
++--- com.google.firebase:firebase-analytics-ktx -> 22.1.2
+| +--- com.google.firebase:firebase-analytics:22.1.2
+| | +--- com.google.android.gms:play-services-measurement:22.1.2
+| | | +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*)
| | | +--- androidx.legacy:legacy-support-core-utils:1.0.0
| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*)
-| | | | +--- androidx.core:core:1.0.0 -> 1.13.1 (*)
+| | | | +--- androidx.core:core:1.0.0 -> 1.15.0 (*)
| | | | +--- androidx.documentfile:documentfile:1.0.0
| | | | | \--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*)
| | | | +--- androidx.loader:loader:1.0.0 (*)
@@ -318,25 +320,25 @@
| | | | \--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*)
| | | +--- com.google.android.gms:play-services-ads-identifier:18.0.0
| | | | \--- com.google.android.gms:play-services-basement:18.0.0 -> 18.4.0
-| | | | +--- androidx.collection:collection:1.0.0 -> 1.4.2 (*)
-| | | | +--- androidx.core:core:1.2.0 -> 1.13.1 (*)
-| | | | \--- androidx.fragment:fragment:1.1.0 -> 1.7.1 (*)
+| | | | +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*)
+| | | | +--- androidx.core:core:1.2.0 -> 1.15.0 (*)
+| | | | \--- androidx.fragment:fragment:1.1.0 -> 1.8.3 (*)
| | | +--- com.google.android.gms:play-services-basement:18.4.0 (*)
-| | | +--- com.google.android.gms:play-services-measurement-base:22.1.0
+| | | +--- com.google.android.gms:play-services-measurement-base:22.1.2
| | | | \--- com.google.android.gms:play-services-basement:18.4.0 (*)
-| | | +--- com.google.android.gms:play-services-measurement-impl:22.1.0
-| | | | +--- androidx.collection:collection:1.0.0 -> 1.4.2 (*)
-| | | | +--- androidx.core:core:1.9.0 -> 1.13.1 (*)
+| | | +--- com.google.android.gms:play-services-measurement-impl:22.1.2
+| | | | +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*)
+| | | | +--- androidx.core:core:1.9.0 -> 1.15.0 (*)
| | | | +--- androidx.privacysandbox.ads:ads-adservices:1.0.0-beta05
| | | | | +--- androidx.annotation:annotation:1.6.0 -> 1.8.1 (*)
-| | | | | +--- androidx.core:core-ktx:1.8.0 -> 1.13.1 (*)
-| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.21 -> 2.0.20 (*)
-| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1 -> 1.8.0 (*)
+| | | | | +--- androidx.core:core-ktx:1.8.0 -> 1.15.0 (*)
+| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.21 -> 2.1.0 (*)
+| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1 -> 1.10.1 (*)
| | | | | \--- androidx.privacysandbox.ads:ads-adservices-java:1.0.0-beta05 (c)
| | | | +--- androidx.privacysandbox.ads:ads-adservices-java:1.0.0-beta05
| | | | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*)
| | | | | +--- androidx.concurrent:concurrent-futures:1.1.0 (*)
-| | | | | +--- androidx.core:core-ktx:1.8.0 -> 1.13.1 (*)
+| | | | | +--- androidx.core:core-ktx:1.8.0 -> 1.15.0 (*)
| | | | | +--- androidx.privacysandbox.ads:ads-adservices:1.0.0-beta05 (*)
| | | | | +--- com.google.guava:guava:31.1-android
| | | | | | +--- com.google.guava:failureaccess:1.0.1
@@ -346,32 +348,39 @@
| | | | | | +--- com.google.errorprone:error_prone_annotations:2.11.0 -> 2.26.0
| | | | | | \--- com.google.j2objc:j2objc-annotations:1.3
| | | | | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
-| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.21 -> 2.0.20 (*)
-| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1 -> 1.8.0 (*)
+| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.21 -> 2.1.0 (*)
+| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1 -> 1.10.1 (*)
| | | | | \--- androidx.privacysandbox.ads:ads-adservices:1.0.0-beta05 (c)
| | | | +--- com.google.android.gms:play-services-ads-identifier:18.0.0 (*)
+| | | | +--- com.google.android.gms:play-services-base:18.5.0
+| | | | | +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*)
+| | | | | +--- androidx.core:core:1.2.0 -> 1.15.0 (*)
+| | | | | +--- androidx.fragment:fragment:1.0.0 -> 1.8.3 (*)
+| | | | | +--- com.google.android.gms:play-services-basement:18.4.0 (*)
+| | | | | \--- com.google.android.gms:play-services-tasks:18.2.0
+| | | | | \--- com.google.android.gms:play-services-basement:18.4.0 (*)
| | | | +--- com.google.android.gms:play-services-basement:18.4.0 (*)
-| | | | +--- com.google.android.gms:play-services-measurement-base:22.1.0 (*)
+| | | | +--- com.google.android.gms:play-services-measurement-base:22.1.2 (*)
| | | | +--- com.google.android.gms:play-services-stats:17.0.2
| | | | | +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
| | | | | \--- com.google.android.gms:play-services-basement:18.0.0 -> 18.4.0 (*)
+| | | | +--- com.google.android.gms:play-services-tasks:18.2.0 (*)
| | | | \--- com.google.guava:guava:31.1-android (*)
| | | \--- com.google.android.gms:play-services-stats:17.0.2 (*)
-| | +--- com.google.android.gms:play-services-measurement-api:22.1.0
+| | +--- com.google.android.gms:play-services-measurement-api:22.1.2
| | | +--- com.google.android.gms:play-services-ads-identifier:18.0.0 (*)
| | | +--- com.google.android.gms:play-services-basement:18.4.0 (*)
-| | | +--- com.google.android.gms:play-services-measurement-base:22.1.0 (*)
-| | | +--- com.google.android.gms:play-services-measurement-sdk-api:22.1.0
+| | | +--- com.google.android.gms:play-services-measurement-base:22.1.2 (*)
+| | | +--- com.google.android.gms:play-services-measurement-sdk-api:22.1.2
| | | | +--- com.google.android.gms:play-services-basement:18.4.0 (*)
-| | | | \--- com.google.android.gms:play-services-measurement-base:22.1.0 (*)
-| | | +--- com.google.android.gms:play-services-tasks:18.2.0
-| | | | \--- com.google.android.gms:play-services-basement:18.4.0 (*)
+| | | | \--- com.google.android.gms:play-services-measurement-base:22.1.2 (*)
+| | | +--- com.google.android.gms:play-services-tasks:18.2.0 (*)
| | | +--- com.google.firebase:firebase-common:21.0.0
-| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.6.4 -> 1.8.0
-| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 (*)
-| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0 (*)
+| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.6.4 -> 1.10.1
+| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1 (*)
| | | | | +--- com.google.android.gms:play-services-tasks:16.0.1 -> 18.2.0 (*)
-| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.0.20 (*)
+| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
| | | | +--- com.google.firebase:firebase-components:18.0.0
| | | | | +--- com.google.firebase:firebase-annotations:16.2.0
| | | | | | \--- javax.inject:javax.inject:1
@@ -380,15 +389,15 @@
| | | | +--- com.google.firebase:firebase-annotations:16.2.0 (*)
| | | | +--- androidx.annotation:annotation:1.5.0 -> 1.8.1 (*)
| | | | +--- androidx.concurrent:concurrent-futures:1.1.0 (*)
-| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
| | | | +--- com.google.android.gms:play-services-basement:18.3.0 -> 18.4.0 (*)
| | | | \--- com.google.android.gms:play-services-tasks:18.1.0 -> 18.2.0 (*)
| | | +--- com.google.firebase:firebase-common-ktx:21.0.0
| | | | +--- com.google.firebase:firebase-common:21.0.0 (*)
| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 -> 1.9.10
-| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.10 -> 2.0.20 (*)
-| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.10 -> 2.0.20
-| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
+| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.10 -> 2.1.0 (*)
+| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.10 -> 2.1.0
+| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
| | | | +--- com.google.firebase:firebase-components:18.0.0 (*)
| | | | \--- com.google.firebase:firebase-annotations:16.2.0 (*)
| | | +--- com.google.firebase:firebase-components:18.0.0 (*)
@@ -401,32 +410,32 @@
| | | | +--- com.google.firebase:firebase-installations-interop:17.1.1 -> 17.2.0
| | | | | +--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.2.0 (*)
| | | | | \--- com.google.firebase:firebase-annotations:16.2.0 (*)
-| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
+| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
| | | +--- com.google.firebase:firebase-installations-interop:17.0.0 -> 17.2.0 (*)
| | | +--- com.google.firebase:firebase-measurement-connector:19.0.0 -> 20.0.1
| | | | +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.4.0 (*)
| | | | \--- com.google.firebase:firebase-annotations:16.0.0 -> 16.2.0 (*)
| | | +--- com.google.guava:guava:31.1-android (*)
-| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.0.20 (*)
-| | \--- com.google.android.gms:play-services-measurement-sdk:22.1.0
-| | +--- androidx.collection:collection:1.0.0 -> 1.4.2 (*)
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.1.0 (*)
+| | \--- com.google.android.gms:play-services-measurement-sdk:22.1.2
+| | +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*)
| | +--- com.google.android.gms:play-services-basement:18.4.0 (*)
-| | +--- com.google.android.gms:play-services-measurement-base:22.1.0 (*)
-| | \--- com.google.android.gms:play-services-measurement-impl:22.1.0 (*)
+| | +--- com.google.android.gms:play-services-measurement-base:22.1.2 (*)
+| | \--- com.google.android.gms:play-services-measurement-impl:22.1.2 (*)
| +--- com.google.firebase:firebase-common:21.0.0 (*)
| +--- com.google.firebase:firebase-common-ktx:21.0.0 (*)
| +--- com.google.firebase:firebase-components:18.0.0 (*)
-| \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.0.20 (*)
-+--- com.google.firebase:firebase-perf-ktx -> 21.0.1
-| +--- com.google.firebase:firebase-perf:21.0.1
+| \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.1.0 (*)
++--- com.google.firebase:firebase-perf-ktx -> 21.0.3
+| +--- com.google.firebase:firebase-perf:21.0.3
| | +--- com.google.firebase:firebase-annotations:16.2.0 (*)
| | +--- com.google.firebase:firebase-installations-interop:17.1.0 -> 17.2.0 (*)
| | +--- com.google.firebase:protolite-well-known-types:18.0.0
-| | | \--- com.google.protobuf:protobuf-javalite:3.14.0 -> 3.21.11
+| | | \--- com.google.protobuf:protobuf-javalite:3.14.0 -> 3.25.5
| | +--- com.google.firebase:firebase-common:21.0.0 (*)
| | +--- com.google.firebase:firebase-common-ktx:21.0.0 (*)
| | +--- com.google.firebase:firebase-components:18.0.0 (*)
-| | +--- com.google.firebase:firebase-config:21.5.0 -> 22.0.0
+| | +--- com.google.firebase:firebase-config:21.5.0 -> 22.0.1
| | | +--- com.google.firebase:firebase-config-interop:16.0.1
| | | | +--- com.google.firebase:firebase-encoders-json:18.0.1
| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10 -> 1.9.10 (*)
@@ -445,10 +454,10 @@
| | | +--- com.google.firebase:firebase-components:18.0.0 (*)
| | | +--- com.google.firebase:firebase-installations:17.2.0 -> 18.0.0 (*)
| | | +--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.2.0 (*)
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
| | | \--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
| | +--- com.google.firebase:firebase-installations:17.2.0 -> 18.0.0 (*)
-| | +--- com.google.firebase:firebase-sessions:2.0.0 -> 2.0.3
+| | +--- com.google.firebase:firebase-sessions:2.0.7
| | | +--- com.google.firebase:firebase-common:21.0.0 (*)
| | | +--- com.google.firebase:firebase-common-ktx:21.0.0 (*)
| | | +--- com.google.firebase:firebase-components:18.0.0 (*)
@@ -478,104 +487,104 @@
| | | | +--- com.google.android.datatransport:transport-runtime:3.2.0 -> 3.3.0 (*)
| | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 -> 1.9.10 (*)
| | | +--- androidx.datastore:datastore-preferences:1.0.0
-| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.10 -> 2.0.20 (*)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.10 -> 2.1.0 (*)
| | | | +--- androidx.datastore:datastore:1.0.0
-| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.10 -> 2.0.20 (*)
-| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0 -> 1.8.0 (*)
+| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.10 -> 2.1.0 (*)
+| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0 -> 1.10.1 (*)
| | | | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*)
| | | | | \--- androidx.datastore:datastore-core:1.0.0
-| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.10 -> 2.0.20 (*)
-| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0 -> 1.8.0 (*)
+| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.10 -> 2.1.0 (*)
+| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0 -> 1.10.1 (*)
| | | | | \--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
| | | | \--- androidx.datastore:datastore-preferences-core:1.0.0
-| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.10 -> 2.0.20 (*)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.10 -> 2.1.0 (*)
| | | | \--- androidx.datastore:datastore-core:1.0.0 (*)
| | | +--- com.google.android.datatransport:transport-api:3.2.0 (*)
| | | \--- androidx.annotation:annotation:1.5.0 -> 1.8.1 (*)
| | +--- com.google.firebase:firebase-datatransport:18.1.8 -> 19.0.0 (*)
-| | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
-| | +--- androidx.lifecycle:lifecycle-process:2.3.1 -> 2.8.4
+| | +--- androidx.annotation:annotation:1.5.0 -> 1.8.1 (*)
+| | +--- androidx.lifecycle:lifecycle-process:2.3.1 -> 2.8.7
| | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*)
-| | | +--- androidx.lifecycle:lifecycle-runtime:2.8.4 (*)
+| | | +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (*)
| | | +--- androidx.startup:startup-runtime:1.1.1 (*)
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | +--- androidx.lifecycle:lifecycle-common:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-livedata:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-runtime:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4 (c)
-| | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.4 (c)
-| | +--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.2.0 (*)
-| | +--- com.google.protobuf:protobuf-javalite:3.21.11
-| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7 (c)
+| | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c)
+| | +--- com.google.android.gms:play-services-tasks:18.1.0 -> 18.2.0 (*)
+| | +--- com.google.protobuf:protobuf-javalite:3.25.5
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
| | +--- androidx.appcompat:appcompat:1.2.0 -> 1.7.0
-| | | +--- androidx.activity:activity:1.7.0 -> 1.9.1 (*)
+| | | +--- androidx.activity:activity:1.7.0 -> 1.9.3 (*)
| | | +--- androidx.annotation:annotation:1.3.0 -> 1.8.1 (*)
| | | +--- androidx.appcompat:appcompat-resources:1.7.0
| | | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*)
-| | | | +--- androidx.collection:collection:1.0.0 -> 1.4.2 (*)
-| | | | +--- androidx.core:core:1.6.0 -> 1.13.1 (*)
+| | | | +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*)
+| | | | +--- androidx.core:core:1.6.0 -> 1.15.0 (*)
| | | | +--- androidx.vectordrawable:vectordrawable:1.1.0
| | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
-| | | | | +--- androidx.core:core:1.1.0 -> 1.13.1 (*)
-| | | | | \--- androidx.collection:collection:1.1.0 -> 1.4.2 (*)
+| | | | | +--- androidx.core:core:1.1.0 -> 1.15.0 (*)
+| | | | | \--- androidx.collection:collection:1.1.0 -> 1.4.4 (*)
| | | | +--- androidx.vectordrawable:vectordrawable-animated:1.1.0
| | | | | +--- androidx.vectordrawable:vectordrawable:1.1.0 (*)
| | | | | +--- androidx.interpolator:interpolator:1.0.0 (*)
-| | | | | \--- androidx.collection:collection:1.1.0 -> 1.4.2 (*)
+| | | | | \--- androidx.collection:collection:1.1.0 -> 1.4.4 (*)
| | | | \--- androidx.appcompat:appcompat:1.7.0 (c)
-| | | +--- androidx.collection:collection:1.0.0 -> 1.4.2 (*)
-| | | +--- androidx.core:core:1.13.0 -> 1.13.1 (*)
-| | | +--- androidx.core:core-ktx:1.13.0 -> 1.13.1 (*)
+| | | +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*)
+| | | +--- androidx.core:core:1.13.0 -> 1.15.0 (*)
+| | | +--- androidx.core:core-ktx:1.13.0 -> 1.15.0 (*)
| | | +--- androidx.cursoradapter:cursoradapter:1.0.0
| | | | \--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*)
| | | +--- androidx.drawerlayout:drawerlayout:1.0.0
| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*)
-| | | | +--- androidx.core:core:1.0.0 -> 1.13.1 (*)
+| | | | +--- androidx.core:core:1.0.0 -> 1.15.0 (*)
| | | | \--- androidx.customview:customview:1.0.0 (*)
| | | +--- androidx.emoji2:emoji2:1.3.0
| | | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*)
-| | | | +--- androidx.collection:collection:1.1.0 -> 1.4.2 (*)
-| | | | +--- androidx.core:core:1.3.0 -> 1.13.1 (*)
-| | | | +--- androidx.lifecycle:lifecycle-process:2.4.1 -> 2.8.4 (*)
+| | | | +--- androidx.collection:collection:1.1.0 -> 1.4.4 (*)
+| | | | +--- androidx.core:core:1.3.0 -> 1.15.0 (*)
+| | | | +--- androidx.lifecycle:lifecycle-process:2.4.1 -> 2.8.7 (*)
| | | | +--- androidx.startup:startup-runtime:1.0.0 -> 1.1.1 (*)
| | | | \--- androidx.emoji2:emoji2-views-helper:1.3.0 (c)
| | | +--- androidx.emoji2:emoji2-views-helper:1.2.0 -> 1.3.0
-| | | | +--- androidx.collection:collection:1.1.0 -> 1.4.2 (*)
-| | | | +--- androidx.core:core:1.3.0 -> 1.13.1 (*)
+| | | | +--- androidx.collection:collection:1.1.0 -> 1.4.4 (*)
+| | | | +--- androidx.core:core:1.3.0 -> 1.15.0 (*)
| | | | +--- androidx.emoji2:emoji2:1.3.0 (*)
| | | | \--- androidx.emoji2:emoji2:1.3.0 (c)
-| | | +--- androidx.fragment:fragment:1.5.4 -> 1.7.1 (*)
-| | | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.8.4 (*)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.8.4 (*)
-| | | +--- androidx.profileinstaller:profileinstaller:1.3.1 (*)
+| | | +--- androidx.fragment:fragment:1.5.4 -> 1.8.3 (*)
+| | | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.8.7 (*)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.8.7 (*)
+| | | +--- androidx.profileinstaller:profileinstaller:1.3.1 -> 1.4.1 (*)
| | | +--- androidx.resourceinspection:resourceinspection-annotation:1.0.1
| | | | \--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
| | | +--- androidx.savedstate:savedstate:1.2.1 (*)
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
| | | \--- androidx.appcompat:appcompat-resources:1.7.0 (c)
| | +--- com.google.android.datatransport:transport-api:3.0.0 -> 3.2.0 (*)
-| | +--- com.google.dagger:dagger:2.27 -> 2.52 (*)
-| | \--- com.squareup.okhttp3:okhttp:3.12.1 -> 4.12.0
+| | +--- com.google.dagger:dagger:2.43.2 -> 2.54 (*)
+| | \--- com.squareup.okhttp3:okhttp:3.12.13 -> 4.12.0
| | +--- com.squareup.okio:okio:3.6.0
| | | \--- com.squareup.okio:okio-jvm:3.6.0
| | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10 (*)
-| | | \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.9.10 -> 2.0.20
-| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.9.10 -> 2.1.0
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
| | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21 -> 1.9.10 (*)
| +--- com.google.firebase:firebase-common:21.0.0 (*)
| +--- com.google.firebase:firebase-common-ktx:21.0.0 (*)
| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 -> 1.9.10 (*)
| \--- com.google.firebase:firebase-components:18.0.0 (*)
-+--- com.google.firebase:firebase-crashlytics-ktx -> 19.0.3
-| +--- com.google.firebase:firebase-crashlytics:19.0.3
-| | +--- com.google.firebase:firebase-sessions:2.0.3 (*)
++--- com.google.firebase:firebase-crashlytics-ktx -> 19.3.0
+| +--- com.google.firebase:firebase-crashlytics:19.3.0
+| | +--- com.google.firebase:firebase-sessions:2.0.7 (*)
| | +--- com.google.android.gms:play-services-tasks:18.1.0 -> 18.2.0 (*)
| | +--- com.google.firebase:firebase-annotations:16.2.0 (*)
| | +--- com.google.firebase:firebase-common:21.0.0 (*)
@@ -596,8 +605,8 @@
| +--- com.google.firebase:firebase-common-ktx:21.0.0 (*)
| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 -> 1.9.10 (*)
| \--- com.google.firebase:firebase-components:18.0.0 (*)
-+--- com.google.firebase:firebase-messaging-ktx -> 24.0.1
-| +--- com.google.firebase:firebase-messaging:24.0.1
++--- com.google.firebase:firebase-messaging-ktx -> 24.1.0
+| +--- com.google.firebase:firebase-messaging:24.1.0
| | +--- com.google.firebase:firebase-common:21.0.0 (*)
| | +--- com.google.firebase:firebase-common-ktx:21.0.0 (*)
| | +--- com.google.firebase:firebase-components:18.0.0 (*)
@@ -615,12 +624,7 @@
| | +--- com.google.android.datatransport:transport-api:3.1.0 -> 3.2.0 (*)
| | +--- com.google.android.datatransport:transport-backend-cct:3.1.8 -> 3.3.0 (*)
| | +--- com.google.android.datatransport:transport-runtime:3.1.8 -> 3.3.0 (*)
-| | +--- com.google.android.gms:play-services-base:18.0.1 -> 18.5.0
-| | | +--- androidx.collection:collection:1.0.0 -> 1.4.2 (*)
-| | | +--- androidx.core:core:1.2.0 -> 1.13.1 (*)
-| | | +--- androidx.fragment:fragment:1.0.0 -> 1.7.1 (*)
-| | | +--- com.google.android.gms:play-services-basement:18.4.0 (*)
-| | | \--- com.google.android.gms:play-services-tasks:18.2.0 (*)
+| | +--- com.google.android.gms:play-services-base:18.0.1 -> 18.5.0 (*)
| | +--- com.google.android.gms:play-services-basement:18.1.0 -> 18.4.0 (*)
| | +--- com.google.android.gms:play-services-cloud-messaging:17.2.0
| | | +--- com.google.android.gms:play-services-basement:18.3.0 -> 18.4.0 (*)
@@ -628,461 +632,426 @@
| | +--- com.google.android.gms:play-services-stats:17.0.2 (*)
| | +--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.2.0 (*)
| | +--- com.google.errorprone:error_prone_annotations:2.9.0 -> 2.26.0
-| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
| +--- com.google.firebase:firebase-common:21.0.0 (*)
| +--- com.google.firebase:firebase-common-ktx:21.0.0 (*)
| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 -> 1.9.10 (*)
| \--- com.google.firebase:firebase-components:18.0.0 (*)
+--- project :shared
| +--- org.jetbrains.compose.ui:ui-tooling-preview:1.6.11
-| | \--- androidx.compose.ui:ui-tooling-preview:1.6.7 -> 1.7.0-rc01 (*)
-| +--- androidx.activity:activity-compose:1.9.1
-| | +--- androidx.activity:activity-ktx:1.9.1
-| | | +--- androidx.activity:activity:1.9.1 (*)
-| | | +--- androidx.core:core-ktx:1.13.0 -> 1.13.1 (*)
-| | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.1 -> 2.8.4
-| | | | \--- androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.4
+| | \--- androidx.compose.ui:ui-tooling-preview:1.6.7 -> 1.7.6 (*)
+| +--- androidx.activity:activity-compose:1.9.3
+| | +--- androidx.activity:activity-ktx:1.9.3
+| | | +--- androidx.activity:activity:1.9.3 (*)
+| | | +--- androidx.core:core-ktx:1.13.0 -> 1.15.0 (*)
+| | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.1 -> 2.8.7
+| | | | \--- androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.7
| | | | +--- androidx.annotation:annotation:1.8.0 -> 1.8.1 (*)
-| | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.4 (*)
-| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.8.0 (*)
-| | | | +--- androidx.lifecycle:lifecycle-common:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-livedata:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-process:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4 (c)
-| | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1 -> 2.8.4
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.4 (*)
-| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.8.0 (*)
-| | | | +--- androidx.lifecycle:lifecycle-common:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-livedata:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-process:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (c)
-| | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.4 (c)
+| | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (*)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.10.1 (*)
+| | | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-process:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7 (c)
+| | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1 -> 2.8.7
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (*)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.10.1 (*)
+| | | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-process:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (c)
+| | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c)
| | | +--- androidx.savedstate:savedstate-ktx:1.2.1
| | | | +--- androidx.savedstate:savedstate:1.2.1 (*)
-| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.10 -> 2.0.20 (*)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.10 -> 2.1.0 (*)
| | | | \--- androidx.savedstate:savedstate:1.2.1 (c)
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | +--- androidx.activity:activity:1.9.1 (c)
-| | | \--- androidx.activity:activity-compose:1.9.1 (c)
-| | +--- androidx.compose.runtime:runtime:1.0.1 -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.runtime:runtime-saveable:1.0.1 -> 1.7.0-rc01
-| | | \--- androidx.compose.runtime:runtime-saveable-android:1.7.0-rc01
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | +--- androidx.activity:activity:1.9.3 (c)
+| | | \--- androidx.activity:activity-compose:1.9.3 (c)
+| | +--- androidx.compose.runtime:runtime:1.0.1 -> 1.7.6 (*)
+| | +--- androidx.compose.runtime:runtime-saveable:1.0.1 -> 1.7.6
+| | | \--- androidx.compose.runtime:runtime-saveable-android:1.7.6
| | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
-| | | +--- androidx.compose.runtime:runtime:1.7.0-rc01 (*)
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | \--- androidx.compose.runtime:runtime:1.7.0-rc01 (c)
-| | +--- androidx.compose.ui:ui:1.0.1 -> 1.7.0-rc01
-| | | \--- androidx.compose.ui:ui-android:1.7.0-rc01
-| | | +--- androidx.activity:activity-ktx:1.7.0 -> 1.9.1 (*)
-| | | +--- androidx.annotation:annotation:1.6.0 -> 1.8.1 (*)
+| | | +--- androidx.collection:collection:1.4.0 -> 1.4.4 (*)
+| | | +--- androidx.compose.runtime:runtime:1.7.6 (*)
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | \--- androidx.compose.runtime:runtime:1.7.6 (c)
+| | +--- androidx.compose.ui:ui:1.0.1 -> 1.7.6
+| | | \--- androidx.compose.ui:ui-android:1.7.6
+| | | +--- androidx.activity:activity-ktx:1.7.0 -> 1.9.3 (*)
+| | | +--- androidx.annotation:annotation:1.8.0 -> 1.8.1 (*)
| | | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*)
| | | +--- androidx.autofill:autofill:1.0.0
-| | | | \--- androidx.core:core:1.1.0 -> 1.13.1 (*)
-| | | +--- androidx.collection:collection:1.0.0 -> 1.4.2 (*)
-| | | +--- androidx.collection:collection:1.4.0 -> 1.4.2 (*)
-| | | +--- androidx.compose.runtime:runtime:1.7.0-rc01 (*)
-| | | +--- androidx.compose.runtime:runtime-saveable:1.7.0-rc01 (*)
-| | | +--- androidx.compose.ui:ui-geometry:1.7.0-rc01
-| | | | \--- androidx.compose.ui:ui-geometry-android:1.7.0-rc01
+| | | | \--- androidx.core:core:1.1.0 -> 1.15.0 (*)
+| | | +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*)
+| | | +--- androidx.collection:collection:1.4.0 -> 1.4.4 (*)
+| | | +--- androidx.compose.runtime:runtime:1.7.6 (*)
+| | | +--- androidx.compose.runtime:runtime-saveable:1.7.6 (*)
+| | | +--- androidx.compose.ui:ui-geometry:1.7.6
+| | | | \--- androidx.compose.ui:ui-geometry-android:1.7.6
| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
-| | | | +--- androidx.compose.runtime:runtime:1.7.0-rc01 (*)
-| | | | +--- androidx.compose.ui:ui-util:1.7.0-rc01
-| | | | | \--- androidx.compose.ui:ui-util-android:1.7.0-rc01
+| | | | +--- androidx.compose.runtime:runtime:1.7.6 (*)
+| | | | +--- androidx.compose.ui:ui-util:1.7.6
+| | | | | \--- androidx.compose.ui:ui-util-android:1.7.6
| | | | | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*)
-| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | | | +--- androidx.compose.ui:ui:1.7.0-rc01 (c)
-| | | | | +--- androidx.compose.ui:ui-geometry:1.7.0-rc01 (c)
-| | | | | +--- androidx.compose.ui:ui-graphics:1.7.0-rc01 (c)
-| | | | | +--- androidx.compose.ui:ui-text:1.7.0-rc01 (c)
-| | | | | +--- androidx.compose.ui:ui-tooling-preview:1.7.0-rc01 (c)
-| | | | | \--- androidx.compose.ui:ui-unit:1.7.0-rc01 (c)
-| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | | +--- androidx.compose.ui:ui:1.7.0-rc01 (c)
-| | | | +--- androidx.compose.ui:ui-graphics:1.7.0-rc01 (c)
-| | | | +--- androidx.compose.ui:ui-text:1.7.0-rc01 (c)
-| | | | +--- androidx.compose.ui:ui-tooling-preview:1.7.0-rc01 (c)
-| | | | +--- androidx.compose.ui:ui-unit:1.7.0-rc01 (c)
-| | | | \--- androidx.compose.ui:ui-util:1.7.0-rc01 (c)
-| | | +--- androidx.compose.ui:ui-graphics:1.7.0-rc01
-| | | | \--- androidx.compose.ui:ui-graphics-android:1.7.0-rc01
+| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | | +--- androidx.compose.ui:ui:1.7.6 (c)
+| | | | | +--- androidx.compose.ui:ui-text:1.7.6 (c)
+| | | | | +--- androidx.compose.ui:ui-tooling-preview:1.7.6 (c)
+| | | | | +--- androidx.compose.ui:ui-unit:1.7.6 (c)
+| | | | | +--- androidx.compose.ui:ui-geometry:1.7.6 (c)
+| | | | | \--- androidx.compose.ui:ui-graphics:1.7.6 (c)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | +--- androidx.compose.ui:ui:1.7.6 (c)
+| | | | +--- androidx.compose.ui:ui-graphics:1.7.6 (c)
+| | | | +--- androidx.compose.ui:ui-text:1.7.6 (c)
+| | | | +--- androidx.compose.ui:ui-tooling-preview:1.7.6 (c)
+| | | | +--- androidx.compose.ui:ui-unit:1.7.6 (c)
+| | | | \--- androidx.compose.ui:ui-util:1.7.6 (c)
+| | | +--- androidx.compose.ui:ui-graphics:1.7.6
+| | | | \--- androidx.compose.ui:ui-graphics-android:1.7.6
| | | | +--- androidx.annotation:annotation:1.7.0 -> 1.8.1 (*)
| | | | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*)
-| | | | +--- androidx.collection:collection:1.4.0 -> 1.4.2 (*)
-| | | | +--- androidx.compose.runtime:runtime:1.7.0-rc01 (*)
-| | | | +--- androidx.compose.ui:ui-unit:1.7.0-rc01
-| | | | | \--- androidx.compose.ui:ui-unit-android:1.7.0-rc01
+| | | | +--- androidx.collection:collection:1.4.0 -> 1.4.4 (*)
+| | | | +--- androidx.compose.runtime:runtime:1.7.6 (*)
+| | | | +--- androidx.compose.ui:ui-unit:1.7.6
+| | | | | \--- androidx.compose.ui:ui-unit-android:1.7.6
| | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
+| | | | | +--- androidx.annotation:annotation:1.8.0 -> 1.8.1 (*)
| | | | | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*)
-| | | | | +--- androidx.collection:collection:1.4.0 -> 1.4.2 (*)
-| | | | | +--- androidx.collection:collection-ktx:1.2.0 -> 1.4.2
-| | | | | | +--- androidx.collection:collection:1.4.2 (*)
-| | | | | | \--- androidx.collection:collection:1.4.2 (c)
-| | | | | +--- androidx.compose.runtime:runtime:1.7.0-rc01 (*)
-| | | | | +--- androidx.compose.ui:ui-geometry:1.7.0-rc01 (*)
-| | | | | +--- androidx.compose.ui:ui-util:1.7.0-rc01 (*)
-| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | | | +--- androidx.compose.ui:ui:1.7.0-rc01 (c)
-| | | | | +--- androidx.compose.ui:ui-geometry:1.7.0-rc01 (c)
-| | | | | +--- androidx.compose.ui:ui-graphics:1.7.0-rc01 (c)
-| | | | | +--- androidx.compose.ui:ui-text:1.7.0-rc01 (c)
-| | | | | +--- androidx.compose.ui:ui-tooling-preview:1.7.0-rc01 (c)
-| | | | | \--- androidx.compose.ui:ui-util:1.7.0-rc01 (c)
-| | | | +--- androidx.compose.ui:ui-util:1.7.0-rc01 (*)
-| | | | +--- androidx.core:core:1.12.0 -> 1.13.1 (*)
+| | | | | +--- androidx.collection:collection:1.4.0 -> 1.4.4 (*)
+| | | | | +--- androidx.collection:collection-ktx:1.2.0 -> 1.4.4
+| | | | | | +--- androidx.collection:collection:1.4.4 (*)
+| | | | | | \--- androidx.collection:collection:1.4.4 (c)
+| | | | | +--- androidx.compose.runtime:runtime:1.7.6 (*)
+| | | | | +--- androidx.compose.ui:ui-geometry:1.7.6 (*)
+| | | | | +--- androidx.compose.ui:ui-util:1.7.6 (*)
+| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | | +--- androidx.compose.ui:ui:1.7.6 (c)
+| | | | | +--- androidx.compose.ui:ui-geometry:1.7.6 (c)
+| | | | | +--- androidx.compose.ui:ui-graphics:1.7.6 (c)
+| | | | | +--- androidx.compose.ui:ui-text:1.7.6 (c)
+| | | | | +--- androidx.compose.ui:ui-tooling-preview:1.7.6 (c)
+| | | | | \--- androidx.compose.ui:ui-util:1.7.6 (c)
+| | | | +--- androidx.compose.ui:ui-util:1.7.6 (*)
+| | | | +--- androidx.core:core:1.12.0 -> 1.15.0 (*)
| | | | +--- androidx.graphics:graphics-path:1.0.1
-| | | | | +--- androidx.core:core:1.12.0 -> 1.13.1 (*)
-| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | | +--- androidx.compose.ui:ui:1.7.0-rc01 (c)
-| | | | +--- androidx.compose.ui:ui-geometry:1.7.0-rc01 (c)
-| | | | +--- androidx.compose.ui:ui-text:1.7.0-rc01 (c)
-| | | | +--- androidx.compose.ui:ui-tooling-preview:1.7.0-rc01 (c)
-| | | | +--- androidx.compose.ui:ui-unit:1.7.0-rc01 (c)
-| | | | \--- androidx.compose.ui:ui-util:1.7.0-rc01 (c)
-| | | +--- androidx.compose.ui:ui-text:1.7.0-rc01
-| | | | \--- androidx.compose.ui:ui-text-android:1.7.0-rc01
+| | | | | +--- androidx.core:core:1.12.0 -> 1.15.0 (*)
+| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | +--- androidx.compose.ui:ui:1.7.6 (c)
+| | | | +--- androidx.compose.ui:ui-geometry:1.7.6 (c)
+| | | | +--- androidx.compose.ui:ui-text:1.7.6 (c)
+| | | | +--- androidx.compose.ui:ui-tooling-preview:1.7.6 (c)
+| | | | +--- androidx.compose.ui:ui-unit:1.7.6 (c)
+| | | | \--- androidx.compose.ui:ui-util:1.7.6 (c)
+| | | +--- androidx.compose.ui:ui-text:1.7.6
+| | | | \--- androidx.compose.ui:ui-text-android:1.7.6
| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
| | | | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*)
-| | | | +--- androidx.collection:collection:1.4.0 -> 1.4.2 (*)
-| | | | +--- androidx.compose.runtime:runtime:1.7.0-rc01 (*)
-| | | | +--- androidx.compose.runtime:runtime-saveable:1.6.0 -> 1.7.0-rc01 (*)
-| | | | +--- androidx.compose.ui:ui-graphics:1.7.0-rc01 (*)
-| | | | +--- androidx.compose.ui:ui-unit:1.7.0-rc01 (*)
-| | | | +--- androidx.compose.ui:ui-util:1.7.0-rc01 (*)
-| | | | +--- androidx.core:core:1.7.0 -> 1.13.1 (*)
+| | | | +--- androidx.collection:collection:1.4.0 -> 1.4.4 (*)
+| | | | +--- androidx.compose.runtime:runtime:1.7.6 (*)
+| | | | +--- androidx.compose.runtime:runtime-saveable:1.7.6 (*)
+| | | | +--- androidx.compose.ui:ui-graphics:1.7.6 (*)
+| | | | +--- androidx.compose.ui:ui-unit:1.7.6 (*)
+| | | | +--- androidx.compose.ui:ui-util:1.7.6 (*)
+| | | | +--- androidx.core:core:1.7.0 -> 1.15.0 (*)
| | | | +--- androidx.emoji2:emoji2:1.2.0 -> 1.3.0 (*)
-| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.8.0 (*)
-| | | | +--- androidx.compose.ui:ui:1.7.0-rc01 (c)
-| | | | +--- androidx.compose.ui:ui-geometry:1.7.0-rc01 (c)
-| | | | +--- androidx.compose.ui:ui-graphics:1.7.0-rc01 (c)
-| | | | +--- androidx.compose.ui:ui-tooling-preview:1.7.0-rc01 (c)
-| | | | +--- androidx.compose.ui:ui-unit:1.7.0-rc01 (c)
-| | | | \--- androidx.compose.ui:ui-util:1.7.0-rc01 (c)
-| | | +--- androidx.compose.ui:ui-unit:1.7.0-rc01 (*)
-| | | +--- androidx.compose.ui:ui-util:1.7.0-rc01 (*)
-| | | +--- androidx.core:core:1.12.0 -> 1.13.1 (*)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.1 (*)
+| | | | +--- androidx.compose.ui:ui:1.7.6 (c)
+| | | | +--- androidx.compose.ui:ui-geometry:1.7.6 (c)
+| | | | +--- androidx.compose.ui:ui-graphics:1.7.6 (c)
+| | | | +--- androidx.compose.ui:ui-tooling-preview:1.7.6 (c)
+| | | | +--- androidx.compose.ui:ui-unit:1.7.6 (c)
+| | | | \--- androidx.compose.ui:ui-util:1.7.6 (c)
+| | | +--- androidx.compose.ui:ui-unit:1.7.6 (*)
+| | | +--- androidx.compose.ui:ui-util:1.7.6 (*)
+| | | +--- androidx.core:core:1.12.0 -> 1.15.0 (*)
| | | +--- androidx.customview:customview-poolingcontainer:1.0.0
-| | | | +--- androidx.core:core-ktx:1.5.0 -> 1.13.1 (*)
-| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 -> 2.0.20 (*)
+| | | | +--- androidx.core:core-ktx:1.5.0 -> 1.15.0 (*)
+| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 -> 2.1.0 (*)
| | | +--- androidx.emoji2:emoji2:1.2.0 -> 1.3.0 (*)
-| | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.3 -> 2.8.4
-| | | | \--- androidx.lifecycle:lifecycle-runtime-compose-android:2.8.4
-| | | | +--- androidx.annotation:annotation:1.8.0 -> 1.8.1 (*)
-| | | | +--- androidx.compose.runtime:runtime:1.6.5 -> 1.7.0-rc01 (*)
-| | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.4 (*)
-| | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.4 (*)
-| | | | +--- androidx.lifecycle:lifecycle-common:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-livedata:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-process:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.4 (c)
-| | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.4 (c)
-| | | | \--- androidx.lifecycle:lifecycle-livedata-core:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.8.4 (*)
-| | | +--- androidx.profileinstaller:profileinstaller:1.3.1 (*)
+| | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.3 -> 2.8.7
+| | | | \--- androidx.lifecycle:lifecycle-runtime-compose-android:2.8.7
+| | | | +--- androidx.annotation:annotation:1.8.1 (*)
+| | | | +--- androidx.compose.runtime:runtime:1.7.1 -> 1.7.6 (*)
+| | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (*)
+| | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.7 (*)
+| | | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-process:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c)
+| | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7 (c)
+| | | | \--- androidx.lifecycle:lifecycle-livedata-core:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.8.7 (*)
+| | | +--- androidx.profileinstaller:profileinstaller:1.3.1 -> 1.4.1 (*)
| | | +--- androidx.savedstate:savedstate-ktx:1.2.1 (*)
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.8.0 (*)
-| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.8.0 (*)
-| | | +--- androidx.compose.ui:ui-geometry:1.7.0-rc01 (c)
-| | | +--- androidx.compose.ui:ui-graphics:1.7.0-rc01 (c)
-| | | +--- androidx.compose.ui:ui-text:1.7.0-rc01 (c)
-| | | +--- androidx.compose.ui:ui-tooling-preview:1.7.0-rc01 (c)
-| | | +--- androidx.compose.ui:ui-unit:1.7.0-rc01 (c)
-| | | +--- androidx.compose.ui:ui-util:1.7.0-rc01 (c)
-| | | \--- androidx.compose.foundation:foundation:1.7.0-rc01 (c)
-| | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.8.4 (*)
-| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | +--- androidx.activity:activity:1.9.1 (c)
-| | \--- androidx.activity:activity-ktx:1.9.1 (c)
-| +--- io.insert-koin:koin-android:3.6.0-Beta4
-| | +--- io.insert-koin:koin-core:3.6.0-Beta4
-| | | \--- io.insert-koin:koin-core-jvm:3.6.0-Beta4
-| | | +--- co.touchlab:stately-concurrency:2.0.6
-| | | | \--- co.touchlab:stately-concurrency-jvm:2.0.6
-| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10 (*)
-| | | | \--- co.touchlab:stately-strict:2.0.6
-| | | | \--- co.touchlab:stately-strict-jvm:2.0.6
-| | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10 (*)
-| | | +--- co.touchlab:stately-concurrent-collections:2.0.6
-| | | | \--- co.touchlab:stately-concurrent-collections-jvm:2.0.6
-| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10 (*)
-| | | | \--- co.touchlab:stately-concurrency:2.0.6 (*)
-| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*)
-| | +--- androidx.appcompat:appcompat:1.6.1 -> 1.7.0 (*)
-| | +--- androidx.activity:activity-ktx:1.9.0 -> 1.9.1 (*)
-| | +--- androidx.fragment:fragment-ktx:1.7.1
-| | | +--- androidx.activity:activity-ktx:1.8.1 -> 1.9.1 (*)
-| | | +--- androidx.collection:collection-ktx:1.1.0 -> 1.4.2 (*)
-| | | +--- androidx.core:core-ktx:1.2.0 -> 1.13.1 (*)
-| | | +--- androidx.fragment:fragment:1.7.1 (*)
-| | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.6.1 -> 2.8.4 (*)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1 -> 2.8.4 (*)
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.10.1 (*)
+| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.1 (*)
+| | | +--- androidx.compose.ui:ui-geometry:1.7.6 (c)
+| | | +--- androidx.compose.ui:ui-graphics:1.7.6 (c)
+| | | +--- androidx.compose.ui:ui-text:1.7.6 (c)
+| | | +--- androidx.compose.ui:ui-tooling-preview:1.7.6 (c)
+| | | +--- androidx.compose.ui:ui-unit:1.7.6 (c)
+| | | +--- androidx.compose.ui:ui-util:1.7.6 (c)
+| | | \--- androidx.compose.foundation:foundation:1.7.6 (c)
+| | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.8.7 (*)
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | +--- androidx.activity:activity:1.9.3 (c)
+| | \--- androidx.activity:activity-ktx:1.9.3 (c)
+| +--- io.insert-koin:koin-android:4.0.0
+| | +--- io.insert-koin:koin-core:4.0.0
+| | | \--- io.insert-koin:koin-core-jvm:4.0.0
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.1.0 (*)
+| | | +--- co.touchlab:stately-concurrency:2.1.0
+| | | | \--- co.touchlab:stately-concurrency-jvm:2.1.0
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.1.0 (*)
+| | | | \--- co.touchlab:stately-strict:2.1.0
+| | | | \--- co.touchlab:stately-strict-jvm:2.1.0
+| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.1.0 (*)
+| | | \--- co.touchlab:stately-concurrent-collections:2.1.0
+| | | \--- co.touchlab:stately-concurrent-collections-jvm:2.1.0
+| | | +--- co.touchlab:stately-concurrency:2.1.0 (*)
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.1.0 (*)
+| | +--- io.insert-koin:koin-core-viewmodel:4.0.0
+| | | \--- io.insert-koin:koin-core-viewmodel-jvm:4.0.0
+| | | +--- io.insert-koin:koin-core:4.0.0 (*)
+| | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.0
+| | | | \--- androidx.lifecycle:lifecycle-viewmodel:2.8.0 -> 2.8.7 (*)
+| | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.0
+| | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.0 -> 2.8.7 (*)
+| | | +--- org.jetbrains.androidx.core:core-bundle:1.0.0
+| | | | \--- org.jetbrains.androidx.core:core-bundle-android:1.0.0
+| | | | +--- androidx.core:core-ktx:1.2.0 -> 1.15.0 (*)
+| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.1.0 (*)
+| | | +--- org.jetbrains.androidx.savedstate:savedstate:1.2.0
+| | | | \--- androidx.savedstate:savedstate:1.2.1 (*)
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.1.0 (*)
+| | +--- androidx.appcompat:appcompat:1.7.0 (*)
+| | +--- androidx.activity:activity-ktx:1.9.2 -> 1.9.3 (*)
+| | +--- androidx.fragment:fragment-ktx:1.8.3
+| | | +--- androidx.activity:activity-ktx:1.8.1 -> 1.9.3 (*)
+| | | +--- androidx.collection:collection-ktx:1.1.0 -> 1.4.4 (*)
+| | | +--- androidx.core:core-ktx:1.2.0 -> 1.15.0 (*)
+| | | +--- androidx.fragment:fragment:1.8.3 (*)
+| | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.6.1 -> 2.8.7 (*)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1 -> 2.8.7 (*)
| | | +--- androidx.savedstate:savedstate-ktx:1.2.1 (*)
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | \--- androidx.fragment:fragment:1.7.1 (c)
-| | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.0 -> 2.8.4 (*)
-| | +--- androidx.lifecycle:lifecycle-common-java8:2.8.0 -> 2.8.4
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | \--- androidx.fragment:fragment:1.8.3 (c)
+| | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.5 -> 2.8.7 (*)
+| | +--- androidx.lifecycle:lifecycle-common-java8:2.8.5 -> 2.8.7
| | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
-| | | +--- androidx.lifecycle:lifecycle-common:2.8.4 (*)
-| | | +--- androidx.lifecycle:lifecycle-common:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-livedata:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-process:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-runtime:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.4 (c)
-| | | \--- androidx.lifecycle:lifecycle-livedata-core:2.8.4 (c)
-| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*)
-| +--- io.insert-koin:koin-androidx-compose:3.6.0-Beta4
-| | +--- io.insert-koin:koin-android:3.6.0-Beta4 (*)
-| | +--- io.insert-koin:koin-compose:1.2.0-Beta4
-| | | \--- io.insert-koin:koin-compose-jvm:1.2.0-Beta4
-| | | +--- io.insert-koin:koin-core:3.6.0-Beta4 (*)
-| | | +--- org.jetbrains.compose.runtime:runtime:1.6.10-rc03
-| | | | \--- androidx.compose.runtime:runtime:1.6.7 -> 1.7.0-rc01 (*)
-| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*)
-| | +--- androidx.compose.runtime:runtime:1.6.7 -> 1.7.0-rc01 (*)
-| | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.0 -> 2.8.4
-| | | \--- androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.4
+| | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (*)
+| | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-process:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c)
+| | | \--- androidx.lifecycle:lifecycle-livedata-core:2.8.7 (c)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.1.0 (*)
+| +--- io.insert-koin:koin-androidx-compose:4.0.0
+| | +--- io.insert-koin:koin-android:4.0.0 (*)
+| | +--- io.insert-koin:koin-compose:4.0.0
+| | | \--- io.insert-koin:koin-compose-jvm:4.0.0
+| | | +--- io.insert-koin:koin-core:4.0.0 (*)
+| | | +--- org.jetbrains.compose.runtime:runtime:1.6.11
+| | | | \--- androidx.compose.runtime:runtime:1.6.7 -> 1.7.6 (*)
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.1.0 (*)
+| | +--- androidx.compose.runtime:runtime:1.6.8 -> 1.7.6 (*)
+| | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.5 -> 2.8.7
+| | | \--- androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.7
| | | +--- androidx.annotation:annotation:1.8.0 -> 1.8.1 (*)
-| | | +--- androidx.compose.runtime:runtime:1.6.0 -> 1.7.0-rc01 (*)
-| | | +--- androidx.compose.ui:ui:1.6.0 -> 1.7.0-rc01 (*)
-| | | +--- androidx.lifecycle:lifecycle-common:2.8.4 (*)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.4 (*)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.4 (*)
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | +--- androidx.lifecycle:lifecycle-common:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-livedata:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-process:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-runtime:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4 (c)
-| | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.4 (c)
-| | | \--- androidx.lifecycle:lifecycle-livedata-core:2.8.4 (c)
-| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*)
-| +--- io.insert-koin:koin-core:3.6.0-Beta4 (*)
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
+| | | +--- androidx.compose.runtime:runtime:1.6.0 -> 1.7.6 (*)
+| | | +--- androidx.compose.ui:ui:1.6.0 -> 1.7.6 (*)
+| | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (*)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (*)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (*)
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-process:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7 (c)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c)
+| | | \--- androidx.lifecycle:lifecycle-livedata-core:2.8.7 (c)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.1.0 (*)
+| +--- io.insert-koin:koin-core:4.0.0 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
| +--- org.jetbrains.compose.material:material:1.6.11
-| | \--- androidx.compose.material:material:1.6.7 -> 1.6.8
-| | \--- androidx.compose.material:material-android:1.6.8
+| | \--- androidx.compose.material:material:1.6.7 -> 1.7.6
+| | \--- androidx.compose.material:material-android:1.7.6
| | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
-| | +--- androidx.compose.animation:animation:1.6.8 -> 1.7.0-rc01
-| | | \--- androidx.compose.animation:animation-android:1.7.0-rc01
+| | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*)
+| | +--- androidx.compose.animation:animation:1.7.6
+| | | \--- androidx.compose.animation:animation-android:1.7.6
| | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
| | | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*)
-| | | +--- androidx.collection:collection:1.4.0 -> 1.4.2 (*)
-| | | +--- androidx.compose.animation:animation-core:1.7.0-rc01
-| | | | \--- androidx.compose.animation:animation-core-android:1.7.0-rc01
+| | | +--- androidx.collection:collection:1.4.0 -> 1.4.4 (*)
+| | | +--- androidx.compose.animation:animation-core:1.7.6
+| | | | \--- androidx.compose.animation:animation-core-android:1.7.6
| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
-| | | | +--- androidx.collection:collection:1.4.0 -> 1.4.2 (*)
-| | | | +--- androidx.compose.runtime:runtime:1.7.0-rc01 (*)
-| | | | +--- androidx.compose.ui:ui:1.6.0 -> 1.7.0-rc01 (*)
-| | | | +--- androidx.compose.ui:ui-graphics:1.7.0-rc01 (*)
-| | | | +--- androidx.compose.ui:ui-unit:1.6.0 -> 1.7.0-rc01 (*)
-| | | | +--- androidx.compose.ui:ui-util:1.7.0-rc01 (*)
-| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.8.0 (*)
-| | | | \--- androidx.compose.animation:animation:1.7.0-rc01 (c)
-| | | +--- androidx.compose.foundation:foundation-layout:1.6.0 -> 1.7.0-rc01
-| | | | \--- androidx.compose.foundation:foundation-layout-android:1.7.0-rc01
+| | | | +--- androidx.collection:collection:1.4.0 -> 1.4.4 (*)
+| | | | +--- androidx.compose.runtime:runtime:1.7.6 (*)
+| | | | +--- androidx.compose.ui:ui:1.7.6 (*)
+| | | | +--- androidx.compose.ui:ui-graphics:1.7.6 (*)
+| | | | +--- androidx.compose.ui:ui-unit:1.7.6 (*)
+| | | | +--- androidx.compose.ui:ui-util:1.7.6 (*)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.1 (*)
+| | | | \--- androidx.compose.animation:animation:1.7.6 (c)
+| | | +--- androidx.compose.foundation:foundation-layout:1.7.6
+| | | | \--- androidx.compose.foundation:foundation-layout-android:1.7.6
| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
| | | | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*)
-| | | | +--- androidx.collection:collection:1.4.0 -> 1.4.2 (*)
-| | | | +--- androidx.compose.animation:animation-core:1.2.1 -> 1.7.0-rc01 (*)
-| | | | +--- androidx.compose.runtime:runtime:1.7.0-rc01 (*)
-| | | | +--- androidx.compose.ui:ui:1.6.0 -> 1.7.0-rc01 (*)
-| | | | +--- androidx.compose.ui:ui-unit:1.7.0-rc01 (*)
-| | | | +--- androidx.compose.ui:ui-util:1.7.0-rc01 (*)
-| | | | +--- androidx.core:core:1.7.0 -> 1.13.1 (*)
-| | | | \--- androidx.compose.foundation:foundation:1.7.0-rc01 (c)
-| | | +--- androidx.compose.runtime:runtime:1.7.0-rc01 (*)
-| | | +--- androidx.compose.ui:ui:1.7.0-rc01 (*)
-| | | +--- androidx.compose.ui:ui-geometry:1.6.0 -> 1.7.0-rc01 (*)
-| | | +--- androidx.compose.ui:ui-graphics:1.7.0-rc01 (*)
-| | | +--- androidx.compose.ui:ui-util:1.7.0-rc01 (*)
-| | | \--- androidx.compose.animation:animation-core:1.7.0-rc01 (c)
-| | +--- androidx.compose.animation:animation-core:1.6.8 -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.foundation:foundation:1.6.8 -> 1.7.0-rc01
-| | | \--- androidx.compose.foundation:foundation-android:1.7.0-rc01
+| | | | +--- androidx.collection:collection:1.4.0 -> 1.4.4 (*)
+| | | | +--- androidx.compose.animation:animation-core:1.2.1 -> 1.7.6 (*)
+| | | | +--- androidx.compose.runtime:runtime:1.7.6 (*)
+| | | | +--- androidx.compose.ui:ui:1.7.6 (*)
+| | | | +--- androidx.compose.ui:ui-unit:1.7.6 (*)
+| | | | +--- androidx.compose.ui:ui-util:1.7.6 (*)
+| | | | +--- androidx.core:core:1.7.0 -> 1.15.0 (*)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | \--- androidx.compose.foundation:foundation:1.7.6 (c)
+| | | +--- androidx.compose.runtime:runtime:1.7.6 (*)
+| | | +--- androidx.compose.ui:ui:1.7.6 (*)
+| | | +--- androidx.compose.ui:ui-geometry:1.7.6 (*)
+| | | +--- androidx.compose.ui:ui-graphics:1.7.6 (*)
+| | | +--- androidx.compose.ui:ui-util:1.7.6 (*)
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | \--- androidx.compose.animation:animation-core:1.7.6 (c)
+| | +--- androidx.compose.animation:animation-core:1.7.6 (*)
+| | +--- androidx.compose.foundation:foundation:1.7.6
+| | | \--- androidx.compose.foundation:foundation-android:1.7.6
| | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
| | | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*)
-| | | +--- androidx.collection:collection:1.4.0 -> 1.4.2 (*)
-| | | +--- androidx.compose.animation:animation:1.7.0-rc01 (*)
-| | | +--- androidx.compose.foundation:foundation-layout:1.7.0-rc01 (*)
-| | | +--- androidx.compose.runtime:runtime:1.7.0-rc01 (*)
-| | | +--- androidx.compose.ui:ui:1.7.0-rc01 (*)
-| | | +--- androidx.compose.ui:ui-text:1.6.0 -> 1.7.0-rc01 (*)
-| | | +--- androidx.compose.ui:ui-util:1.6.0 -> 1.7.0-rc01 (*)
-| | | +--- androidx.core:core:1.13.1 (*)
+| | | +--- androidx.collection:collection:1.4.0 -> 1.4.4 (*)
+| | | +--- androidx.compose.animation:animation:1.7.6 (*)
+| | | +--- androidx.compose.foundation:foundation-layout:1.7.6 (*)
+| | | +--- androidx.compose.runtime:runtime:1.7.6 (*)
+| | | +--- androidx.compose.ui:ui:1.7.6 (*)
+| | | +--- androidx.compose.ui:ui-text:1.7.6 (*)
+| | | +--- androidx.compose.ui:ui-util:1.7.6 (*)
+| | | +--- androidx.core:core:1.13.1 -> 1.15.0 (*)
| | | +--- androidx.emoji2:emoji2:1.3.0 (*)
-| | | \--- androidx.compose.foundation:foundation-layout:1.7.0-rc01 (c)
-| | +--- androidx.compose.foundation:foundation-layout:1.6.8 -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.material:material-icons-core:1.6.8
-| | | \--- androidx.compose.material:material-icons-core-android:1.6.8
-| | | +--- androidx.compose.ui:ui:1.6.8 -> 1.7.0-rc01 (*)
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | +--- androidx.compose.material:material:1.6.8 (c)
-| | | +--- androidx.compose.material:material-icons-extended:1.6.8 (c)
-| | | \--- androidx.compose.material:material-ripple:1.6.8 (c)
-| | +--- androidx.compose.material:material-ripple:1.6.8
-| | | \--- androidx.compose.material:material-ripple-android:1.6.8
-| | | +--- androidx.compose.animation:animation:1.6.8 -> 1.7.0-rc01 (*)
-| | | +--- androidx.compose.foundation:foundation:1.6.8 -> 1.7.0-rc01 (*)
-| | | +--- androidx.compose.runtime:runtime:1.6.8 -> 1.7.0-rc01 (*)
-| | | +--- androidx.compose.ui:ui-util:1.6.8 -> 1.7.0-rc01 (*)
-| | | +--- androidx.compose.material:material:1.6.8 (c)
-| | | +--- androidx.compose.material:material-icons-core:1.6.8 (c)
-| | | \--- androidx.compose.material:material-icons-extended:1.6.8 (c)
-| | +--- androidx.compose.runtime:runtime:1.6.8 -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.ui:ui:1.6.8 -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.ui:ui-text:1.6.8 -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.ui:ui-util:1.6.8 -> 1.7.0-rc01 (*)
-| | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.8.4 (*)
-| | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.8.4 (*)
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | \--- androidx.compose.foundation:foundation-layout:1.7.6 (c)
+| | +--- androidx.compose.foundation:foundation-layout:1.7.6 (*)
+| | +--- androidx.compose.material:material-ripple:1.7.6
+| | | \--- androidx.compose.material:material-ripple-android:1.7.6
+| | | +--- androidx.collection:collection:1.4.0 -> 1.4.4 (*)
+| | | +--- androidx.compose.animation:animation:1.7.6 (*)
+| | | +--- androidx.compose.foundation:foundation:1.7.6 (*)
+| | | +--- androidx.compose.runtime:runtime:1.7.6 (*)
+| | | +--- androidx.compose.ui:ui-util:1.7.6 (*)
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | +--- androidx.compose.runtime:runtime:1.7.6 (*)
+| | +--- androidx.compose.ui:ui:1.7.6 (*)
+| | +--- androidx.compose.ui:ui-text:1.7.6 (*)
+| | +--- androidx.compose.ui:ui-util:1.7.6 (*)
+| | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.8.7 (*)
+| | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.8.7 (*)
| | +--- androidx.savedstate:savedstate:1.2.1 (*)
-| | +--- androidx.compose.material:material-icons-core:1.6.8 (c)
-| | +--- androidx.compose.material:material-icons-extended:1.6.8 (c)
-| | \--- androidx.compose.material:material-ripple:1.6.8 (c)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
| +--- org.jetbrains.compose.material3:material3:1.6.11
-| | \--- androidx.compose.material3:material3:1.2.1
-| | \--- androidx.compose.material3:material3-android:1.2.1
-| | +--- androidx.activity:activity-compose:1.5.0 -> 1.9.1 (*)
+| | \--- androidx.compose.material3:material3:1.2.1 -> 1.3.1
+| | \--- androidx.compose.material3:material3-android:1.3.1
+| | +--- androidx.activity:activity-compose:1.8.2 -> 1.9.3 (*)
| | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
| | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*)
-| | +--- androidx.collection:collection:1.4.0 -> 1.4.2 (*)
-| | +--- androidx.compose.animation:animation-core:1.6.0 -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.foundation:foundation:1.6.0 -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.foundation:foundation-layout:1.6.0 -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.material:material-icons-core:1.6.0 -> 1.6.8 (*)
-| | +--- androidx.compose.material:material-ripple:1.6.0 -> 1.6.8 (*)
-| | +--- androidx.compose.runtime:runtime:1.6.0 -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.ui:ui-graphics:1.6.0 -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.ui:ui-text:1.6.0 -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.ui:ui-util:1.6.0 -> 1.7.0-rc01 (*)
-| | +--- androidx.lifecycle:lifecycle-common-java8:2.6.1 -> 2.8.4 (*)
-| | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.8.4 (*)
-| | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.8.4 (*)
-| | \--- androidx.savedstate:savedstate-ktx:1.2.1 (*)
-| +--- io.insert-koin:koin-compose:1.2.0-Beta4 (*)
-| \--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4
-| \--- io.insert-koin:koin-compose-viewmodel-jvm:1.2.0-Beta4
-| +--- io.insert-koin:koin-compose:1.2.0-Beta4 (*)
-| +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.0-rc03
-| | \--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.0 -> 2.8.4 (*)
-| +--- org.jetbrains.androidx.navigation:navigation-compose:2.7.0-alpha06
-| | \--- androidx.navigation:navigation-compose:2.7.7 -> 2.8.0-rc01
-| | +--- androidx.activity:activity-compose:1.8.0 -> 1.9.1 (*)
-| | +--- androidx.compose.animation:animation:1.7.0-rc01 (*)
-| | +--- androidx.compose.foundation:foundation-layout:1.7.0-rc01 (*)
-| | +--- androidx.compose.runtime:runtime:1.7.0-rc01 (*)
-| | +--- androidx.compose.runtime:runtime-saveable:1.7.0-rc01 (*)
-| | +--- androidx.compose.ui:ui:1.7.0-rc01 (*)
-| | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2 -> 2.8.4 (*)
-| | +--- androidx.navigation:navigation-runtime-ktx:2.8.0-rc01
-| | | +--- androidx.navigation:navigation-common-ktx:2.8.0-rc01
-| | | | +--- androidx.navigation:navigation-common:2.8.0-rc01
-| | | | | +--- androidx.annotation:annotation:1.8.1 (*)
-| | | | | +--- androidx.collection:collection-ktx:1.4.2 (*)
-| | | | | +--- androidx.core:core-ktx:1.1.0 -> 1.13.1 (*)
-| | | | | +--- androidx.lifecycle:lifecycle-common:2.6.2 -> 2.8.4 (*)
-| | | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.2 -> 2.8.4 (*)
-| | | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2 -> 2.8.4 (*)
-| | | | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.2 -> 2.8.4 (*)
-| | | | | +--- androidx.profileinstaller:profileinstaller:1.3.1 (*)
-| | | | | +--- androidx.savedstate:savedstate-ktx:1.2.1 (*)
-| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3
-| | | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.6.3
-| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.20 (*)
-| | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.3
-| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.6.3 (c)
-| | | | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 (c)
-| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.9.22 -> 2.0.20 (*)
-| | | | | +--- androidx.navigation:navigation-common-ktx:2.8.0-rc01 (c)
-| | | | | +--- androidx.navigation:navigation-compose:2.8.0-rc01 (c)
-| | | | | +--- androidx.navigation:navigation-runtime:2.8.0-rc01 (c)
-| | | | | \--- androidx.navigation:navigation-runtime-ktx:2.8.0-rc01 (c)
-| | | | +--- androidx.navigation:navigation-common:2.8.0-rc01 (c)
-| | | | +--- androidx.navigation:navigation-compose:2.8.0-rc01 (c)
-| | | | +--- androidx.navigation:navigation-runtime:2.8.0-rc01 (c)
-| | | | \--- androidx.navigation:navigation-runtime-ktx:2.8.0-rc01 (c)
-| | | +--- androidx.navigation:navigation-runtime:2.8.0-rc01
-| | | | +--- androidx.activity:activity-ktx:1.7.1 -> 1.9.1 (*)
-| | | | +--- androidx.annotation:annotation-experimental:1.4.1 (*)
-| | | | +--- androidx.collection:collection:1.4.2 (*)
-| | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.2 -> 2.8.4 (*)
-| | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2 -> 2.8.4 (*)
-| | | | +--- androidx.navigation:navigation-common:2.8.0-rc01 (*)
-| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 (*)
-| | | | +--- androidx.navigation:navigation-common:2.8.0-rc01 (c)
-| | | | +--- androidx.navigation:navigation-common-ktx:2.8.0-rc01 (c)
-| | | | +--- androidx.navigation:navigation-compose:2.8.0-rc01 (c)
-| | | | \--- androidx.navigation:navigation-runtime-ktx:2.8.0-rc01 (c)
-| | | +--- androidx.navigation:navigation-common-ktx:2.8.0-rc01 (c)
-| | | +--- androidx.navigation:navigation-compose:2.8.0-rc01 (c)
-| | | +--- androidx.navigation:navigation-runtime:2.8.0-rc01 (c)
-| | | \--- androidx.navigation:navigation-common:2.8.0-rc01 (c)
-| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 (*)
-| | +--- androidx.navigation:navigation-runtime-ktx:2.8.0-rc01 (c)
-| | +--- androidx.navigation:navigation-runtime:2.8.0-rc01 (c)
-| | +--- androidx.navigation:navigation-common-ktx:2.8.0-rc01 (c)
-| | \--- androidx.navigation:navigation-common:2.8.0-rc01 (c)
-| \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*)
+| | +--- androidx.collection:collection:1.4.0 -> 1.4.4 (*)
+| | +--- androidx.compose.animation:animation-core:1.6.0 -> 1.7.6 (*)
+| | +--- androidx.compose.foundation:foundation:1.7.0 -> 1.7.6 (*)
+| | +--- androidx.compose.foundation:foundation-layout:1.7.0 -> 1.7.6 (*)
+| | +--- androidx.compose.material:material-icons-core:1.6.0 -> 1.7.6
+| | | \--- androidx.compose.material:material-icons-core-android:1.7.6
+| | | +--- androidx.compose.ui:ui:1.6.0 -> 1.7.6 (*)
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.8.22 -> 2.1.0 (*)
+| | +--- androidx.compose.material:material-ripple:1.7.0 -> 1.7.6 (*)
+| | +--- androidx.compose.runtime:runtime:1.7.0 -> 1.7.6 (*)
+| | +--- androidx.compose.ui:ui:1.6.0 -> 1.7.6 (*)
+| | +--- androidx.compose.ui:ui-text:1.6.0 -> 1.7.6 (*)
+| | +--- androidx.compose.ui:ui-util:1.6.0 -> 1.7.6 (*)
+| | \--- androidx.lifecycle:lifecycle-common-java8:2.6.1 -> 2.8.7 (*)
+| +--- io.insert-koin:koin-compose:4.0.0 (*)
+| \--- io.insert-koin:koin-compose-viewmodel:4.0.0
+| \--- io.insert-koin:koin-compose-viewmodel-jvm:4.0.0
+| +--- io.insert-koin:koin-compose:4.0.0 (*)
+| +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*)
+| +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.0
+| | \--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.0 -> 2.8.7 (*)
+| \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.1.0 (*)
+--- project :core:logs
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
-| +--- androidx.compose.runtime:runtime -> 1.7.0-rc01 (*)
-| +--- com.google.firebase:firebase-bom:33.2.0 (*)
-| \--- com.google.firebase:firebase-analytics-ktx -> 22.1.0 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
+| +--- androidx.compose.runtime:runtime -> 1.7.6 (*)
+| +--- com.google.firebase:firebase-bom:33.7.0 (*)
+| \--- com.google.firebase:firebase-analytics-ktx -> 22.1.2 (*)
+--- project :core:common
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| \--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| \--- com.google.dagger:hilt-android:2.54 (*)
+--- project :core:model
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0-RC
+| | \--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0-RC
+| | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0-RC
+| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0-RC (c)
+| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0-RC (c)
+| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0-RC (c)
+| | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0-RC (c)
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0-RC
+| | \--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0-RC
+| | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0-RC (*)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
| +--- com.squareup.retrofit2:converter-gson:2.11.0
| | +--- com.squareup.retrofit2:retrofit:2.11.0
| | | \--- com.squareup.okhttp3:okhttp:3.14.9 -> 4.12.0 (*)
| | \--- com.google.code.gson:gson:2.10.1
-| \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| \--- org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.0.20
-| \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
+| \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.0
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| \--- org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.0
+| \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+--- project :core:data
| +--- project :core:common (*)
| +--- project :core:model (*)
@@ -1090,542 +1059,621 @@
| | +--- project :core:common (*)
| | +--- project :core:model (*)
| | +--- project :core:datastore
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| | | +--- com.google.dagger:hilt-android:2.54 (*)
| | | +--- project :core:common (*)
-| | | +--- project :core:model (*)
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| | | +--- com.google.dagger:hilt-android:2.52 (*)
-| | | +--- com.squareup.retrofit2:converter-gson:2.11.0 (*)
-| | | +--- com.github.Raizlabs.DBFlow:dbflow:4.2.4
-| | | | +--- com.github.Raizlabs.DBFlow:dbflow-core:4.2.4
-| | | | \--- com.android.support:support-annotations:26.0.1 -> androidx.annotation:annotation:1.8.1 (*)
-| | | +--- com.github.Raizlabs.DBFlow:dbflow-core:4.2.4
-| | | +--- io.reactivex.rxjava2:rxandroid:2.1.1
-| | | | \--- io.reactivex.rxjava2:rxjava:2.2.6 -> 2.2.21
-| | | | \--- org.reactivestreams:reactive-streams:1.0.3 -> 1.0.4
-| | | \--- io.reactivex.rxjava2:rxjava:2.2.21 (*)
-| | +--- com.google.dagger:hilt-android:2.52 (*)
+| | | \--- project :core:model (*)
+| | +--- com.google.dagger:hilt-android:2.54 (*)
| | +--- com.squareup.retrofit2:retrofit:2.11.0 (*)
| | +--- com.squareup.retrofit2:adapter-rxjava2:2.11.0
| | | +--- com.squareup.retrofit2:retrofit:2.11.0 (*)
-| | | +--- io.reactivex.rxjava2:rxjava:2.2.21 (*)
+| | | +--- io.reactivex.rxjava2:rxjava:2.2.21
+| | | | \--- org.reactivestreams:reactive-streams:1.0.3 -> 1.0.4
| | | \--- org.reactivestreams:reactive-streams:1.0.4
| | +--- com.squareup.retrofit2:converter-gson:2.11.0 (*)
| | +--- com.squareup.okhttp3:logging-interceptor:4.12.0
| | | +--- com.squareup.okhttp3:okhttp:4.12.0 (*)
| | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21 -> 1.9.10 (*)
| | +--- com.squareup.okhttp3:okhttp:4.12.0 (*)
-| | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 (*)
-| | \--- org.mockito:mockito-core:5.4.0
-| | +--- net.bytebuddy:byte-buddy:1.14.5
-| | +--- net.bytebuddy:byte-buddy-agent:1.14.5
+| | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0 (*)
+| | \--- org.mockito:mockito-core:5.6.0
+| | +--- net.bytebuddy:byte-buddy:1.14.8
+| | +--- net.bytebuddy:byte-buddy-agent:1.14.8
| | \--- org.objenesis:objenesis:3.3
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- project :core:database
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| | +--- androidx.room:room-runtime:2.6.1
+| | | +--- androidx.annotation:annotation-experimental:1.1.0-rc01 -> 1.4.1 (*)
+| | | +--- androidx.arch.core:core-runtime:2.2.0 (*)
+| | | +--- androidx.room:room-common:2.6.1
+| | | | +--- androidx.annotation:annotation:1.3.0 -> 1.8.1 (*)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 -> 1.9.10 (*)
+| | | | +--- androidx.room:room-ktx:2.6.1 (c)
+| | | | \--- androidx.room:room-runtime:2.6.1 (c)
+| | | +--- androidx.sqlite:sqlite:2.4.0
+| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | \--- androidx.sqlite:sqlite-framework:2.4.0 (c)
+| | | +--- androidx.sqlite:sqlite-framework:2.4.0
+| | | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*)
+| | | | +--- androidx.sqlite:sqlite:2.4.0 (*)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | \--- androidx.sqlite:sqlite:2.4.0 (c)
+| | | +--- androidx.room:room-common:2.6.1 (c)
+| | | \--- androidx.room:room-ktx:2.6.1 (c)
+| | +--- androidx.room:room-ktx:2.6.1
+| | | +--- androidx.room:room-common:2.6.1 (*)
+| | | +--- androidx.room:room-runtime:2.6.1 (*)
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1 -> 1.10.1 (*)
+| | | +--- androidx.room:room-common:2.6.1 (c)
+| | | \--- androidx.room:room-runtime:2.6.1 (c)
+| | +--- com.google.dagger:hilt-android:2.54 (*)
+| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+| | \--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0-RC (*)
+| +--- project :core:datastore (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- com.squareup.retrofit2:retrofit:2.11.0 (*)
| +--- com.squareup.okhttp3:okhttp:4.12.0 (*)
-| +--- org.mockito:mockito-core:5.4.0 (*)
+| +--- org.mockito:mockito-core:5.6.0 (*)
| +--- app.cash.turbine:turbine:1.1.0
| | \--- app.cash.turbine:turbine-jvm:1.1.0
-| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 (*)
-| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.20 (*)
-| | \--- org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0
-| | \--- org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.0
+| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.10.1 (*)
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.1.0 (*)
+| | \--- org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0 -> 1.10.1
+| | \--- org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.10.1
| | +--- org.jetbrains:annotations:23.0.0
-| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0 (*)
-| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 (*)
-| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.0.20 (*)
-| \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*)
-+--- project :core:datastore (*)
+| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1 (*)
+| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.0 (*)
++--- project :core:database (*)
+--- project :core:ui
| +--- project :core:designsystem
-| | +--- androidx.compose.ui:ui -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.foundation:foundation -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.foundation:foundation-layout -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.material:material-icons-extended -> 1.6.8
-| | | \--- androidx.compose.material:material-icons-extended-android:1.6.8
-| | | +--- androidx.compose.material:material-icons-core:1.6.8 (*)
-| | | +--- androidx.compose.runtime:runtime:1.6.8 -> 1.7.0-rc01 (*)
-| | | +--- androidx.compose.material:material:1.6.8 (c)
-| | | +--- androidx.compose.material:material-icons-core:1.6.8 (c)
-| | | \--- androidx.compose.material:material-ripple:1.6.8 (c)
-| | +--- androidx.compose.material3:material3:1.2.1 (*)
-| | +--- androidx.compose.runtime:runtime -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.ui:ui-util -> 1.7.0-rc01 (*)
-| | +--- androidx.activity:activity-compose:1.9.1 (*)
-| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| | +--- androidx.compose:compose-bom:2024.08.00 (*)
-| | +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
+| | +--- androidx.compose.ui:ui -> 1.7.6 (*)
+| | +--- androidx.compose.foundation:foundation -> 1.7.6 (*)
+| | +--- androidx.compose.foundation:foundation-layout -> 1.7.6 (*)
+| | +--- androidx.compose.material:material-icons-extended -> 1.7.6
+| | | \--- androidx.compose.material:material-icons-extended-android:1.7.6
+| | | +--- androidx.compose.material:material-icons-core:1.7.6 (*)
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.8.22 -> 2.1.0 (*)
+| | +--- androidx.compose.material3:material3:1.3.1 (*)
+| | +--- androidx.compose.runtime:runtime -> 1.7.6 (*)
+| | +--- androidx.compose.ui:ui-util -> 1.7.6 (*)
+| | +--- androidx.activity:activity-compose:1.9.3 (*)
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| | +--- androidx.compose:compose-bom:2024.12.01 (*)
+| | +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
| | \--- com.google.accompanist:accompanist-pager:0.34.0
-| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4 -> 1.8.0 (*)
-| | +--- androidx.compose.foundation:foundation:1.6.0 -> 1.7.0-rc01 (*)
+| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4 -> 1.10.1 (*)
+| | +--- androidx.compose.foundation:foundation:1.6.0 -> 1.7.6 (*)
| | +--- dev.chrisbanes.snapper:snapper:0.2.2
-| | | +--- androidx.compose.foundation:foundation:1.1.1 -> 1.7.0-rc01 (*)
+| | | +--- androidx.compose.foundation:foundation:1.1.1 -> 1.7.6 (*)
| | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10 -> 1.9.10 (*)
-| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.20 (*)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.1.0 (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
| +--- androidx.metrics:metrics-performance:1.0.0-beta01
-| | +--- androidx.collection:collection:1.1.0 -> 1.4.2 (*)
-| | +--- androidx.core:core:1.5.0 -> 1.13.1 (*)
-| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| \--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
+| | +--- androidx.collection:collection:1.1.0 -> 1.4.4 (*)
+| | +--- androidx.core:core:1.5.0 -> 1.15.0 (*)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| \--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
+--- project :core:designsystem (*)
+--- project :feature:loan
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- project :core:designsystem (*)
| +--- project :core:ui (*)
| +--- project :core:data (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7
-| | \--- org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.7
-| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.0.20 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8
+| | \--- org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.1.0 (*)
| +--- androidx.hilt:hilt-navigation-compose:1.2.0
-| | +--- androidx.compose.runtime:runtime:1.0.1 -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.ui:ui:1.0.1 -> 1.7.0-rc01 (*)
+| | +--- androidx.compose.runtime:runtime:1.0.1 -> 1.7.6 (*)
+| | +--- androidx.compose.ui:ui:1.0.1 -> 1.7.6 (*)
| | +--- androidx.hilt:hilt-navigation:1.2.0
| | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
-| | | +--- androidx.navigation:navigation-runtime:2.5.1 -> 2.8.0-rc01 (*)
-| | | +--- com.google.dagger:hilt-android:2.49 -> 2.52 (*)
-| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1 -> 2.8.4 (*)
-| | +--- androidx.navigation:navigation-compose:2.5.1 -> 2.8.0-rc01 (*)
-| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
+| | | +--- androidx.navigation:navigation-runtime:2.5.1 -> 2.8.5
+| | | | +--- androidx.activity:activity-ktx:1.7.1 -> 1.9.3 (*)
+| | | | +--- androidx.annotation:annotation-experimental:1.4.1 (*)
+| | | | +--- androidx.collection:collection:1.4.2 -> 1.4.4 (*)
+| | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.2 -> 2.8.7 (*)
+| | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2 -> 2.8.7 (*)
+| | | | +--- androidx.navigation:navigation-common:2.8.5
+| | | | | +--- androidx.annotation:annotation:1.8.1 (*)
+| | | | | +--- androidx.collection:collection-ktx:1.4.2 -> 1.4.4 (*)
+| | | | | +--- androidx.core:core-ktx:1.1.0 -> 1.15.0 (*)
+| | | | | +--- androidx.lifecycle:lifecycle-common:2.6.2 -> 2.8.7 (*)
+| | | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.2 -> 2.8.7 (*)
+| | | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2 -> 2.8.7 (*)
+| | | | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.2 -> 2.8.7 (*)
+| | | | | +--- androidx.profileinstaller:profileinstaller:1.3.1 -> 1.4.1 (*)
+| | | | | +--- androidx.savedstate:savedstate-ktx:1.2.1 (*)
+| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 -> 1.8.0-RC (*)
+| | | | | +--- androidx.navigation:navigation-common-ktx:2.8.5 (c)
+| | | | | +--- androidx.navigation:navigation-compose:2.8.5 (c)
+| | | | | +--- androidx.navigation:navigation-runtime:2.8.5 (c)
+| | | | | \--- androidx.navigation:navigation-runtime-ktx:2.8.5 (c)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 -> 1.8.0-RC (*)
+| | | | +--- androidx.navigation:navigation-common:2.8.5 (c)
+| | | | +--- androidx.navigation:navigation-common-ktx:2.8.5 (c)
+| | | | +--- androidx.navigation:navigation-compose:2.8.5 (c)
+| | | | \--- androidx.navigation:navigation-runtime-ktx:2.8.5 (c)
+| | | +--- com.google.dagger:hilt-android:2.49 -> 2.54 (*)
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1 -> 2.8.7 (*)
+| | +--- androidx.navigation:navigation-compose:2.5.1 -> 2.8.5
+| | | +--- androidx.activity:activity-compose:1.8.0 -> 1.9.3 (*)
+| | | +--- androidx.compose.animation:animation:1.7.2 -> 1.7.6 (*)
+| | | +--- androidx.compose.foundation:foundation-layout:1.7.2 -> 1.7.6 (*)
+| | | +--- androidx.compose.runtime:runtime:1.7.2 -> 1.7.6 (*)
+| | | +--- androidx.compose.runtime:runtime-saveable:1.7.2 -> 1.7.6 (*)
+| | | +--- androidx.compose.ui:ui:1.7.2 -> 1.7.6 (*)
+| | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2 -> 2.8.7 (*)
+| | | +--- androidx.navigation:navigation-runtime-ktx:2.8.5
+| | | | +--- androidx.navigation:navigation-common-ktx:2.8.5
+| | | | | +--- androidx.navigation:navigation-common:2.8.5 (*)
+| | | | | +--- androidx.navigation:navigation-common:2.8.5 (c)
+| | | | | +--- androidx.navigation:navigation-compose:2.8.5 (c)
+| | | | | +--- androidx.navigation:navigation-runtime:2.8.5 (c)
+| | | | | \--- androidx.navigation:navigation-runtime-ktx:2.8.5 (c)
+| | | | +--- androidx.navigation:navigation-runtime:2.8.5 (*)
+| | | | +--- androidx.navigation:navigation-common-ktx:2.8.5 (c)
+| | | | +--- androidx.navigation:navigation-compose:2.8.5 (c)
+| | | | +--- androidx.navigation:navigation-runtime:2.8.5 (c)
+| | | | \--- androidx.navigation:navigation-common:2.8.5 (c)
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 -> 1.8.0-RC (*)
+| | | +--- androidx.navigation:navigation-runtime-ktx:2.8.5 (c)
+| | | +--- androidx.navigation:navigation-runtime:2.8.5 (c)
+| | | +--- androidx.navigation:navigation-common-ktx:2.8.5 (c)
+| | | \--- androidx.navigation:navigation-common:2.8.5 (c)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
| \--- project :core:qrcode
| +--- com.google.zxing:core:3.5.3
| +--- com.squareup.retrofit2:converter-gson:2.11.0 (*)
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
| +--- project :core:model (*)
-| +--- androidx.compose.ui:ui -> 1.7.0-rc01 (*)
-| +--- androidx.camera:camera-camera2:1.3.4
+| +--- androidx.compose.ui:ui -> 1.7.6 (*)
+| +--- androidx.camera:camera-camera2:1.4.1
| | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*)
-| | +--- androidx.camera:camera-core:1.3.4
+| | +--- androidx.camera:camera-core:1.4.1
| | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*)
-| | | +--- androidx.annotation:annotation-experimental:1.1.0 -> 1.4.1 (*)
-| | | +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*)
-| | | +--- androidx.core:core:1.1.0 -> 1.13.1 (*)
+| | | +--- androidx.annotation:annotation-experimental:1.4.1 (*)
+| | | +--- androidx.concurrent:concurrent-futures:1.1.0 (*)
+| | | +--- androidx.concurrent:concurrent-futures-ktx:1.1.0
+| | | | +--- androidx.concurrent:concurrent-futures:1.1.0 (*)
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.71 -> 2.1.0 (*)
+| | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.4 -> 1.10.1 (*)
+| | | +--- androidx.core:core:1.1.0 -> 1.15.0 (*)
| | | +--- androidx.exifinterface:exifinterface:1.3.2
| | | | \--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*)
-| | | +--- androidx.lifecycle:lifecycle-common:2.1.0 -> 2.8.4 (*)
-| | | +--- androidx.lifecycle:lifecycle-livedata:2.1.0 -> 2.8.4 (*)
+| | | +--- androidx.lifecycle:lifecycle-common:2.1.0 -> 2.8.7 (*)
+| | | +--- androidx.lifecycle:lifecycle-livedata:2.1.0 -> 2.8.7 (*)
+| | | +--- androidx.tracing:tracing:1.2.0 (*)
| | | +--- com.google.auto.value:auto-value-annotations:1.6.3
| | | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*)
-| | | +--- androidx.camera:camera-camera2:1.3.4 (c)
-| | | +--- androidx.camera:camera-lifecycle:1.3.4 (c)
-| | | +--- androidx.camera:camera-view:1.3.4 (c)
-| | | \--- androidx.camera:camera-video:1.3.4 (c)
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.10.1 (*)
+| | | +--- androidx.camera:camera-camera2:1.4.1 (c)
+| | | +--- androidx.camera:camera-lifecycle:1.4.1 (c)
+| | | +--- androidx.camera:camera-view:1.4.1 (c)
+| | | \--- androidx.camera:camera-video:1.4.1 (c)
| | +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*)
-| | +--- androidx.core:core:1.1.0 -> 1.13.1 (*)
+| | +--- androidx.core:core:1.1.0 -> 1.15.0 (*)
+| | +--- androidx.tracing:tracing:1.2.0 (*)
| | +--- com.google.auto.value:auto-value-annotations:1.6.3
| | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
-| | +--- androidx.camera:camera-core:1.3.4 (c)
-| | +--- androidx.camera:camera-lifecycle:1.3.4 (c)
-| | +--- androidx.camera:camera-view:1.3.4 (c)
-| | \--- androidx.camera:camera-video:1.3.4 (c)
-| +--- androidx.camera:camera-lifecycle:1.3.4
-| | +--- androidx.camera:camera-core:1.3.4 (*)
-| | +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*)
-| | +--- androidx.core:core:1.1.0 -> 1.13.1 (*)
-| | +--- androidx.lifecycle:lifecycle-common:2.1.0 -> 2.8.4 (*)
+| | +--- androidx.camera:camera-core:1.4.1 (c)
+| | +--- androidx.camera:camera-lifecycle:1.4.1 (c)
+| | +--- androidx.camera:camera-view:1.4.1 (c)
+| | \--- androidx.camera:camera-video:1.4.1 (c)
+| +--- androidx.camera:camera-lifecycle:1.4.1
+| | +--- androidx.camera:camera-core:1.4.1 (*)
+| | +--- androidx.concurrent:concurrent-futures:1.1.0 (*)
+| | +--- androidx.concurrent:concurrent-futures-ktx:1.1.0 (*)
+| | +--- androidx.core:core:1.1.0 -> 1.15.0 (*)
+| | +--- androidx.lifecycle:lifecycle-common:2.1.0 -> 2.8.7 (*)
+| | +--- androidx.tracing:tracing-ktx:1.2.0
+| | | +--- androidx.tracing:tracing:1.2.0 (*)
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.21 -> 2.1.0 (*)
+| | | \--- androidx.tracing:tracing:1.2.0 (c)
| | +--- com.google.auto.value:auto-value-annotations:1.6.3
| | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
-| | +--- androidx.camera:camera-camera2:1.3.4 (c)
-| | +--- androidx.camera:camera-core:1.3.4 (c)
-| | +--- androidx.camera:camera-view:1.3.4 (c)
-| | \--- androidx.camera:camera-video:1.3.4 (c)
-| +--- androidx.camera:camera-view:1.3.4
+| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.10.1 (*)
+| | +--- androidx.camera:camera-camera2:1.4.1 (c)
+| | +--- androidx.camera:camera-core:1.4.1 (c)
+| | +--- androidx.camera:camera-view:1.4.1 (c)
+| | \--- androidx.camera:camera-video:1.4.1 (c)
+| +--- androidx.camera:camera-view:1.4.1
| | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*)
-| | +--- androidx.annotation:annotation-experimental:1.3.1 -> 1.4.1 (*)
+| | +--- androidx.annotation:annotation-experimental:1.4.1 (*)
| | +--- androidx.appcompat:appcompat:1.1.0 -> 1.7.0 (*)
-| | +--- androidx.camera:camera-core:1.3.4 (*)
-| | +--- androidx.camera:camera-lifecycle:1.3.4 (*)
-| | +--- androidx.camera:camera-video:1.3.4
+| | +--- androidx.camera:camera-core:1.4.1 (*)
+| | +--- androidx.camera:camera-lifecycle:1.4.1 (*)
+| | +--- androidx.camera:camera-video:1.4.1
| | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*)
-| | | +--- androidx.camera:camera-core:1.3.4 (*)
+| | | +--- androidx.camera:camera-core:1.4.1 (*)
| | | +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*)
-| | | +--- androidx.core:core:1.1.0 -> 1.13.1 (*)
+| | | +--- androidx.core:core:1.1.0 -> 1.15.0 (*)
| | | +--- com.google.auto.value:auto-value-annotations:1.6.3
-| | | +--- androidx.camera:camera-camera2:1.3.4 (c)
-| | | +--- androidx.camera:camera-core:1.3.4 (c)
-| | | +--- androidx.camera:camera-lifecycle:1.3.4 (c)
-| | | \--- androidx.camera:camera-view:1.3.4 (c)
+| | | +--- androidx.camera:camera-camera2:1.4.1 (c)
+| | | +--- androidx.camera:camera-core:1.4.1 (c)
+| | | +--- androidx.camera:camera-lifecycle:1.4.1 (c)
+| | | \--- androidx.camera:camera-view:1.4.1 (c)
| | +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*)
-| | +--- androidx.core:core:1.3.2 -> 1.13.1 (*)
-| | +--- androidx.lifecycle:lifecycle-common:2.0.0 -> 2.8.4 (*)
+| | +--- androidx.core:core:1.3.2 -> 1.15.0 (*)
+| | +--- androidx.lifecycle:lifecycle-common:2.0.0 -> 2.8.7 (*)
| | +--- com.google.auto.value:auto-value-annotations:1.6.3
| | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
-| | +--- androidx.camera:camera-camera2:1.3.4 (c)
-| | +--- androidx.camera:camera-core:1.3.4 (c)
-| | +--- androidx.camera:camera-lifecycle:1.3.4 (c)
-| | \--- androidx.camera:camera-video:1.3.4 (c)
-| \--- androidx.camera:camera-core:1.3.4 (*)
+| | +--- androidx.camera:camera-camera2:1.4.1 (c)
+| | +--- androidx.camera:camera-core:1.4.1 (c)
+| | +--- androidx.camera:camera-lifecycle:1.4.1 (c)
+| | \--- androidx.camera:camera-video:1.4.1 (c)
+| \--- androidx.camera:camera-core:1.4.1 (*)
+--- project :feature:beneficiary
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- project :core:designsystem (*)
| +--- project :core:ui (*)
| +--- project :core:data (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 (*)
| +--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
| \--- com.squareup.okhttp3:okhttp:4.12.0 (*)
+--- project :feature:guarantor
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- project :core:designsystem (*)
| +--- project :core:ui (*)
| +--- project :core:data (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 (*)
| +--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
| \--- com.squareup.okhttp3:okhttp:4.12.0 (*)
+--- project :feature:savings
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- project :core:designsystem (*)
| +--- project :core:ui (*)
| +--- project :core:data (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 (*)
| +--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
| +--- project :core:qrcode (*)
-| \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*)
+| \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.0 (*)
+--- project :feature:qr
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- project :core:designsystem (*)
| +--- project :core:ui (*)
| +--- project :core:data (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 (*)
| +--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
| +--- project :core:qrcode (*)
| +--- io.github.mr0xf00:easycrop:0.1.1
-| | +--- androidx.compose:compose-bom:2023.01.00 -> 2024.08.00 (*)
-| | +--- androidx.core:core-ktx:1.9.0 -> 1.13.1 (*)
-| | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.5.1 -> 2.8.4 (*)
-| | +--- androidx.activity:activity-compose:1.6.1 -> 1.9.1 (*)
-| | +--- androidx.compose.material:material -> 1.6.8 (*)
-| | +--- androidx.compose.ui:ui -> 1.7.0-rc01 (*)
+| | +--- androidx.compose:compose-bom:2023.01.00 -> 2024.12.01 (*)
+| | +--- androidx.core:core-ktx:1.9.0 -> 1.15.0 (*)
+| | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.5.1 -> 2.8.7 (*)
+| | +--- androidx.activity:activity-compose:1.6.1 -> 1.9.3 (*)
+| | +--- androidx.compose.material:material -> 1.7.6 (*)
+| | +--- androidx.compose.ui:ui -> 1.7.6 (*)
| | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 1.9.10 (*)
| +--- com.google.accompanist:accompanist-permissions:0.34.0
-| | +--- androidx.activity:activity-compose:1.7.2 -> 1.9.1 (*)
-| | +--- androidx.compose.foundation:foundation:1.6.0 -> 1.7.0-rc01 (*)
-| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4 -> 1.8.0 (*)
-| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.20 (*)
-| \--- androidx.camera:camera-core:1.3.4 (*)
+| | +--- androidx.activity:activity-compose:1.7.2 -> 1.9.3 (*)
+| | +--- androidx.compose.foundation:foundation:1.6.0 -> 1.7.6 (*)
+| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4 -> 1.10.1 (*)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.1.0 (*)
+| \--- androidx.camera:camera-core:1.4.1 (*)
+--- project :feature:transfer-process
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- project :core:designsystem (*)
| +--- project :core:ui (*)
| +--- project :core:data (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 (*)
| +--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
| \--- com.squareup.retrofit2:converter-gson:2.11.0 (*)
+--- project :feature:account
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- project :core:designsystem (*)
| +--- project :core:ui (*)
| +--- project :core:data (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 (*)
| +--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
| +--- project :libs:pullrefresh
-| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| | +--- androidx.compose:compose-bom:2024.08.00 (*)
-| | +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.animation:animation -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.material3:material3:1.2.1 (*)
-| | +--- androidx.compose.runtime:runtime -> 1.7.0-rc01 (*)
-| | \--- androidx.compose.ui:ui-util -> 1.7.0-rc01 (*)
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| | +--- androidx.compose:compose-bom:2024.12.01 (*)
+| | +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
+| | +--- androidx.compose.animation:animation -> 1.7.6 (*)
+| | +--- androidx.compose.material3:material3:1.3.1 (*)
+| | +--- androidx.compose.runtime:runtime -> 1.7.6 (*)
+| | \--- androidx.compose.ui:ui-util -> 1.7.6 (*)
| \--- com.google.accompanist:accompanist-pager:0.34.0 (*)
+--- project :feature:client-charge
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- project :core:designsystem (*)
| +--- project :core:ui (*)
| +--- project :core:data (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 (*)
| +--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
-| \--- com.github.Raizlabs.DBFlow:dbflow:4.2.4 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| \--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
+--- project :feature:recent-transaction
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- project :core:designsystem (*)
| +--- project :core:ui (*)
| +--- project :core:data (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 (*)
| +--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| \--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| \--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
+--- project :feature:third-party-transfer
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- project :core:designsystem (*)
| +--- project :core:ui (*)
| +--- project :core:data (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 (*)
| +--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
-| \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
+| \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.0 (*)
+--- project :feature:help
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- project :core:designsystem (*)
| +--- project :core:ui (*)
| +--- project :core:data (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 (*)
| +--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| \--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| \--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
+--- project :feature:notification
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- project :core:designsystem (*)
| +--- project :core:ui (*)
| +--- project :core:data (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 (*)
| +--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
-| +--- project :core:datastore (*)
-| \--- com.github.Raizlabs.DBFlow:dbflow:4.2.4 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| \--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
+--- project :feature:location
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- project :core:designsystem (*)
| +--- project :core:ui (*)
| +--- project :core:data (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 (*)
| +--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
| \--- com.google.maps.android:maps-compose:4.4.1
-| +--- androidx.compose:compose-bom:2024.04.00 -> 2024.08.00 (*)
-| +--- androidx.core:core-ktx:1.12.0 -> 1.13.1 (*)
-| +--- androidx.compose.foundation:foundation -> 1.7.0-rc01 (*)
-| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.23 -> 2.0.20 (*)
+| +--- androidx.compose:compose-bom:2024.04.00 -> 2024.12.01 (*)
+| +--- androidx.core:core-ktx:1.12.0 -> 1.15.0 (*)
+| +--- androidx.compose.foundation:foundation -> 1.7.6 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.23 -> 2.1.0 (*)
| \--- com.google.maps.android:maps-ktx:5.0.0
| +--- com.google.android.gms:play-services-maps:18.2.0
-| | +--- androidx.fragment:fragment:1.0.0 -> 1.7.1 (*)
+| | +--- androidx.fragment:fragment:1.0.0 -> 1.8.3 (*)
| | +--- com.google.android.gms:play-services-base:18.0.1 -> 18.5.0 (*)
| | +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.4.0 (*)
| | \--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.2.0 (*)
| \--- androidx.databinding:viewbinding:7.4.2
| \--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*)
+--- project :feature:about
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- project :core:designsystem (*)
| +--- project :core:ui (*)
| +--- project :core:data (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 (*)
| +--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| \--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| \--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
+--- project :feature:settings
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- project :core:designsystem (*)
| +--- project :core:ui (*)
| +--- project :core:data (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 (*)
| +--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
| \--- androidx.appcompat:appcompat:1.7.0 (*)
+--- project :feature:update-password
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- project :core:designsystem (*)
| +--- project :core:ui (*)
| +--- project :core:data (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 (*)
| +--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
| \--- com.squareup.okhttp3:okhttp:4.12.0 (*)
+--- project :feature:home
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- project :core:designsystem (*)
| +--- project :core:ui (*)
| +--- project :core:data (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 (*)
| +--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
| \--- com.squareup.okhttp3:okhttp:4.12.0 (*)
+--- project :feature:auth
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- project :core:designsystem (*)
| +--- project :core:ui (*)
| +--- project :core:data (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 (*)
| +--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
| +--- project :libs:country-code-picker
-| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| | +--- androidx.compose:compose-bom:2024.08.00 (*)
-| | +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.foundation:foundation -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.foundation:foundation-layout -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.material:material-icons-extended -> 1.6.8 (*)
-| | +--- androidx.compose.material3:material3:1.2.1 (*)
-| | +--- androidx.compose.runtime:runtime -> 1.7.0-rc01 (*)
-| | +--- androidx.compose.ui:ui-util -> 1.7.0-rc01 (*)
-| | +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7 (*)
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| | +--- androidx.compose:compose-bom:2024.12.01 (*)
+| | +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
+| | +--- androidx.compose.foundation:foundation -> 1.7.6 (*)
+| | +--- androidx.compose.foundation:foundation-layout -> 1.7.6 (*)
+| | +--- androidx.compose.material:material-icons-extended -> 1.7.6 (*)
+| | +--- androidx.compose.material3:material3:1.3.1 (*)
+| | +--- androidx.compose.runtime:runtime -> 1.7.6 (*)
+| | +--- androidx.compose.ui:ui-util -> 1.7.6 (*)
+| | +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 (*)
| | \--- io.michaelrocks:libphonenumber-android:8.13.35
| \--- com.squareup.okhttp3:okhttp:4.12.0 (*)
+--- project :feature:user-profile
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
| +--- project :core:designsystem (*)
| +--- project :core:ui (*)
| +--- project :core:data (*)
| +--- project :core:model (*)
| +--- project :core:common (*)
-| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 (*)
| +--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
| +--- com.squareup.okhttp3:okhttp:4.12.0 (*)
-| \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*)
+| \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.0 (*)
+--- project :libs:mifos-passcode
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*)
-| +--- androidx.compose:compose-bom:2024.08.00 (*)
-| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.0-rc01 (*)
-| +--- com.google.dagger:hilt-android:2.52 (*)
-| +--- androidx.core:core-ktx:1.13.1 (*)
-| +--- androidx.compose.foundation:foundation -> 1.7.0-rc01 (*)
-| +--- androidx.compose.foundation:foundation-layout -> 1.7.0-rc01 (*)
-| +--- androidx.compose.material:material-icons-extended -> 1.6.8 (*)
-| +--- androidx.compose.material3:material3:1.2.1 (*)
-| +--- androidx.compose.runtime:runtime -> 1.7.0-rc01 (*)
-| +--- androidx.compose.ui:ui-util -> 1.7.0-rc01 (*)
-| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 (*)
-| +--- androidx.navigation:navigation-compose:2.8.0-rc01 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+| +--- androidx.compose:compose-bom:2024.12.01 (*)
+| +--- androidx.compose.ui:ui-tooling-preview -> 1.7.6 (*)
+| +--- com.google.dagger:hilt-android:2.54 (*)
+| +--- androidx.core:core-ktx:1.15.0 (*)
+| +--- androidx.compose.foundation:foundation -> 1.7.6 (*)
+| +--- androidx.compose.foundation:foundation-layout -> 1.7.6 (*)
+| +--- androidx.compose.material:material-icons-extended -> 1.7.6 (*)
+| +--- androidx.compose.material3:material3:1.3.1 (*)
+| +--- androidx.compose.runtime:runtime -> 1.7.6 (*)
+| +--- androidx.compose.ui:ui-util -> 1.7.6 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*)
+| +--- androidx.navigation:navigation-compose:2.8.5 (*)
| \--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
+--- androidx.appcompat:appcompat:1.7.0 (*)
-+--- androidx.activity:activity-ktx:1.9.1 (*)
-+--- androidx.activity:activity-compose:1.9.1 (*)
-+--- androidx.compose.material3:material3:1.2.1 (*)
-+--- androidx.compose.material:material:1.6.8 (*)
-+--- androidx.compose.foundation:foundation -> 1.7.0-rc01 (*)
-+--- androidx.compose.foundation:foundation-layout -> 1.7.0-rc01 (*)
-+--- androidx.compose.material:material-icons-extended -> 1.6.8 (*)
-+--- androidx.compose.runtime:runtime -> 1.7.0-rc01 (*)
-+--- androidx.compose.ui:ui-util -> 1.7.0-rc01 (*)
-+--- androidx.lifecycle:lifecycle-runtime-compose:2.8.4 (*)
++--- androidx.activity:activity-ktx:1.9.3 (*)
++--- androidx.activity:activity-compose:1.9.3 (*)
++--- androidx.compose.material3:material3:1.3.1 (*)
++--- androidx.compose.material:material:1.7.6 (*)
++--- androidx.compose.foundation:foundation -> 1.7.6 (*)
++--- androidx.compose.foundation:foundation-layout -> 1.7.6 (*)
++--- androidx.compose.material:material-icons-extended -> 1.7.6 (*)
++--- androidx.compose.runtime:runtime -> 1.7.6 (*)
++--- androidx.compose.ui:ui-util -> 1.7.6 (*)
++--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*)
+--- androidx.hilt:hilt-navigation-compose:1.2.0 (*)
+--- androidx.core:core-splashscreen:1.0.1
| +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*)
-| \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 -> 2.0.20 (*)
-+--- androidx.tracing:tracing-ktx:1.2.0
-| +--- androidx.tracing:tracing:1.2.0 (*)
-| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.21 -> 2.0.20 (*)
-| \--- androidx.tracing:tracing:1.2.0 (c)
-+--- androidx.profileinstaller:profileinstaller:1.3.1 (*)
+| \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 -> 2.1.0 (*)
++--- androidx.tracing:tracing-ktx:1.2.0 (*)
++--- androidx.profileinstaller:profileinstaller:1.4.1 (*)
+--- com.google.android.gms:play-services-oss-licenses:17.1.0
| +--- androidx.appcompat:appcompat:1.0.0 -> 1.7.0 (*)
| +--- androidx.loader:loader:1.0.0 (*)
| +--- com.google.android.gms:play-services-base:18.5.0 (*)
| +--- com.google.android.gms:play-services-basement:18.4.0 (*)
| \--- com.google.android.gms:play-services-tasks:18.2.0 (*)
-+--- androidx.multidex:multidex:2.0.1
-\--- com.github.Raizlabs.DBFlow:dbflow:4.2.4 (*)
+\--- androidx.multidex:multidex:2.0.1
diff --git a/androidApp/dependencies/releaseRuntimeClasspath.txt b/androidApp/dependencies/releaseRuntimeClasspath.txt
index c1d6603bb..3f7ecb2b6 100644
--- a/androidApp/dependencies/releaseRuntimeClasspath.txt
+++ b/androidApp/dependencies/releaseRuntimeClasspath.txt
@@ -1,5 +1,6 @@
:core:common
:core:data
+:core:database
:core:datastore
:core:designsystem
:core:logs
@@ -30,9 +31,9 @@
:libs:mifos-passcode
:libs:pullrefresh
:shared
-androidx.activity:activity-compose:1.9.1
-androidx.activity:activity-ktx:1.9.1
-androidx.activity:activity:1.9.1
+androidx.activity:activity-compose:1.9.3
+androidx.activity:activity-ktx:1.9.3
+androidx.activity:activity:1.9.3
androidx.annotation:annotation-experimental:1.4.1
androidx.annotation:annotation-jvm:1.8.1
androidx.annotation:annotation:1.8.1
@@ -41,55 +42,56 @@ androidx.appcompat:appcompat:1.7.0
androidx.arch.core:core-common:2.2.0
androidx.arch.core:core-runtime:2.2.0
androidx.autofill:autofill:1.0.0
-androidx.camera:camera-camera2:1.3.4
-androidx.camera:camera-core:1.3.4
-androidx.camera:camera-lifecycle:1.3.4
-androidx.camera:camera-video:1.3.4
-androidx.camera:camera-view:1.3.4
-androidx.collection:collection-jvm:1.4.2
-androidx.collection:collection-ktx:1.4.2
-androidx.collection:collection:1.4.2
-androidx.compose.animation:animation-android:1.7.0-rc01
-androidx.compose.animation:animation-core-android:1.7.0-rc01
-androidx.compose.animation:animation-core:1.7.0-rc01
-androidx.compose.animation:animation:1.7.0-rc01
-androidx.compose.foundation:foundation-android:1.7.0-rc01
-androidx.compose.foundation:foundation-layout-android:1.7.0-rc01
-androidx.compose.foundation:foundation-layout:1.7.0-rc01
-androidx.compose.foundation:foundation:1.7.0-rc01
-androidx.compose.material3:material3-android:1.2.1
-androidx.compose.material3:material3:1.2.1
-androidx.compose.material:material-android:1.6.8
-androidx.compose.material:material-icons-core-android:1.6.8
-androidx.compose.material:material-icons-core:1.6.8
-androidx.compose.material:material-icons-extended-android:1.6.8
-androidx.compose.material:material-icons-extended:1.6.8
-androidx.compose.material:material-ripple-android:1.6.8
-androidx.compose.material:material-ripple:1.6.8
-androidx.compose.material:material:1.6.8
-androidx.compose.runtime:runtime-android:1.7.0-rc01
-androidx.compose.runtime:runtime-saveable-android:1.7.0-rc01
-androidx.compose.runtime:runtime-saveable:1.7.0-rc01
-androidx.compose.runtime:runtime:1.7.0-rc01
-androidx.compose.ui:ui-android:1.7.0-rc01
-androidx.compose.ui:ui-geometry-android:1.7.0-rc01
-androidx.compose.ui:ui-geometry:1.7.0-rc01
-androidx.compose.ui:ui-graphics-android:1.7.0-rc01
-androidx.compose.ui:ui-graphics:1.7.0-rc01
-androidx.compose.ui:ui-text-android:1.7.0-rc01
-androidx.compose.ui:ui-text:1.7.0-rc01
-androidx.compose.ui:ui-tooling-preview-android:1.7.0-rc01
-androidx.compose.ui:ui-tooling-preview:1.7.0-rc01
-androidx.compose.ui:ui-unit-android:1.7.0-rc01
-androidx.compose.ui:ui-unit:1.7.0-rc01
-androidx.compose.ui:ui-util-android:1.7.0-rc01
-androidx.compose.ui:ui-util:1.7.0-rc01
-androidx.compose.ui:ui:1.7.0-rc01
-androidx.compose:compose-bom:2024.08.00
+androidx.camera:camera-camera2:1.4.1
+androidx.camera:camera-core:1.4.1
+androidx.camera:camera-lifecycle:1.4.1
+androidx.camera:camera-video:1.4.1
+androidx.camera:camera-view:1.4.1
+androidx.collection:collection-jvm:1.4.4
+androidx.collection:collection-ktx:1.4.4
+androidx.collection:collection:1.4.4
+androidx.compose.animation:animation-android:1.7.6
+androidx.compose.animation:animation-core-android:1.7.6
+androidx.compose.animation:animation-core:1.7.6
+androidx.compose.animation:animation:1.7.6
+androidx.compose.foundation:foundation-android:1.7.6
+androidx.compose.foundation:foundation-layout-android:1.7.6
+androidx.compose.foundation:foundation-layout:1.7.6
+androidx.compose.foundation:foundation:1.7.6
+androidx.compose.material3:material3-android:1.3.1
+androidx.compose.material3:material3:1.3.1
+androidx.compose.material:material-android:1.7.6
+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.7.6
+androidx.compose.material:material-ripple:1.7.6
+androidx.compose.material:material:1.7.6
+androidx.compose.runtime:runtime-android:1.7.6
+androidx.compose.runtime:runtime-saveable-android:1.7.6
+androidx.compose.runtime:runtime-saveable:1.7.6
+androidx.compose.runtime:runtime:1.7.6
+androidx.compose.ui:ui-android:1.7.6
+androidx.compose.ui:ui-geometry-android:1.7.6
+androidx.compose.ui:ui-geometry:1.7.6
+androidx.compose.ui:ui-graphics-android:1.7.6
+androidx.compose.ui:ui-graphics:1.7.6
+androidx.compose.ui:ui-text-android:1.7.6
+androidx.compose.ui:ui-text:1.7.6
+androidx.compose.ui:ui-tooling-preview-android:1.7.6
+androidx.compose.ui:ui-tooling-preview:1.7.6
+androidx.compose.ui:ui-unit-android:1.7.6
+androidx.compose.ui:ui-unit:1.7.6
+androidx.compose.ui:ui-util-android:1.7.6
+androidx.compose.ui:ui-util:1.7.6
+androidx.compose.ui:ui:1.7.6
+androidx.compose:compose-bom:2024.12.01
+androidx.concurrent:concurrent-futures-ktx:1.1.0
androidx.concurrent:concurrent-futures:1.1.0
-androidx.core:core-ktx:1.13.1
+androidx.core:core-ktx:1.15.0
androidx.core:core-splashscreen:1.0.1
-androidx.core:core:1.13.1
+androidx.core:core:1.15.0
androidx.cursoradapter:cursoradapter:1.0.0
androidx.customview:customview-poolingcontainer:1.0.0
androidx.customview:customview:1.0.0
@@ -103,48 +105,53 @@ androidx.drawerlayout:drawerlayout:1.0.0
androidx.emoji2:emoji2-views-helper:1.3.0
androidx.emoji2:emoji2:1.3.0
androidx.exifinterface:exifinterface:1.3.2
-androidx.fragment:fragment-ktx:1.7.1
-androidx.fragment:fragment:1.7.1
+androidx.fragment:fragment-ktx:1.8.3
+androidx.fragment:fragment:1.8.3
androidx.graphics:graphics-path:1.0.1
androidx.hilt:hilt-navigation-compose:1.2.0
androidx.hilt:hilt-navigation:1.2.0
androidx.interpolator:interpolator:1.0.0
androidx.legacy:legacy-support-core-utils:1.0.0
-androidx.lifecycle:lifecycle-common-java8:2.8.4
-androidx.lifecycle:lifecycle-common-jvm:2.8.4
-androidx.lifecycle:lifecycle-common:2.8.4
-androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.4
-androidx.lifecycle:lifecycle-livedata-core:2.8.4
-androidx.lifecycle:lifecycle-livedata:2.8.4
-androidx.lifecycle:lifecycle-process:2.8.4
-androidx.lifecycle:lifecycle-runtime-android:2.8.4
-androidx.lifecycle:lifecycle-runtime-compose-android:2.8.4
-androidx.lifecycle:lifecycle-runtime-compose:2.8.4
-androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.4
-androidx.lifecycle:lifecycle-runtime-ktx:2.8.4
-androidx.lifecycle:lifecycle-runtime:2.8.4
-androidx.lifecycle:lifecycle-viewmodel-android:2.8.4
-androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.4
-androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4
-androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4
-androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.4
-androidx.lifecycle:lifecycle-viewmodel:2.8.4
+androidx.lifecycle:lifecycle-common-java8:2.8.7
+androidx.lifecycle:lifecycle-common-jvm:2.8.7
+androidx.lifecycle:lifecycle-common:2.8.7
+androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7
+androidx.lifecycle:lifecycle-livedata-core:2.8.7
+androidx.lifecycle:lifecycle-livedata:2.8.7
+androidx.lifecycle:lifecycle-process:2.8.7
+androidx.lifecycle:lifecycle-runtime-android:2.8.7
+androidx.lifecycle:lifecycle-runtime-compose-android:2.8.7
+androidx.lifecycle:lifecycle-runtime-compose:2.8.7
+androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.7
+androidx.lifecycle:lifecycle-runtime-ktx:2.8.7
+androidx.lifecycle:lifecycle-runtime:2.8.7
+androidx.lifecycle:lifecycle-viewmodel-android:2.8.7
+androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.7
+androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7
+androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7
+androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7
+androidx.lifecycle:lifecycle-viewmodel:2.8.7
androidx.loader:loader:1.0.0
androidx.localbroadcastmanager:localbroadcastmanager:1.0.0
androidx.metrics:metrics-performance:1.0.0-beta01
androidx.multidex:multidex:2.0.1
-androidx.navigation:navigation-common-ktx:2.8.0-rc01
-androidx.navigation:navigation-common:2.8.0-rc01
-androidx.navigation:navigation-compose:2.8.0-rc01
-androidx.navigation:navigation-runtime-ktx:2.8.0-rc01
-androidx.navigation:navigation-runtime:2.8.0-rc01
+androidx.navigation:navigation-common-ktx:2.8.5
+androidx.navigation:navigation-common:2.8.5
+androidx.navigation:navigation-compose:2.8.5
+androidx.navigation:navigation-runtime-ktx:2.8.5
+androidx.navigation:navigation-runtime:2.8.5
androidx.print:print:1.0.0
androidx.privacysandbox.ads:ads-adservices-java:1.0.0-beta05
androidx.privacysandbox.ads:ads-adservices:1.0.0-beta05
-androidx.profileinstaller:profileinstaller:1.3.1
+androidx.profileinstaller:profileinstaller:1.4.1
androidx.resourceinspection:resourceinspection-annotation:1.0.1
+androidx.room:room-common:2.6.1
+androidx.room:room-ktx:2.6.1
+androidx.room:room-runtime:2.6.1
androidx.savedstate:savedstate-ktx:1.2.1
androidx.savedstate:savedstate:1.2.1
+androidx.sqlite:sqlite-framework:2.4.0
+androidx.sqlite:sqlite:2.4.0
androidx.startup:startup-runtime:1.1.1
androidx.tracing:tracing-ktx:1.2.0
androidx.tracing:tracing:1.2.0
@@ -154,14 +161,12 @@ androidx.versionedparcelable:versionedparcelable:1.1.1
androidx.viewpager:viewpager:1.0.0
app.cash.turbine:turbine-jvm:1.1.0
app.cash.turbine:turbine:1.1.0
-co.touchlab:stately-concurrency-jvm:2.0.6
-co.touchlab:stately-concurrency:2.0.6
-co.touchlab:stately-concurrent-collections-jvm:2.0.6
-co.touchlab:stately-concurrent-collections:2.0.6
-co.touchlab:stately-strict-jvm:2.0.6
-co.touchlab:stately-strict:2.0.6
-com.github.Raizlabs.DBFlow:dbflow-core:4.2.4
-com.github.Raizlabs.DBFlow:dbflow:4.2.4
+co.touchlab:stately-concurrency-jvm:2.1.0
+co.touchlab:stately-concurrency:2.1.0
+co.touchlab:stately-concurrent-collections-jvm:2.1.0
+co.touchlab:stately-concurrent-collections:2.1.0
+co.touchlab:stately-strict-jvm:2.1.0
+co.touchlab:stately-strict:2.1.0
com.google.accompanist:accompanist-pager:0.34.0
com.google.accompanist:accompanist-permissions:0.34.0
com.google.android.datatransport:transport-api:3.2.0
@@ -172,35 +177,35 @@ com.google.android.gms:play-services-base:18.5.0
com.google.android.gms:play-services-basement:18.4.0
com.google.android.gms:play-services-cloud-messaging:17.2.0
com.google.android.gms:play-services-maps:18.2.0
-com.google.android.gms:play-services-measurement-api:22.1.0
-com.google.android.gms:play-services-measurement-base:22.1.0
-com.google.android.gms:play-services-measurement-impl:22.1.0
-com.google.android.gms:play-services-measurement-sdk-api:22.1.0
-com.google.android.gms:play-services-measurement-sdk:22.1.0
-com.google.android.gms:play-services-measurement:22.1.0
+com.google.android.gms:play-services-measurement-api:22.1.2
+com.google.android.gms:play-services-measurement-base:22.1.2
+com.google.android.gms:play-services-measurement-impl:22.1.2
+com.google.android.gms:play-services-measurement-sdk-api:22.1.2
+com.google.android.gms:play-services-measurement-sdk:22.1.2
+com.google.android.gms:play-services-measurement:22.1.2
com.google.android.gms:play-services-oss-licenses:17.1.0
com.google.android.gms:play-services-stats:17.0.2
com.google.android.gms:play-services-tasks:18.2.0
com.google.auto.value:auto-value-annotations:1.6.3
com.google.code.findbugs:jsr305:3.0.2
com.google.code.gson:gson:2.10.1
-com.google.dagger:dagger-lint-aar:2.52
-com.google.dagger:dagger:2.52
-com.google.dagger:hilt-android:2.52
-com.google.dagger:hilt-core:2.52
+com.google.dagger:dagger-lint-aar:2.54
+com.google.dagger:dagger:2.54
+com.google.dagger:hilt-android:2.54
+com.google.dagger:hilt-core:2.54
com.google.errorprone:error_prone_annotations:2.26.0
com.google.firebase:firebase-abt:21.1.1
-com.google.firebase:firebase-analytics-ktx:22.1.0
-com.google.firebase:firebase-analytics:22.1.0
+com.google.firebase:firebase-analytics-ktx:22.1.2
+com.google.firebase:firebase-analytics:22.1.2
com.google.firebase:firebase-annotations:16.2.0
-com.google.firebase:firebase-bom:33.2.0
+com.google.firebase:firebase-bom:33.7.0
com.google.firebase:firebase-common-ktx:21.0.0
com.google.firebase:firebase-common:21.0.0
com.google.firebase:firebase-components:18.0.0
com.google.firebase:firebase-config-interop:16.0.1
-com.google.firebase:firebase-config:22.0.0
-com.google.firebase:firebase-crashlytics-ktx:19.0.3
-com.google.firebase:firebase-crashlytics:19.0.3
+com.google.firebase:firebase-config:22.0.1
+com.google.firebase:firebase-crashlytics-ktx:19.3.0
+com.google.firebase:firebase-crashlytics:19.3.0
com.google.firebase:firebase-datatransport:19.0.0
com.google.firebase:firebase-encoders-json:18.0.1
com.google.firebase:firebase-encoders-proto:16.0.0
@@ -209,11 +214,11 @@ com.google.firebase:firebase-iid-interop:17.1.0
com.google.firebase:firebase-installations-interop:17.2.0
com.google.firebase:firebase-installations:18.0.0
com.google.firebase:firebase-measurement-connector:20.0.1
-com.google.firebase:firebase-messaging-ktx:24.0.1
-com.google.firebase:firebase-messaging:24.0.1
-com.google.firebase:firebase-perf-ktx:21.0.1
-com.google.firebase:firebase-perf:21.0.1
-com.google.firebase:firebase-sessions:2.0.3
+com.google.firebase:firebase-messaging-ktx:24.1.0
+com.google.firebase:firebase-messaging:24.1.0
+com.google.firebase:firebase-perf-ktx:21.0.3
+com.google.firebase:firebase-perf:21.0.3
+com.google.firebase:firebase-sessions:2.0.7
com.google.firebase:protolite-well-known-types:18.0.0
com.google.guava:failureaccess:1.0.1
com.google.guava:guava:31.1-android
@@ -221,7 +226,7 @@ com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.j2objc:j2objc-annotations:1.3
com.google.maps.android:maps-compose:4.4.1
com.google.maps.android:maps-ktx:5.0.0
-com.google.protobuf:protobuf-javalite:3.21.11
+com.google.protobuf:protobuf-javalite:3.25.5
com.google.zxing:core:3.5.3
com.squareup.okhttp3:logging-interceptor:4.12.0
com.squareup.okhttp3:okhttp:4.12.0
@@ -232,47 +237,55 @@ com.squareup.retrofit2:converter-gson:2.11.0
com.squareup.retrofit2:retrofit:2.11.0
dev.chrisbanes.snapper:snapper:0.2.2
io.github.mr0xf00:easycrop:0.1.1
-io.insert-koin:koin-android:3.6.0-Beta4
-io.insert-koin:koin-androidx-compose:3.6.0-Beta4
-io.insert-koin:koin-compose-jvm:1.2.0-Beta4
-io.insert-koin:koin-compose-viewmodel-jvm:1.2.0-Beta4
-io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4
-io.insert-koin:koin-compose:1.2.0-Beta4
-io.insert-koin:koin-core-jvm:3.6.0-Beta4
-io.insert-koin:koin-core:3.6.0-Beta4
+io.insert-koin:koin-android:4.0.0
+io.insert-koin:koin-androidx-compose:4.0.0
+io.insert-koin:koin-compose-jvm:4.0.0
+io.insert-koin:koin-compose-viewmodel-jvm:4.0.0
+io.insert-koin:koin-compose-viewmodel:4.0.0
+io.insert-koin:koin-compose:4.0.0
+io.insert-koin:koin-core-jvm:4.0.0
+io.insert-koin:koin-core-viewmodel-jvm:4.0.0
+io.insert-koin:koin-core-viewmodel:4.0.0
+io.insert-koin:koin-core:4.0.0
io.michaelrocks:libphonenumber-android:8.13.35
-io.reactivex.rxjava2:rxandroid:2.1.1
io.reactivex.rxjava2:rxjava:2.2.21
jakarta.inject:jakarta.inject-api:2.0.1
javax.inject:javax.inject:1
-net.bytebuddy:byte-buddy-agent:1.14.5
-net.bytebuddy:byte-buddy:1.14.5
+net.bytebuddy:byte-buddy-agent:1.14.8
+net.bytebuddy:byte-buddy:1.14.8
org.checkerframework:checker-qual:3.12.0
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.0-rc03
-org.jetbrains.androidx.navigation:navigation-compose:2.7.0-alpha06
+org.jetbrains.androidx.core:core-bundle-android:1.0.0
+org.jetbrains.androidx.core:core-bundle:1.0.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.0
+org.jetbrains.androidx.savedstate:savedstate:1.2.0
org.jetbrains.compose.material3:material3:1.6.11
org.jetbrains.compose.material:material:1.6.11
-org.jetbrains.compose.runtime:runtime:1.6.10-rc03
+org.jetbrains.compose.runtime:runtime:1.6.11
org.jetbrains.compose.ui:ui-tooling-preview:1.6.11
-org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.0.20
-org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20
-org.jetbrains.kotlin:kotlin-stdlib-common:2.0.20
-org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20
+org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.0
+org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.0
+org.jetbrains.kotlin:kotlin-stdlib-common:2.1.0
+org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10
-org.jetbrains.kotlin:kotlin-stdlib:2.0.20
-org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.7
-org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7
-org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.0
-org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0
-org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0
-org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0
-org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.8.0
-org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.0
-org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.3
-org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.6.3
-org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3
+org.jetbrains.kotlin:kotlin-stdlib:2.1.0
+org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8
+org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8
+org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.1
+org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1
+org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1
+org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1
+org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.1
+org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.10.1
+org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.1
+org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0-RC
+org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0-RC
+org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0-RC
+org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0-RC
+org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0-RC
org.jetbrains:annotations:23.0.0
-org.mockito:mockito-core:5.4.0
+org.jspecify:jspecify:1.0.0
+org.mockito:mockito-core:5.6.0
org.objenesis:objenesis:3.3
org.reactivestreams:reactive-streams:1.0.4
diff --git a/androidApp/src/main/kotlin/org/mifos/mobile/MifosSelfServiceApp.kt b/androidApp/src/main/kotlin/org/mifos/mobile/MifosSelfServiceApp.kt
index a728b6070..3624887a0 100644
--- a/androidApp/src/main/kotlin/org/mifos/mobile/MifosSelfServiceApp.kt
+++ b/androidApp/src/main/kotlin/org/mifos/mobile/MifosSelfServiceApp.kt
@@ -12,7 +12,6 @@ package org.mifos.mobile
import androidx.multidex.MultiDex
import androidx.multidex.MultiDexApplication
import com.google.firebase.crashlytics.FirebaseCrashlytics
-import com.raizlabs.android.dbflow.config.FlowManager
import dagger.hilt.android.HiltAndroidApp
import org.mifos.mobile.core.datastore.PreferencesHelper
import org.mifos.mobile.feature.settings.applySavedTheme
@@ -22,13 +21,7 @@ class MifosSelfServiceApp : MultiDexApplication() {
override fun onCreate() {
super.onCreate()
MultiDex.install(this)
- FlowManager.init(this)
- FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true)
+ FirebaseCrashlytics.getInstance().isCrashlyticsCollectionEnabled = true
PreferencesHelper(this).applySavedTheme()
}
-
- override fun onTerminate() {
- super.onTerminate()
- FlowManager.destroy()
- }
}
diff --git a/androidApp/src/main/res/values/strings.xml b/androidApp/src/main/res/values/strings.xml
index 3b9f8633a..76b091c42 100644
--- a/androidApp/src/main/res/values/strings.xml
+++ b/androidApp/src/main/res/values/strings.xml
@@ -654,4 +654,5 @@
S.No
No Transaction Found
⚠️ You aren’t connected to the internet
+ AIzaSyBbeT2BaMWLj-lReCgYoNmXs_TIyRLr9qQ
diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt
index 36c1111da..bdf18537f 100644
--- a/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt
+++ b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt
@@ -20,7 +20,6 @@ class AndroidApplicationConventionPlugin : Plugin {
apply("com.dropbox.dependency-guard")
apply("mifos.detekt.plugin")
apply("mifos.spotless.plugin")
- apply("mifos.ktlint.plugin")
apply("mifos.git.hooks")
}
diff --git a/build-logic/convention/src/main/kotlin/AndroidHiltConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidHiltConventionPlugin.kt
index a0d1fb1d3..2d8bfac27 100644
--- a/build-logic/convention/src/main/kotlin/AndroidHiltConventionPlugin.kt
+++ b/build-logic/convention/src/main/kotlin/AndroidHiltConventionPlugin.kt
@@ -1,24 +1,30 @@
-import org.mifos.mobile.libs
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.dependencies
+import org.mifos.mobile.libs
class AndroidHiltConventionPlugin : Plugin {
override fun apply(target: Project) {
with(target) {
- with(pluginManager) {
- apply("dagger.hilt.android.plugin")
- // KAPT must go last to avoid build warnings.
- // See: https://stackoverflow.com/questions/70550883/warning-the-following-options-were-not-recognized-by-any-processor-dagger-f
- apply("org.jetbrains.kotlin.kapt")
+ pluginManager.apply("com.google.devtools.ksp")
+ dependencies {
+ "ksp"(libs.findLibrary("hilt.compiler").get())
}
- dependencies {
- "implementation"(libs.findLibrary("hilt.android").get())
- "kapt"(libs.findLibrary("hilt.compiler").get())
- "kaptAndroidTest"(libs.findLibrary("hilt.compiler").get())
- "kaptTest"(libs.findLibrary("hilt.compiler").get())
+ // Add support for Jvm Module, base on org.jetbrains.kotlin.jvm
+ pluginManager.withPlugin("org.jetbrains.kotlin.jvm") {
+ dependencies {
+ "implementation"(libs.findLibrary("hilt.core").get())
+ }
+ }
+
+ /** Add support for Android modules, based on [AndroidBasePlugin] */
+ pluginManager.withPlugin("com.android.base") {
+ pluginManager.apply("dagger.hilt.android.plugin")
+ dependencies {
+ "implementation"(libs.findLibrary("hilt.android").get())
+ }
}
}
}
diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt
index 5d050173e..06d9c520e 100644
--- a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt
+++ b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt
@@ -19,7 +19,6 @@ class AndroidLibraryConventionPlugin : Plugin {
apply("mifos.android.lint")
apply("mifos.detekt.plugin")
apply("mifos.spotless.plugin")
- apply("mifos.ktlint.plugin")
}
extensions.configure {
diff --git a/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt
index 332cd7c20..dfb273120 100644
--- a/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt
+++ b/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt
@@ -1,4 +1,7 @@
+
+
import androidx.room.gradle.RoomExtension
+import com.google.devtools.ksp.gradle.KspExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
@@ -6,12 +9,15 @@ import org.gradle.kotlin.dsl.dependencies
import org.mifos.mobile.libs
class AndroidRoomConventionPlugin : Plugin {
-
override fun apply(target: Project) {
with(target) {
pluginManager.apply("androidx.room")
pluginManager.apply("com.google.devtools.ksp")
+ extensions.configure {
+ arg("room.generateKotlin", "true")
+ }
+
extensions.configure {
// The schemas directory contains a schema file for each version of the Room database.
// This is required to enable Room auto migrations.
@@ -20,9 +26,9 @@ class AndroidRoomConventionPlugin : Plugin {
}
dependencies {
- add("implementation", libs.findLibrary("room.runtime").get())
- add("implementation", libs.findLibrary("room.ktx").get())
- add("ksp", libs.findLibrary("room.compiler").get())
+ "implementation"(libs.findLibrary("androidx.room.runtime").get())
+ "implementation"(libs.findLibrary("androidx.room.ktx").get())
+ "ksp"(libs.findLibrary("androidx.room.compiler").get())
}
}
}
diff --git a/build-logic/convention/src/main/kotlin/org/mifos/mobile/AndroidCompose.kt b/build-logic/convention/src/main/kotlin/org/mifos/mobile/AndroidCompose.kt
index 24886e875..045dcca87 100644
--- a/build-logic/convention/src/main/kotlin/org/mifos/mobile/AndroidCompose.kt
+++ b/build-logic/convention/src/main/kotlin/org/mifos/mobile/AndroidCompose.kt
@@ -3,7 +3,6 @@ package org.mifos.mobile
import com.android.build.api.dsl.CommonExtension
import org.gradle.api.Project
import org.gradle.api.provider.Provider
-import org.gradle.kotlin.dsl.assign
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.dependencies
import org.jetbrains.kotlin.compose.compiler.gradle.ComposeCompilerGradlePluginExtension
@@ -50,8 +49,7 @@ internal fun Project.configureAndroidCompose(
.relativeToRootProject("compose-reports")
.let(reportsDestination::set)
- stabilityConfigurationFile = rootProject.layout.projectDirectory.file("compose_compiler_config.conf")
-
- enableStrongSkippingMode = true
+ stabilityConfigurationFiles
+ .add(isolated.rootProject.projectDirectory.file("compose_compiler_config.conf"))
}
}
diff --git a/build-logic/convention/src/main/kotlin/org/mifos/mobile/Badging.kt b/build-logic/convention/src/main/kotlin/org/mifos/mobile/Badging.kt
index 3d52f8123..47456ce41 100644
--- a/build-logic/convention/src/main/kotlin/org/mifos/mobile/Badging.kt
+++ b/build-logic/convention/src/main/kotlin/org/mifos/mobile/Badging.kt
@@ -1,9 +1,9 @@
package org.mifos.mobile
+import com.android.SdkConstants
import com.android.build.api.artifact.SingleArtifact
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
import com.android.build.gradle.BaseExtension
-import com.android.SdkConstants
import com.google.common.truth.Truth.assertWithMessage
import org.gradle.api.DefaultTask
import org.gradle.api.Project
@@ -19,7 +19,6 @@ import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.PathSensitive
import org.gradle.api.tasks.PathSensitivity
import org.gradle.api.tasks.TaskAction
-import org.gradle.configurationcache.extensions.capitalized
import org.gradle.kotlin.dsl.register
import org.gradle.language.base.plugins.LifecycleBasePlugin
import org.gradle.process.ExecOperations
@@ -83,7 +82,7 @@ abstract class CheckBadgingTask : DefaultTask() {
fun taskAction() {
assertWithMessage(
"Generated badging is different from golden badging! " +
- "If this change is intended, run ./gradlew ${updateBadgingTaskName.get()}",
+ "If this change is intended, run ./gradlew ${updateBadgingTaskName.get()}",
)
.that(generatedBadging.get().asFile.readText())
.isEqualTo(goldenBadging.get().asFile.readText())
@@ -97,7 +96,8 @@ fun Project.configureBadgingTasks(
// Registers a callback to be called, when a new variant is configured
componentsExtension.onVariants { variant ->
// Registers a new task to verify the app bundle.
- val capitalizedVariantName = variant.name.capitalized()
+ val capitalizedVariantName = variant.name.toString()
+ .replaceFirstChar { if (it.isLowerCase()) it.titlecase() else it.toString() }
val generateBadgingTaskName = "generate${capitalizedVariantName}Badging"
val generateBadging =
tasks.register(generateBadgingTaskName) {
@@ -108,8 +108,8 @@ fun Project.configureBadgingTasks(
File(
baseExtension.sdkDirectory,
"${SdkConstants.FD_BUILD_TOOLS}/" +
- "${baseExtension.buildToolsVersion}/" +
- SdkConstants.FN_AAPT2,
+ "${baseExtension.buildToolsVersion}/" +
+ SdkConstants.FN_AAPT2,
),
)
diff --git a/build-logic/convention/src/main/kotlin/org/mifos/mobile/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/org/mifos/mobile/KotlinAndroid.kt
index e4cc23a61..4811da865 100644
--- a/build-logic/convention/src/main/kotlin/org/mifos/mobile/KotlinAndroid.kt
+++ b/build-logic/convention/src/main/kotlin/org/mifos/mobile/KotlinAndroid.kt
@@ -10,8 +10,8 @@ import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.provideDelegate
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension
+import org.jetbrains.kotlin.gradle.dsl.KotlinBaseExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
-import org.jetbrains.kotlin.gradle.dsl.KotlinTopLevelExtension
/**
* Configure base Kotlin with Android options
@@ -20,7 +20,7 @@ internal fun Project.configureKotlinAndroid(
commonExtension: CommonExtension<*, *, *, *, *, *>,
) {
commonExtension.apply {
- compileSdk = 34
+ compileSdk = 35
defaultConfig {
minSdk = 26
@@ -59,7 +59,7 @@ internal fun Project.configureKotlinJvm() {
/**
* Configure base Kotlin options
*/
-private inline fun Project.configureKotlin() = configure {
+private inline fun Project.configureKotlin() = configure {
// Treat all Kotlin warnings as errors (disabled by default)
// Override by setting warningsAsErrors=true in your ~/.gradle/gradle.properties
val warningsAsErrors: String? by project
@@ -75,7 +75,7 @@ private inline fun Project.configureKotlin
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
)
freeCompilerArgs.add(
- "-opt-in=androidx.compose.material3.ExperimentalMaterial3Api"
+ "-opt-in=androidx.compose.material3.ExperimentalMaterial3Api",
)
}
}
diff --git a/build.gradle.kts b/build.gradle.kts
index 2fd542c79..6e5d17af8 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -26,8 +26,6 @@ plugins {
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.detekt) apply false
alias(libs.plugins.spotless) apply false
- alias(libs.plugins.ktlint) apply false
- alias(libs.plugins.version.catalog.linter) apply true
alias(libs.plugins.compose.compiler) apply false
alias(libs.plugins.kotlinMultiplatform) apply false
alias(libs.plugins.jetbrainsCompose) apply false
diff --git a/ci-prepush.sh b/ci-prepush.sh
index 081f920fe..104428237 100644
--- a/ci-prepush.sh
+++ b/ci-prepush.sh
@@ -28,7 +28,7 @@ tasks=(
"spotlessApply --no-configuration-cache"
"dependencyGuardBaseline"
"detekt"
- "testDebug :lint:test :lint:lint :androidApp:lintRelease"
+# "testDebug :lint:test :lint:lint :androidApp:lintRelease"
"build"
"updateReleaseBadging"
)
diff --git a/core/data/build.gradle.kts b/core/data/build.gradle.kts
index 329ba96ca..aa1450d2d 100644
--- a/core/data/build.gradle.kts
+++ b/core/data/build.gradle.kts
@@ -33,6 +33,8 @@ dependencies {
api(projects.core.common)
api(projects.core.model)
api(projects.core.network)
+ api(projects.core.database)
+ api(projects.core.datastore)
implementation(libs.squareup.retrofit2)
implementation(libs.squareup.okhttp)
diff --git a/core/data/kotlin/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/core/data/kotlin/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
new file mode 100644
index 000000000..ca6ee9cea
--- /dev/null
+++ b/core/data/kotlin/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
@@ -0,0 +1 @@
+mock-maker-inline
\ No newline at end of file
diff --git a/core/data/src/main/java/org/mifos/mobile/core/data/model/Charge.kt b/core/data/src/main/java/org/mifos/mobile/core/data/model/Charge.kt
new file mode 100644
index 000000000..1a3fbdae8
--- /dev/null
+++ b/core/data/src/main/java/org/mifos/mobile/core/data/model/Charge.kt
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2025 Mifos Initiative
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ *
+ * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
+ */
+package org.mifos.mobile.core.data.model
+
+import org.mifos.mobile.core.database.entity.ChargeCalculationTypeEntity
+import org.mifos.mobile.core.database.entity.ChargeEntity
+import org.mifos.mobile.core.database.entity.ChargeTimeTypeEntity
+import org.mifos.mobile.core.database.entity.CurrencyEntity
+import org.mifos.mobile.core.model.entity.Charge
+import org.mifos.mobile.core.model.entity.ChargeCalculationType
+import org.mifos.mobile.core.model.entity.ChargeTimeType
+import org.mifos.mobile.core.model.entity.Currency
+
+fun ChargeEntity.toCharge(): Charge {
+ return Charge(
+ clientId = clientId,
+ chargeId = chargeId,
+ name = name,
+ dueDate = dueDate,
+ chargeTimeType = ChargeTimeType(
+ id = chargeTimeType?.id ?: 0,
+ code = chargeTimeType?.code,
+ value = chargeTimeType?.value,
+ ),
+ chargeCalculationType = ChargeCalculationType(
+ id = chargeCalculationType?.id ?: 0,
+ code = chargeCalculationType?.code,
+ value = chargeCalculationType?.value,
+ ),
+ currency = Currency(
+ code = currency?.code,
+ name = currency?.name,
+ decimalPlaces = currency?.decimalPlaces ?: 0,
+ displaySymbol = currency?.displaySymbol,
+ nameCode = currency?.nameCode,
+ displayLabel = currency?.displayLabel,
+ ),
+ amount = amount,
+ amountPaid = amountPaid,
+ amountWaived = amountWaived,
+ amountWrittenOff = amountWrittenOff,
+ amountOutstanding = amountOutstanding,
+ penalty = penalty,
+ isActive = isActive,
+ isChargePaid = isChargePaid,
+ isChargeWaived = isChargeWaived,
+ paid = paid,
+ waived = waived,
+ )
+}
+
+fun Charge.toChargeEntity(): ChargeEntity {
+ return ChargeEntity(
+ clientId = clientId,
+ chargeId = chargeId,
+ name = name,
+ dueDate = dueDate,
+ chargeTimeType = ChargeTimeTypeEntity(
+ id = chargeTimeType?.id ?: 0,
+ code = chargeTimeType?.code,
+ value = chargeTimeType?.value,
+ ),
+ chargeCalculationType = ChargeCalculationTypeEntity(
+ id = chargeCalculationType?.id ?: 0,
+ code = chargeCalculationType?.code,
+ value = chargeCalculationType?.value,
+ ),
+ currency = CurrencyEntity(
+ code = currency?.code,
+ name = currency?.name,
+ decimalPlaces = currency?.decimalPlaces ?: 0,
+ displaySymbol = currency?.displaySymbol,
+ nameCode = currency?.nameCode,
+ displayLabel = currency?.displayLabel,
+ ),
+ amount = amount,
+ amountPaid = amountPaid,
+ amountWaived = amountWaived,
+ amountWrittenOff = amountWrittenOff,
+ amountOutstanding = amountOutstanding,
+ penalty = penalty,
+ isActive = isActive,
+ isChargePaid = isChargePaid,
+ isChargeWaived = isChargeWaived,
+ paid = paid,
+ waived = waived,
+ )
+}
diff --git a/core/data/src/main/java/org/mifos/mobile/core/data/model/MifosNotification.kt b/core/data/src/main/java/org/mifos/mobile/core/data/model/MifosNotification.kt
new file mode 100644
index 000000000..b63849ae7
--- /dev/null
+++ b/core/data/src/main/java/org/mifos/mobile/core/data/model/MifosNotification.kt
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2025 Mifos Initiative
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ *
+ * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
+ */
+package org.mifos.mobile.core.data.model
+
+import org.mifos.mobile.core.database.entity.MifosNotificationEntity
+import org.mifos.mobile.core.model.entity.MifosNotification
+
+fun MifosNotification.toEntity(): MifosNotificationEntity {
+ return MifosNotificationEntity(
+ timeStamp = timeStamp,
+ msg = msg,
+ read = read,
+ )
+}
+
+fun MifosNotificationEntity.toModel(): MifosNotification {
+ return MifosNotification(
+ timeStamp = timeStamp,
+ msg = msg,
+ read = read,
+ )
+}
diff --git a/core/data/src/main/java/org/mifos/mobile/core/data/repository/ClientChargeRepository.kt b/core/data/src/main/java/org/mifos/mobile/core/data/repository/ClientChargeRepository.kt
index fcdaf3cdb..390331e74 100644
--- a/core/data/src/main/java/org/mifos/mobile/core/data/repository/ClientChargeRepository.kt
+++ b/core/data/src/main/java/org/mifos/mobile/core/data/repository/ClientChargeRepository.kt
@@ -10,13 +10,17 @@
package org.mifos.mobile.core.data.repository
import kotlinx.coroutines.flow.Flow
-import org.mifos.mobile.core.datastore.model.Charge
+import org.mifos.mobile.core.model.entity.Charge
import org.mifos.mobile.core.model.entity.Page
interface ClientChargeRepository {
+ fun getClientCharges(clientId: Long): Flow>
- suspend fun getClientCharges(clientId: Long): Flow>
- suspend fun getLoanCharges(loanId: Long): Flow>
- suspend fun getSavingsCharges(savingsId: Long): Flow>
- suspend fun clientLocalCharges(): Flow>
+ fun getLoanCharges(loanId: Long): Flow>
+
+ fun getSavingsCharges(savingsId: Long): Flow>
+
+ fun clientLocalCharges(): Flow>
+
+ suspend fun syncCharges(charges: Page?): Page?
}
diff --git a/core/data/src/main/java/org/mifos/mobile/core/data/repository/HomeRepository.kt b/core/data/src/main/java/org/mifos/mobile/core/data/repository/HomeRepository.kt
index 79894dc36..ac71979b0 100644
--- a/core/data/src/main/java/org/mifos/mobile/core/data/repository/HomeRepository.kt
+++ b/core/data/src/main/java/org/mifos/mobile/core/data/repository/HomeRepository.kt
@@ -22,5 +22,5 @@ interface HomeRepository {
fun clientImage(): Flow
- fun unreadNotificationsCount(): Flow
+ suspend fun unreadNotificationsCount(): Flow
}
diff --git a/core/data/src/main/java/org/mifos/mobile/core/data/repository/NotificationRepository.kt b/core/data/src/main/java/org/mifos/mobile/core/data/repository/NotificationRepository.kt
index 9d4ab8460..9283982ba 100644
--- a/core/data/src/main/java/org/mifos/mobile/core/data/repository/NotificationRepository.kt
+++ b/core/data/src/main/java/org/mifos/mobile/core/data/repository/NotificationRepository.kt
@@ -10,9 +10,17 @@
package org.mifos.mobile.core.data.repository
import kotlinx.coroutines.flow.Flow
-import org.mifos.mobile.core.datastore.model.MifosNotification
+import org.mifos.mobile.core.model.entity.MifosNotification
interface NotificationRepository {
- suspend fun loadNotifications(): Flow>
+ fun loadNotifications(): Flow>
+
+ fun getUnReadNotificationCount(): Flow
+
+ suspend fun saveNotification(notification: MifosNotification)
+
+ suspend fun deleteOldNotifications()
+
+ suspend fun updateReadStatus(notification: MifosNotification, isRead: Boolean)
}
diff --git a/core/data/src/main/java/org/mifos/mobile/core/data/repositoryImpl/ClientChargeRepositoryImp.kt b/core/data/src/main/java/org/mifos/mobile/core/data/repositoryImpl/ClientChargeRepositoryImp.kt
index d1ae109e3..5639356d8 100644
--- a/core/data/src/main/java/org/mifos/mobile/core/data/repositoryImpl/ClientChargeRepositoryImp.kt
+++ b/core/data/src/main/java/org/mifos/mobile/core/data/repositoryImpl/ClientChargeRepositoryImp.kt
@@ -9,39 +9,61 @@
*/
package org.mifos.mobile.core.data.repositoryImpl
+import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
+import kotlinx.coroutines.flow.flowOn
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.withContext
+import org.mifos.mobile.core.common.network.Dispatcher
+import org.mifos.mobile.core.common.network.MifosDispatchers
+import org.mifos.mobile.core.data.model.toCharge
+import org.mifos.mobile.core.data.model.toChargeEntity
import org.mifos.mobile.core.data.repository.ClientChargeRepository
-import org.mifos.mobile.core.datastore.model.Charge
+import org.mifos.mobile.core.database.dao.ChargeDao
+import org.mifos.mobile.core.model.entity.Charge
import org.mifos.mobile.core.model.entity.Page
import org.mifos.mobile.core.network.DataManager
import javax.inject.Inject
class ClientChargeRepositoryImp @Inject constructor(
private val dataManager: DataManager,
+ private val chargeDao: ChargeDao,
+ @Dispatcher(MifosDispatchers.IO)
+ private val ioDispatcher: CoroutineDispatcher,
) : ClientChargeRepository {
- override suspend fun getClientCharges(clientId: Long): Flow> {
+ override fun getClientCharges(clientId: Long): Flow> {
return flow {
emit(dataManager.getClientCharges(clientId))
}
}
- override suspend fun getLoanCharges(loanId: Long): Flow> {
+ override fun getLoanCharges(loanId: Long): Flow> {
return flow {
emit(dataManager.getLoanCharges(loanId))
}
}
- override suspend fun getSavingsCharges(savingsId: Long): Flow> {
+ override fun getSavingsCharges(savingsId: Long): Flow> {
return flow {
emit(dataManager.getSavingsCharges(savingsId))
}
}
- override suspend fun clientLocalCharges(): Flow> {
- return flow {
- emit(dataManager.clientLocalCharges())
+ override fun clientLocalCharges(): Flow> {
+ return chargeDao.getAllLocalCharges().map { chargeList ->
+ Page(chargeList.size, chargeList.map { it.toCharge() })
+ }.flowOn(ioDispatcher)
+ }
+
+ override suspend fun syncCharges(charges: Page?): Page? {
+ return withContext(ioDispatcher) {
+ charges?.pageItems?.let {
+ chargeDao.syncCharges(it.map { it.toChargeEntity() })
+ }
+
+ charges?.copy(pageItems = charges.pageItems)
}
}
}
diff --git a/core/data/src/main/java/org/mifos/mobile/core/data/repositoryImpl/HomeRepositoryImp.kt b/core/data/src/main/java/org/mifos/mobile/core/data/repositoryImpl/HomeRepositoryImp.kt
index 799c3224c..1fac1b4fe 100644
--- a/core/data/src/main/java/org/mifos/mobile/core/data/repositoryImpl/HomeRepositoryImp.kt
+++ b/core/data/src/main/java/org/mifos/mobile/core/data/repositoryImpl/HomeRepositoryImp.kt
@@ -13,6 +13,7 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import okhttp3.ResponseBody
import org.mifos.mobile.core.data.repository.HomeRepository
+import org.mifos.mobile.core.data.repository.NotificationRepository
import org.mifos.mobile.core.model.entity.client.Client
import org.mifos.mobile.core.model.entity.client.ClientAccounts
import org.mifos.mobile.core.network.DataManager
@@ -20,6 +21,7 @@ import javax.inject.Inject
class HomeRepositoryImp @Inject constructor(
private val dataManager: DataManager,
+ private val notificationRepository: NotificationRepository,
) : HomeRepository {
override fun clientAccounts(): Flow {
@@ -40,9 +42,7 @@ class HomeRepositoryImp @Inject constructor(
}
}
- override fun unreadNotificationsCount(): Flow {
- return flow {
- emit(dataManager.unreadNotificationsCount())
- }
+ override suspend fun unreadNotificationsCount(): Flow {
+ return notificationRepository.getUnReadNotificationCount()
}
}
diff --git a/core/data/src/main/java/org/mifos/mobile/core/data/repositoryImpl/NotificationRepositoryImp.kt b/core/data/src/main/java/org/mifos/mobile/core/data/repositoryImpl/NotificationRepositoryImp.kt
index 80adbb407..694c2731b 100644
--- a/core/data/src/main/java/org/mifos/mobile/core/data/repositoryImpl/NotificationRepositoryImp.kt
+++ b/core/data/src/main/java/org/mifos/mobile/core/data/repositoryImpl/NotificationRepositoryImp.kt
@@ -9,20 +9,53 @@
*/
package org.mifos.mobile.core.data.repositoryImpl
+import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.flow
+import kotlinx.coroutines.flow.flowOn
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.withContext
+import org.mifos.mobile.core.common.network.Dispatcher
+import org.mifos.mobile.core.common.network.MifosDispatchers
+import org.mifos.mobile.core.data.model.toEntity
+import org.mifos.mobile.core.data.model.toModel
import org.mifos.mobile.core.data.repository.NotificationRepository
-import org.mifos.mobile.core.datastore.model.MifosNotification
-import org.mifos.mobile.core.network.DataManager
+import org.mifos.mobile.core.database.dao.MifosNotificationDao
+import org.mifos.mobile.core.model.entity.MifosNotification
import javax.inject.Inject
class NotificationRepositoryImp @Inject constructor(
- private val dataManager: DataManager,
+ private val notificationDao: MifosNotificationDao,
+ @Dispatcher(MifosDispatchers.IO)
+ private val ioDispatcher: CoroutineDispatcher,
) : NotificationRepository {
- override suspend fun loadNotifications(): Flow> {
- return flow {
- emit(dataManager.notifications())
+ override fun loadNotifications(): Flow> {
+ return notificationDao.getNotifications()
+ .map { it.map { it.toModel() } }
+ .flowOn(ioDispatcher)
+ }
+
+ override fun getUnReadNotificationCount(): Flow {
+ return notificationDao.getUnreadNotificationsCount().flowOn(ioDispatcher)
+ }
+
+ override suspend fun saveNotification(notification: MifosNotification) {
+ withContext(ioDispatcher) {
+ notificationDao.saveNotification(notification.toEntity())
+ }
+ }
+
+ override suspend fun deleteOldNotifications() {
+ return withContext(ioDispatcher) {
+ val thirtyDaysInMillis = 2592000000L
+ val cutoffTime = System.currentTimeMillis() - thirtyDaysInMillis
+ notificationDao.deleteOldNotifications(cutoffTime)
+ }
+ }
+
+ override suspend fun updateReadStatus(notification: MifosNotification, isRead: Boolean) {
+ withContext(ioDispatcher) {
+ notificationDao.updateReadStatus(notification.timeStamp, isRead)
}
}
}
diff --git a/core/data/src/test/kotlin/org/mifos/mobile/core/data/repositories/ClientChargeRepositoryImpTest.kt b/core/data/src/test/kotlin/org/mifos/mobile/core/data/repositories/ClientChargeRepositoryImpTest.kt
index d805e9a06..c1ce6a2c0 100644
--- a/core/data/src/test/kotlin/org/mifos/mobile/core/data/repositories/ClientChargeRepositoryImpTest.kt
+++ b/core/data/src/test/kotlin/org/mifos/mobile/core/data/repositories/ClientChargeRepositoryImpTest.kt
@@ -12,13 +12,18 @@ package org.mifos.mobile.core.data.repositories
import app.cash.turbine.test
import junit.framework.Assert.assertEquals
import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
+import org.mifos.mobile.core.data.model.toCharge
import org.mifos.mobile.core.data.repositoryImpl.ClientChargeRepositoryImp
-import org.mifos.mobile.core.datastore.model.Charge
+import org.mifos.mobile.core.database.dao.ChargeDao
+import org.mifos.mobile.core.database.entity.ChargeEntity
+import org.mifos.mobile.core.model.entity.Charge
import org.mifos.mobile.core.model.entity.Page
import org.mifos.mobile.core.network.DataManager
import org.mifos.mobile.core.testing.util.MainDispatcherRule
@@ -38,12 +43,19 @@ class ClientChargeRepositoryImpTest {
@Mock
lateinit var dataManager: DataManager
+ @Mock
+ lateinit var chargeDao: ChargeDao
+
private lateinit var clientChargeRepositoryImp: ClientChargeRepositoryImp
@Before
fun setUp() {
MockitoAnnotations.openMocks(this)
- clientChargeRepositoryImp = ClientChargeRepositoryImp(dataManager)
+ clientChargeRepositoryImp = ClientChargeRepositoryImp(
+ dataManager = dataManager,
+ chargeDao = chargeDao,
+ ioDispatcher = UnconfinedTestDispatcher(),
+ )
}
@Test
@@ -116,10 +128,12 @@ class ClientChargeRepositoryImpTest {
@Test
fun testClientLocalCharges_Successful() = runTest {
- val clientLocalChargeMock = List(5) { mock(Charge::class.java) }
- val chargeList = clientLocalChargeMock.toList()
- val success = Page(5, chargeList)
- `when`(dataManager.clientLocalCharges()).thenReturn(success)
+ val clientLocalChargeMock = List(5) { mock(ChargeEntity::class.java) }
+ val success = Page(
+ clientLocalChargeMock.size,
+ clientLocalChargeMock.map { it.toCharge() },
+ )
+ `when`(chargeDao.getAllLocalCharges()).thenReturn(flowOf(clientLocalChargeMock))
val resultFlow = clientChargeRepositoryImp.clientLocalCharges()
resultFlow.test {
assertEquals(success, awaitItem())
@@ -129,7 +143,7 @@ class ClientChargeRepositoryImpTest {
@Test(expected = Exception::class)
fun testClientLocalCharges_Unsuccessful() = runTest {
- `when`(dataManager.clientLocalCharges())
+ `when`(clientChargeRepositoryImp.clientLocalCharges())
.thenThrow(Exception("Error occurred"))
val result = clientChargeRepositoryImp.clientLocalCharges()
result.test {
diff --git a/core/data/src/test/kotlin/org/mifos/mobile/core/data/repositories/HomeRepositoryImpTest.kt b/core/data/src/test/kotlin/org/mifos/mobile/core/data/repositories/HomeRepositoryImpTest.kt
index 154f15c4f..c883869a3 100644
--- a/core/data/src/test/kotlin/org/mifos/mobile/core/data/repositories/HomeRepositoryImpTest.kt
+++ b/core/data/src/test/kotlin/org/mifos/mobile/core/data/repositories/HomeRepositoryImpTest.kt
@@ -12,12 +12,14 @@ package org.mifos.mobile.core.data.repositories
import app.cash.turbine.test
import junit.framework.Assert.assertEquals
import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runTest
import okhttp3.ResponseBody
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
+import org.mifos.mobile.core.data.repository.NotificationRepository
import org.mifos.mobile.core.data.repositoryImpl.HomeRepositoryImp
import org.mifos.mobile.core.model.entity.client.Client
import org.mifos.mobile.core.model.entity.client.ClientAccounts
@@ -39,12 +41,15 @@ class HomeRepositoryImpTest {
@Mock
lateinit var dataManager: DataManager
+ @Mock
+ lateinit var notificationRepository: NotificationRepository
+
private lateinit var homeRepositoryImp: HomeRepositoryImp
@Before
fun setUp() {
MockitoAnnotations.openMocks(this)
- homeRepositoryImp = HomeRepositoryImp(dataManager)
+ homeRepositoryImp = HomeRepositoryImp(dataManager, notificationRepository)
}
@Test
@@ -93,7 +98,7 @@ class HomeRepositoryImpTest {
fun testUnreadNotificationsCount_Successful() = runTest {
val mockUnreadCount = 5
- `when`(dataManager.unreadNotificationsCount()).thenReturn(mockUnreadCount)
+ `when`(notificationRepository.getUnReadNotificationCount()).thenReturn(flowOf(mockUnreadCount))
val flow = homeRepositoryImp.unreadNotificationsCount()
@@ -147,7 +152,7 @@ class HomeRepositoryImpTest {
fun testUnreadNotificationsCount_Error() = runTest {
val errorMessage = "Failed to fetch unread notifications count"
- `when`(dataManager.unreadNotificationsCount())
+ `when`(notificationRepository.getUnReadNotificationCount())
.thenThrow(Exception(errorMessage))
val flow = homeRepositoryImp.unreadNotificationsCount()
diff --git a/core/data/src/test/kotlin/org/mifos/mobile/core/data/repositories/NotificationRepositoryImpTest.kt b/core/data/src/test/kotlin/org/mifos/mobile/core/data/repositories/NotificationRepositoryImpTest.kt
index 17b032e56..d4cfc3625 100644
--- a/core/data/src/test/kotlin/org/mifos/mobile/core/data/repositories/NotificationRepositoryImpTest.kt
+++ b/core/data/src/test/kotlin/org/mifos/mobile/core/data/repositories/NotificationRepositoryImpTest.kt
@@ -12,14 +12,18 @@ package org.mifos.mobile.core.data.repositories
import app.cash.turbine.test
import junit.framework.TestCase.assertEquals
import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
+import org.mifos.mobile.core.data.model.toModel
import org.mifos.mobile.core.data.repository.NotificationRepository
import org.mifos.mobile.core.data.repositoryImpl.NotificationRepositoryImp
-import org.mifos.mobile.core.datastore.model.MifosNotification
+import org.mifos.mobile.core.database.dao.MifosNotificationDao
+import org.mifos.mobile.core.database.entity.MifosNotificationEntity
import org.mifos.mobile.core.network.DataManager
import org.mifos.mobile.core.testing.util.MainDispatcherRule
import org.mockito.Mock
@@ -38,26 +42,32 @@ class NotificationRepositoryImpTest {
@Mock
lateinit var dataManager: DataManager
+ @Mock
+ lateinit var mifosNotificationDao: MifosNotificationDao
+
private lateinit var notificationRepositoryImp: NotificationRepository
@Before
fun setUp() {
MockitoAnnotations.openMocks(this)
- notificationRepositoryImp = NotificationRepositoryImp(dataManager)
+ notificationRepositoryImp = NotificationRepositoryImp(
+ notificationDao = mifosNotificationDao,
+ ioDispatcher = UnconfinedTestDispatcher(),
+ )
}
@Test
fun testLoadNotifications_SuccessResponseReceivedFromDataManager_ReturnsSuccess() = runTest {
- val notification = mock(MifosNotification::class.java)
+ val notification = mock(MifosNotificationEntity::class.java)
val notificationList = List(5) { notification }
`when`(
- dataManager.notifications(),
- ).thenReturn(notificationList)
+ mifosNotificationDao.getNotifications(),
+ ).thenReturn(flowOf(notificationList))
val notifications = notificationRepositoryImp.loadNotifications()
notifications.test {
- assertEquals(notificationList, awaitItem())
+ assertEquals(notificationList.map { it.toModel() }, awaitItem())
cancelAndIgnoreRemainingEvents()
}
}
@@ -65,7 +75,7 @@ class NotificationRepositoryImpTest {
@Test(expected = Exception::class)
fun testLoadNotifications_ErrorResponseReceivedFromDataManager_ReturnsError() = runTest {
val dummyError = Exception("Dummy error")
- `when`(dataManager.notifications()).thenThrow(dummyError)
+ `when`(mifosNotificationDao.getNotifications()).thenThrow(dummyError)
val notifications = notificationRepositoryImp.loadNotifications()
diff --git a/core/data/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/core/data/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
new file mode 100644
index 000000000..ca6ee9cea
--- /dev/null
+++ b/core/data/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
@@ -0,0 +1 @@
+mock-maker-inline
\ No newline at end of file
diff --git a/core/database/.gitignore b/core/database/.gitignore
new file mode 100644
index 000000000..42afabfd2
--- /dev/null
+++ b/core/database/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/core/database/build.gradle.kts b/core/database/build.gradle.kts
new file mode 100644
index 000000000..54518e929
--- /dev/null
+++ b/core/database/build.gradle.kts
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2024 Mifos Initiative
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ *
+ * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
+ */
+plugins {
+ alias(libs.plugins.mifos.android.library)
+ alias(libs.plugins.mifos.android.room)
+ alias(libs.plugins.mifos.android.hilt)
+ alias(libs.plugins.kotlin.serialization)
+}
+
+android {
+ namespace = "org.mifos.mobile.core.database"
+
+ defaultConfig {
+ consumerProguardFiles("consumer-rules.pro")
+ }
+
+}
+
+dependencies {
+ implementation(libs.kotlinx.coroutines.core)
+ implementation(libs.kotlinx.serialization.json)
+}
\ No newline at end of file
diff --git a/core/database/consumer-rules.pro b/core/database/consumer-rules.pro
new file mode 100644
index 000000000..e69de29bb
diff --git a/core/database/schemas/org.mifos.mobile.core.database.SelfServiceDatabase/1.json b/core/database/schemas/org.mifos.mobile.core.database.SelfServiceDatabase/1.json
new file mode 100644
index 000000000..71b342fa1
--- /dev/null
+++ b/core/database/schemas/org.mifos.mobile.core.database.SelfServiceDatabase/1.json
@@ -0,0 +1,174 @@
+{
+ "formatVersion": 1,
+ "database": {
+ "version": 1,
+ "identityHash": "0ef6ac9f8492c3e3e0026cafe51bd414",
+ "entities": [
+ {
+ "tableName": "charges",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `clientId` INTEGER, `chargeId` INTEGER, `name` TEXT, `dueDate` TEXT NOT NULL, `chargeTimeType` TEXT, `chargeCalculationType` TEXT, `currency` TEXT, `amount` REAL NOT NULL, `amountPaid` REAL NOT NULL, `amountWaived` REAL NOT NULL, `amountWrittenOff` REAL NOT NULL, `amountOutstanding` REAL NOT NULL, `penalty` INTEGER NOT NULL, `isActive` INTEGER NOT NULL, `isChargePaid` INTEGER NOT NULL, `isChargeWaived` INTEGER NOT NULL, `paid` INTEGER NOT NULL, `waived` INTEGER NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "clientId",
+ "columnName": "clientId",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "chargeId",
+ "columnName": "chargeId",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "name",
+ "columnName": "name",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "dueDate",
+ "columnName": "dueDate",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "chargeTimeType",
+ "columnName": "chargeTimeType",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "chargeCalculationType",
+ "columnName": "chargeCalculationType",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "currency",
+ "columnName": "currency",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "amount",
+ "columnName": "amount",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "amountPaid",
+ "columnName": "amountPaid",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "amountWaived",
+ "columnName": "amountWaived",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "amountWrittenOff",
+ "columnName": "amountWrittenOff",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "amountOutstanding",
+ "columnName": "amountOutstanding",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "penalty",
+ "columnName": "penalty",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isActive",
+ "columnName": "isActive",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isChargePaid",
+ "columnName": "isChargePaid",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isChargeWaived",
+ "columnName": "isChargeWaived",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "paid",
+ "columnName": "paid",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "waived",
+ "columnName": "waived",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "autoGenerate": true,
+ "columnNames": [
+ "id"
+ ]
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "mifos_notifications",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`timeStamp` INTEGER NOT NULL, `msg` TEXT, `read` INTEGER, PRIMARY KEY(`timeStamp`))",
+ "fields": [
+ {
+ "fieldPath": "timeStamp",
+ "columnName": "timeStamp",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "msg",
+ "columnName": "msg",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "read",
+ "columnName": "read",
+ "affinity": "INTEGER",
+ "notNull": false
+ }
+ ],
+ "primaryKey": {
+ "autoGenerate": false,
+ "columnNames": [
+ "timeStamp"
+ ]
+ },
+ "indices": [],
+ "foreignKeys": []
+ }
+ ],
+ "views": [],
+ "setupQueries": [
+ "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
+ "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '0ef6ac9f8492c3e3e0026cafe51bd414')"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/core/datastore/src/release/res/values/api_keys.xml b/core/database/src/main/AndroidManifest.xml
similarity index 70%
rename from core/datastore/src/release/res/values/api_keys.xml
rename to core/database/src/main/AndroidManifest.xml
index c24c8aa0f..4ee22a4fb 100644
--- a/core/datastore/src/release/res/values/api_keys.xml
+++ b/core/database/src/main/AndroidManifest.xml
@@ -8,8 +8,6 @@
See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
-->
-
-
- YOUR_KEY_HERE
-
-
+
+
+
\ No newline at end of file
diff --git a/core/database/src/main/kotlin/org/mifos/mobile/core/database/SelfServiceDatabase.kt b/core/database/src/main/kotlin/org/mifos/mobile/core/database/SelfServiceDatabase.kt
new file mode 100644
index 000000000..9aa1ed6c3
--- /dev/null
+++ b/core/database/src/main/kotlin/org/mifos/mobile/core/database/SelfServiceDatabase.kt
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2024 Mifos Initiative
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ *
+ * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
+ */
+package org.mifos.mobile.core.database
+
+import androidx.room.Database
+import androidx.room.RoomDatabase
+import androidx.room.TypeConverters
+import org.mifos.mobile.core.database.dao.ChargeDao
+import org.mifos.mobile.core.database.dao.MifosNotificationDao
+import org.mifos.mobile.core.database.entity.ChargeEntity
+import org.mifos.mobile.core.database.entity.MifosNotificationEntity
+import org.mifos.mobile.core.database.utils.ChargeTypeConverters
+
+@Database(
+ entities = [
+ ChargeEntity::class,
+ MifosNotificationEntity::class,
+ ],
+ version = SelfServiceDatabase.VERSION,
+ exportSchema = true,
+ autoMigrations = [],
+)
+@TypeConverters(ChargeTypeConverters::class)
+abstract class SelfServiceDatabase : RoomDatabase() {
+
+ abstract fun mifosNotificationDao(): MifosNotificationDao
+
+ abstract fun chargeDao(): ChargeDao
+
+ companion object {
+ // Update the version number if you change the schema
+ const val VERSION = 1
+ }
+}
diff --git a/core/database/src/main/kotlin/org/mifos/mobile/core/database/dao/ChargeDao.kt b/core/database/src/main/kotlin/org/mifos/mobile/core/database/dao/ChargeDao.kt
new file mode 100644
index 000000000..c17238c56
--- /dev/null
+++ b/core/database/src/main/kotlin/org/mifos/mobile/core/database/dao/ChargeDao.kt
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2024 Mifos Initiative
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ *
+ * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
+ */
+package org.mifos.mobile.core.database.dao
+
+import androidx.room.Dao
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+import kotlinx.coroutines.flow.Flow
+import org.mifos.mobile.core.database.entity.ChargeEntity
+
+@Dao
+interface ChargeDao {
+
+ @Query("SELECT * FROM charges")
+ fun getAllLocalCharges(): Flow>
+
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
+ suspend fun insertCharge(charge: List)
+
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
+ suspend fun syncCharges(charges: List)
+}
diff --git a/core/database/src/main/kotlin/org/mifos/mobile/core/database/dao/MifosNotificationDao.kt b/core/database/src/main/kotlin/org/mifos/mobile/core/database/dao/MifosNotificationDao.kt
new file mode 100644
index 000000000..071ea5eae
--- /dev/null
+++ b/core/database/src/main/kotlin/org/mifos/mobile/core/database/dao/MifosNotificationDao.kt
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2024 Mifos Initiative
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ *
+ * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
+ */
+package org.mifos.mobile.core.database.dao
+
+import androidx.room.Dao
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+import kotlinx.coroutines.flow.Flow
+import org.mifos.mobile.core.database.entity.MifosNotificationEntity
+
+@Dao
+interface MifosNotificationDao {
+
+ @Query("SELECT * FROM mifos_notifications ORDER BY timeStamp DESC")
+ fun getNotifications(): Flow>
+
+ @Query("SELECT COUNT(*) FROM mifos_notifications WHERE read = 0")
+ fun getUnreadNotificationsCount(): Flow
+
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
+ suspend fun saveNotification(notification: MifosNotificationEntity)
+
+ @Query("DELETE FROM mifos_notifications WHERE timeStamp < :cutoffTime")
+ suspend fun deleteOldNotifications(cutoffTime: Long)
+
+ @Query("UPDATE mifos_notifications SET read = :isRead WHERE timeStamp = :timeStamp")
+ suspend fun updateReadStatus(timeStamp: Long, isRead: Boolean)
+}
diff --git a/core/database/src/main/kotlin/org/mifos/mobile/core/database/di/DaoModule.kt b/core/database/src/main/kotlin/org/mifos/mobile/core/database/di/DaoModule.kt
new file mode 100644
index 000000000..e295fd081
--- /dev/null
+++ b/core/database/src/main/kotlin/org/mifos/mobile/core/database/di/DaoModule.kt
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2025 Mifos Initiative
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ *
+ * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
+ */
+package org.mifos.mobile.core.database.di
+
+import dagger.Module
+import dagger.Provides
+import dagger.hilt.InstallIn
+import dagger.hilt.components.SingletonComponent
+import org.mifos.mobile.core.database.SelfServiceDatabase
+import org.mifos.mobile.core.database.dao.ChargeDao
+import org.mifos.mobile.core.database.dao.MifosNotificationDao
+
+@Module
+@InstallIn(SingletonComponent::class)
+internal object DaoModule {
+ @Provides
+ fun provideMifosNotificationDao(database: SelfServiceDatabase): MifosNotificationDao {
+ return database.mifosNotificationDao()
+ }
+
+ @Provides
+ fun provideChargeDao(database: SelfServiceDatabase): ChargeDao {
+ return database.chargeDao()
+ }
+}
diff --git a/core/database/src/main/kotlin/org/mifos/mobile/core/database/di/DatabaseModule.kt b/core/database/src/main/kotlin/org/mifos/mobile/core/database/di/DatabaseModule.kt
new file mode 100644
index 000000000..b0347b4a8
--- /dev/null
+++ b/core/database/src/main/kotlin/org/mifos/mobile/core/database/di/DatabaseModule.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2024 Mifos Initiative
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ *
+ * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
+ */
+package org.mifos.mobile.core.database.di
+
+import android.content.Context
+import androidx.room.Room
+import dagger.Module
+import dagger.Provides
+import dagger.hilt.InstallIn
+import dagger.hilt.android.qualifiers.ApplicationContext
+import dagger.hilt.components.SingletonComponent
+import org.mifos.mobile.core.database.SelfServiceDatabase
+import javax.inject.Singleton
+
+@Module
+@InstallIn(SingletonComponent::class)
+internal object DatabaseModule {
+
+ @Provides
+ @Singleton
+ fun provideDatabase(@ApplicationContext context: Context): SelfServiceDatabase {
+ return Room.databaseBuilder(
+ context = context,
+ klass = SelfServiceDatabase::class.java,
+ name = "self-service-database",
+ ).build()
+ }
+}
diff --git a/core/database/src/main/kotlin/org/mifos/mobile/core/database/entity/ChargeCalculationTypeEntity.kt b/core/database/src/main/kotlin/org/mifos/mobile/core/database/entity/ChargeCalculationTypeEntity.kt
new file mode 100644
index 000000000..8faa2a30f
--- /dev/null
+++ b/core/database/src/main/kotlin/org/mifos/mobile/core/database/entity/ChargeCalculationTypeEntity.kt
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2025 Mifos Initiative
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ *
+ * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
+ */
+package org.mifos.mobile.core.database.entity
+
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class ChargeCalculationTypeEntity(
+ val id: Int = 0,
+ val code: String? = null,
+ val value: String? = null,
+)
diff --git a/core/database/src/main/kotlin/org/mifos/mobile/core/database/entity/ChargeEntity.kt b/core/database/src/main/kotlin/org/mifos/mobile/core/database/entity/ChargeEntity.kt
new file mode 100644
index 000000000..5077fcfa8
--- /dev/null
+++ b/core/database/src/main/kotlin/org/mifos/mobile/core/database/entity/ChargeEntity.kt
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2024 Mifos Initiative
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ *
+ * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
+ */
+package org.mifos.mobile.core.database.entity
+
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+
+@Entity(tableName = "charges")
+data class ChargeEntity(
+ @PrimaryKey(autoGenerate = true)
+ val id: Int? = null,
+ val clientId: Int? = null,
+ val chargeId: Int? = null,
+ val name: String? = null,
+ val dueDate: ArrayList = ArrayList(),
+ val chargeTimeType: ChargeTimeTypeEntity? = null,
+ val chargeCalculationType: ChargeCalculationTypeEntity? = null,
+ val currency: CurrencyEntity? = null,
+ val amount: Double = 0.0,
+ val amountPaid: Double = 0.0,
+ val amountWaived: Double = 0.0,
+ val amountWrittenOff: Double = 0.0,
+ val amountOutstanding: Double = 0.0,
+ val penalty: Boolean = false,
+ val isActive: Boolean = false,
+ val isChargePaid: Boolean = false,
+ val isChargeWaived: Boolean = false,
+ val paid: Boolean = false,
+ val waived: Boolean = false,
+)
diff --git a/core/datastore/src/main/java/org/mifos/mobile/core/datastore/model/ChargeListResponse.kt b/core/database/src/main/kotlin/org/mifos/mobile/core/database/entity/ChargeListResponse.kt
similarity index 80%
rename from core/datastore/src/main/java/org/mifos/mobile/core/datastore/model/ChargeListResponse.kt
rename to core/database/src/main/kotlin/org/mifos/mobile/core/database/entity/ChargeListResponse.kt
index bec421c84..66819f4fb 100644
--- a/core/datastore/src/main/java/org/mifos/mobile/core/datastore/model/ChargeListResponse.kt
+++ b/core/database/src/main/kotlin/org/mifos/mobile/core/database/entity/ChargeListResponse.kt
@@ -7,12 +7,12 @@
*
* See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
*/
-package org.mifos.mobile.core.datastore.model
+package org.mifos.mobile.core.database.entity
/**
* @author Vishwajeet
* @since 16/8/16.
*/
data class ChargeListResponse(
- var pageItems: List = ArrayList(),
+ var pageItems: List = ArrayList(),
)
diff --git a/core/database/src/main/kotlin/org/mifos/mobile/core/database/entity/ChargeTimeTypeEntity.kt b/core/database/src/main/kotlin/org/mifos/mobile/core/database/entity/ChargeTimeTypeEntity.kt
new file mode 100644
index 000000000..af886d41f
--- /dev/null
+++ b/core/database/src/main/kotlin/org/mifos/mobile/core/database/entity/ChargeTimeTypeEntity.kt
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2025 Mifos Initiative
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ *
+ * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
+ */
+package org.mifos.mobile.core.database.entity
+
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class ChargeTimeTypeEntity(
+ val id: Int = 0,
+ val code: String? = null,
+ val value: String? = null,
+)
diff --git a/core/database/src/main/kotlin/org/mifos/mobile/core/database/entity/CurrencyEntity.kt b/core/database/src/main/kotlin/org/mifos/mobile/core/database/entity/CurrencyEntity.kt
new file mode 100644
index 000000000..2d5d6d449
--- /dev/null
+++ b/core/database/src/main/kotlin/org/mifos/mobile/core/database/entity/CurrencyEntity.kt
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2025 Mifos Initiative
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ *
+ * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
+ */
+package org.mifos.mobile.core.database.entity
+
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class CurrencyEntity(
+ val code: String? = null,
+ val name: String? = null,
+ val decimalPlaces: Int = 0,
+ val displaySymbol: String? = null,
+ val nameCode: String? = null,
+ val displayLabel: String? = null,
+)
diff --git a/core/datastore/src/main/java/org/mifos/mobile/core/datastore/SelfServiceDatabase.kt b/core/database/src/main/kotlin/org/mifos/mobile/core/database/entity/MifosNotificationEntity.kt
similarity index 50%
rename from core/datastore/src/main/java/org/mifos/mobile/core/datastore/SelfServiceDatabase.kt
rename to core/database/src/main/kotlin/org/mifos/mobile/core/database/entity/MifosNotificationEntity.kt
index 400f055b2..862de6be2 100644
--- a/core/datastore/src/main/java/org/mifos/mobile/core/datastore/SelfServiceDatabase.kt
+++ b/core/database/src/main/kotlin/org/mifos/mobile/core/database/entity/MifosNotificationEntity.kt
@@ -7,12 +7,14 @@
*
* See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
*/
-package org.mifos.mobile.core.datastore
+package org.mifos.mobile.core.database.entity
-import com.raizlabs.android.dbflow.annotation.Database
+import androidx.room.Entity
+import androidx.room.PrimaryKey
-@Database(name = SelfServiceDatabase.NAME, version = SelfServiceDatabase.VERSION)
-object SelfServiceDatabase {
- const val NAME: String = "SelfService" // we will add the .db extension
- const val VERSION: Int = 1
-}
+@Entity(tableName = "mifos_notifications")
+data class MifosNotificationEntity(
+ @PrimaryKey val timeStamp: Long,
+ val msg: String? = null,
+ val read: Boolean? = null,
+)
diff --git a/core/database/src/main/kotlin/org/mifos/mobile/core/database/utils/ChargeTypeConverters.kt b/core/database/src/main/kotlin/org/mifos/mobile/core/database/utils/ChargeTypeConverters.kt
new file mode 100644
index 000000000..ce9af22bb
--- /dev/null
+++ b/core/database/src/main/kotlin/org/mifos/mobile/core/database/utils/ChargeTypeConverters.kt
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2024 Mifos Initiative
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ *
+ * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
+ */
+package org.mifos.mobile.core.database.utils
+
+import androidx.room.TypeConverter
+import kotlinx.serialization.json.Json
+import org.mifos.mobile.core.database.entity.ChargeCalculationTypeEntity
+import org.mifos.mobile.core.database.entity.ChargeTimeTypeEntity
+import org.mifos.mobile.core.database.entity.CurrencyEntity
+
+class ChargeTypeConverters {
+
+ @TypeConverter
+ fun fromIntList(value: String): ArrayList {
+ return Json.decodeFromString(value)
+ }
+
+ @TypeConverter
+ fun toIntList(list: ArrayList): String {
+ return Json.encodeToString(list)
+ }
+
+ @TypeConverter
+ fun fromChargeTimeType(value: ChargeTimeTypeEntity?): String? {
+ return value?.let { Json.encodeToString(it) }
+ }
+
+ @TypeConverter
+ fun toChargeTimeType(value: String?): ChargeTimeTypeEntity? {
+ return value?.let { Json.decodeFromString(ChargeTimeTypeEntity.serializer(), it) }
+ }
+
+ @TypeConverter
+ fun fromChargeCalculationType(value: ChargeCalculationTypeEntity?): String? {
+ return value?.let { Json.encodeToString(it) }
+ }
+
+ @TypeConverter
+ fun toChargeCalculationType(value: String?): ChargeCalculationTypeEntity? {
+ return value?.let { Json.decodeFromString(ChargeCalculationTypeEntity.serializer(), it) }
+ }
+
+ @TypeConverter
+ fun fromCurrency(value: CurrencyEntity?): String? {
+ return value?.let { Json.encodeToString(it) }
+ }
+
+ @TypeConverter
+ fun toCurrency(value: String?): CurrencyEntity? {
+ return value?.let { Json.decodeFromString(CurrencyEntity.serializer(), it) }
+ }
+}
diff --git a/core/datastore/build.gradle.kts b/core/datastore/build.gradle.kts
index 0ddb46915..d2ac74110 100644
--- a/core/datastore/build.gradle.kts
+++ b/core/datastore/build.gradle.kts
@@ -10,6 +10,7 @@
plugins {
alias(libs.plugins.mifos.android.library)
alias(libs.plugins.mifos.android.hilt)
+ alias(libs.plugins.kotlin.serialization)
}
android {
@@ -22,20 +23,8 @@ android {
}
dependencies {
- api(projects.core.common)
- api(projects.core.model)
- implementation(libs.squareup.retrofit.converter.gson)
+ implementation(projects.core.common)
+ implementation(projects.core.model)
- // DBFlow
- implementation(libs.dbflow)
- kapt(libs.dbflow.processor)
- implementation(libs.dbflow.core)
-
- //rxjava Dependencies
- implementation(libs.reactivex.rxjava2.android)
- implementation(libs.reactivex.rxjava2)
-
- testImplementation(libs.junit)
- androidTestImplementation(libs.androidx.test.ext.junit)
- androidTestImplementation(libs.androidx.test.espresso.core)
+
}
\ No newline at end of file
diff --git a/core/datastore/proguard-rules.pro b/core/datastore/proguard-rules.pro
deleted file mode 100644
index 481bb4348..000000000
--- a/core/datastore/proguard-rules.pro
+++ /dev/null
@@ -1,21 +0,0 @@
-# Add project specific ProGuard rules here.
-# You can control the set of applied configuration files using the
-# proguardFiles setting in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
-
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
-
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/core/datastore/src/debug/java/org/mifos/mobile/core/datastore/BaseURL.kt b/core/datastore/src/debug/java/org/mifos/mobile/core/datastore/BaseURL.kt
deleted file mode 100644
index 009804957..000000000
--- a/core/datastore/src/debug/java/org/mifos/mobile/core/datastore/BaseURL.kt
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2024 Mifos Initiative
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/.
- *
- * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
- */
-package org.mifos.mobile.core.datastore
-
-class BaseURL {
- val url: String? = null
- get() = field
- ?: (PROTOCOL_HTTPS + API_ENDPOINT + API_PATH)
- val defaultBaseUrl: String
- get() = PROTOCOL_HTTPS + API_ENDPOINT
-
- fun getUrl(endpoint: String): String {
- return endpoint + API_PATH
- }
-
- companion object {
- const val API_ENDPOINT = "gsoc.mifos.community"
- const val API_PATH = "/fineract-provider/api/v1/"
- const val PROTOCOL_HTTPS = "https://"
- }
-}
diff --git a/core/datastore/src/debug/res/values/api_keys.xml b/core/datastore/src/debug/res/values/api_keys.xml
deleted file mode 100644
index 005e2c8e1..000000000
--- a/core/datastore/src/debug/res/values/api_keys.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- AIzaSyBbeT2BaMWLj-lReCgYoNmXs_TIyRLr9qQ
-
-
diff --git a/core/datastore/src/main/java/org/mifos/mobile/core/datastore/DatabaseHelper.kt b/core/datastore/src/main/java/org/mifos/mobile/core/datastore/DatabaseHelper.kt
deleted file mode 100644
index 21291efa8..000000000
--- a/core/datastore/src/main/java/org/mifos/mobile/core/datastore/DatabaseHelper.kt
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright 2024 Mifos Initiative
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/.
- *
- * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
- */
-package org.mifos.mobile.core.datastore
-
-import android.util.Log
-import com.google.gson.Gson
-import com.raizlabs.android.dbflow.sql.language.SQLite
-import io.reactivex.Observable
-import org.mifos.mobile.core.datastore.model.Charge
-import org.mifos.mobile.core.datastore.model.MifosNotification
-import org.mifos.mobile.core.datastore.model.MifosNotification_Table
-import org.mifos.mobile.core.datastore.utils.NotificationComparator
-import org.mifos.mobile.core.model.entity.Page
-import java.util.Collections
-import javax.inject.Inject
-import javax.inject.Singleton
-
-/**
- * Created by Rajan Maurya on 02/03/17.
- */
-@Singleton
-class DatabaseHelper @Inject constructor() {
- fun syncCharges(charges: Page?): Page? {
- if (charges != null) {
- for (charge in charges.pageItems)
- charge.save()
- }
- return charges
- }
-
- fun clientCharges(): Page {
- val charges = SQLite.select()
- .from(Charge::class.java)
- .queryList()
- val chargePage = Page()
- chargePage.pageItems = charges
- return chargePage
- }
-
- fun notifications(): List {
- deleteOldNotifications()
- val notifications = SQLite.select()
- .from(MifosNotification::class.java)
- .queryList()
- Collections.sort(notifications, NotificationComparator())
- Log.d("Notifications@@@", Gson().toJson(notifications))
- return notifications
- }
-
- fun unreadNotificationsCount(): Int {
- deleteOldNotifications()
- return SQLite.select()
- .from(MifosNotification::class.java)
- .where(MifosNotification_Table.read.eq(false))
- .queryList().size
- }
-
- private fun deleteOldNotifications() {
- Observable.defer {
- val thirtyDaysInSeconds: Long = 2592000
- val thirtyDaysFromCurrentTimeInSeconds = System.currentTimeMillis() / 1000 -
- thirtyDaysInSeconds
- SQLite.delete(MifosNotification::class.java)
- .where(MifosNotification_Table.timeStamp.lessThan(thirtyDaysFromCurrentTimeInSeconds * 1000))
- .execute()
- null
- }
- }
-}
diff --git a/core/datastore/src/main/java/org/mifos/mobile/core/datastore/model/Charge.kt b/core/datastore/src/main/java/org/mifos/mobile/core/datastore/model/Charge.kt
deleted file mode 100644
index 3f55b1d2b..000000000
--- a/core/datastore/src/main/java/org/mifos/mobile/core/datastore/model/Charge.kt
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright 2024 Mifos Initiative
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/.
- *
- * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
- */
-package org.mifos.mobile.core.datastore.model
-
-import android.os.Parcel
-import android.os.Parcelable
-import com.raizlabs.android.dbflow.annotation.Column
-import com.raizlabs.android.dbflow.annotation.PrimaryKey
-import com.raizlabs.android.dbflow.annotation.Table
-import com.raizlabs.android.dbflow.structure.BaseModel
-import org.mifos.mobile.core.datastore.SelfServiceDatabase
-import org.mifos.mobile.core.model.entity.ChargeCalculationType
-import org.mifos.mobile.core.model.entity.ChargeTimeType
-import org.mifos.mobile.core.model.entity.Currency
-
-/**
- * @author Vishwajeet
- * @since 16/8/16.
- */
-@Table(database = SelfServiceDatabase::class)
-class Charge : BaseModel, Parcelable {
- @JvmField
- @PrimaryKey
- var id: Int? = null
-
- var clientId: Int? = null
- private var chargeId: Int? = null
-
- @Column
- var name: String? = null
-
- var dueDate: List = ArrayList()
- private var chargeTimeType: ChargeTimeType? = null
- private var chargeCalculationType: ChargeCalculationType? = null
- var currency: Currency? = null
-
- @Column
- var amount = 0.0
-
- @Column
- var amountPaid = 0.0
-
- @Column
- var amountWaived = 0.0
-
- @Column
- var amountWrittenOff = 0.0
-
- @Column
- var amountOutstanding = 0.0
-
- var penalty = false
-
- @Column
- var isActive = false
-
- var isChargePaid: Boolean = false
- var isChargeWaived: Boolean = false
-
- var paid = false
- var waived = false
-
- override fun describeContents(): Int {
- return 0
- }
-
- override fun writeToParcel(dest: Parcel, flags: Int) {
- dest.writeValue(id)
- dest.writeValue(clientId)
- dest.writeValue(chargeId)
- dest.writeString(name)
- dest.writeList(dueDate)
- dest.writeParcelable(chargeTimeType, flags)
- dest.writeParcelable(chargeCalculationType, flags)
- dest.writeParcelable(currency, flags)
- dest.writeValue(amount)
- dest.writeValue(amountPaid)
- dest.writeValue(amountWaived)
- dest.writeValue(amountWrittenOff)
- dest.writeValue(amountOutstanding)
- dest.writeValue(penalty)
- dest.writeValue(isActive)
- dest.writeValue(isChargePaid)
- dest.writeValue(isChargeWaived)
- dest.writeValue(paid)
- dest.writeValue(waived)
- }
-
- constructor()
- private constructor(`in`: Parcel) {
- id = `in`.readValue(Int::class.java.classLoader) as Int
- clientId = `in`.readValue(Int::class.java.classLoader) as Int
- chargeId = `in`.readValue(Int::class.java.classLoader) as Int
- name = `in`.readString()
- dueDate = ArrayList()
- `in`.readList(dueDate, Int::class.java.classLoader)
- chargeTimeType = `in`.readParcelable(ChargeTimeType::class.java.classLoader)
- chargeCalculationType = `in`.readParcelable(ChargeCalculationType::class.java.classLoader)
- currency = `in`.readParcelable(Currency::class.java.classLoader)
- amount = `in`.readValue(Double::class.java.classLoader) as Double
- amountPaid = `in`.readValue(Double::class.java.classLoader) as Double
- amountWaived = `in`.readValue(Double::class.java.classLoader) as Double
- amountWrittenOff = `in`.readValue(Double::class.java.classLoader) as Double
- amountOutstanding = `in`.readValue(Double::class.java.classLoader) as Double
- penalty = `in`.readValue(Boolean::class.java.classLoader) as Boolean
- isActive = `in`.readValue(Boolean::class.java.classLoader) as Boolean
- isChargePaid = `in`.readValue(Boolean::class.java.classLoader) as Boolean
- isChargeWaived = `in`.readValue(Boolean::class.java.classLoader) as Boolean
- isChargePaid = `in`.readValue(Boolean::class.java.classLoader) as Boolean
- isChargeWaived = `in`.readValue(Boolean::class.java.classLoader) as Boolean
- }
-
- companion object {
- @JvmField
- val CREATOR: Parcelable.Creator = object : Parcelable.Creator {
- override fun createFromParcel(source: Parcel): Charge {
- return Charge(source)
- }
-
- override fun newArray(size: Int): Array {
- return arrayOfNulls(size)
- }
- }
- }
-}
diff --git a/core/datastore/src/main/java/org/mifos/mobile/core/datastore/model/MifosNotification.kt b/core/datastore/src/main/java/org/mifos/mobile/core/datastore/model/MifosNotification.kt
deleted file mode 100644
index e60dbb133..000000000
--- a/core/datastore/src/main/java/org/mifos/mobile/core/datastore/model/MifosNotification.kt
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2024 Mifos Initiative
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/.
- *
- * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
- */
-package org.mifos.mobile.core.datastore.model
-
-import com.raizlabs.android.dbflow.annotation.Column
-import com.raizlabs.android.dbflow.annotation.PrimaryKey
-import com.raizlabs.android.dbflow.annotation.Table
-import com.raizlabs.android.dbflow.structure.BaseModel
-import org.mifos.mobile.core.datastore.SelfServiceDatabase
-
-/**
- * Created by dilpreet on 13/9/17.
- */
-@Table(database = SelfServiceDatabase::class)
-class MifosNotification : BaseModel() {
-
- @JvmField
- @PrimaryKey
- var timeStamp: Long = 0
-
- @JvmField
- @Column
- var msg: String? = null
-
- @JvmField
- @Column
- var read: Boolean? = null
- fun getTimeStamp(): Long {
- return timeStamp
- }
-
- fun setTimeStamp(timeStamp: Long) {
- this.timeStamp = timeStamp
- }
-
- fun isRead(): Boolean {
- return read ?: false
- }
-
- fun setRead(read: Boolean?) {
- this.read = read
- }
-}
diff --git a/core/datastore/src/main/java/org/mifos/mobile/core/datastore/utils/NotificationComparator.kt b/core/datastore/src/main/java/org/mifos/mobile/core/datastore/utils/NotificationComparator.kt
deleted file mode 100644
index 499dd6801..000000000
--- a/core/datastore/src/main/java/org/mifos/mobile/core/datastore/utils/NotificationComparator.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2024 Mifos Initiative
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/.
- *
- * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
- */
-package org.mifos.mobile.core.datastore.utils
-
-import org.mifos.mobile.core.datastore.model.MifosNotification
-
-/**
- * Created by dilpreet on 14/9/17.
- */
-class NotificationComparator : Comparator {
- override fun compare(
- firstNotification: MifosNotification,
- secondNotification: MifosNotification,
- ): Int {
- return when {
- // comparator function logic to sort notifications in the descending order of their timeStamp :
- firstNotification.timeStamp > secondNotification.timeStamp -> -1
- firstNotification.timeStamp < secondNotification.timeStamp -> 1
- else -> 0
- }
- }
-}
diff --git a/core/datastore/src/main/java/org/mifos/mobile/core/datastore/PreferencesHelper.kt b/core/datastore/src/main/kotlin/org/mifos/mobile/core/datastore/PreferencesHelper.kt
similarity index 93%
rename from core/datastore/src/main/java/org/mifos/mobile/core/datastore/PreferencesHelper.kt
rename to core/datastore/src/main/kotlin/org/mifos/mobile/core/datastore/PreferencesHelper.kt
index b469a6bea..19b4f147e 100644
--- a/core/datastore/src/main/java/org/mifos/mobile/core/datastore/PreferencesHelper.kt
+++ b/core/datastore/src/main/kotlin/org/mifos/mobile/core/datastore/PreferencesHelper.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Mifos Initiative
+ * Copyright 2025 Mifos Initiative
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -23,10 +23,6 @@ import org.mifos.mobile.core.model.enums.MifosAppLanguage
import javax.inject.Inject
import javax.inject.Singleton
-/**
- * Author: Vishwajeet
- * Since: 07/06/16
- */
@Singleton
class PreferencesHelper @Inject constructor(@ApplicationContext context: Context?) {
private val sharedPreferences: SharedPreferences? =
@@ -98,7 +94,7 @@ class PreferencesHelper @Inject constructor(@ApplicationContext context: Context
}
var tenant: String?
- get() = getString(TENANT, SelfServiceInterceptor.DEFAULT_TENANT)
+ get() = getString(TENANT, DEFAULT_TENANT)
set(tenant) {
putString(TENANT, tenant)
}
@@ -172,7 +168,7 @@ class PreferencesHelper @Inject constructor(@ApplicationContext context: Context
}
val baseUrl: String?
- get() = getString(BASE_URL, BaseURL().defaultBaseUrl)
+ get() = getString(BASE_URL, DEFAULT_BASE_URL)
var appTheme
get() = getInt(APPLICATION_THEME, AppTheme.SYSTEM.ordinal) ?: AppTheme.SYSTEM.ordinal
@@ -181,13 +177,14 @@ class PreferencesHelper @Inject constructor(@ApplicationContext context: Context
}
var language
- get() = getString(LANGUAGE_TYPE, MifosAppLanguage.ENGLISH.code) ?: MifosAppLanguage.SYSTEM_LANGUAGE.code
+ get() = getString(LANGUAGE_TYPE, MifosAppLanguage.ENGLISH.code)
+ ?: MifosAppLanguage.SYSTEM_LANGUAGE.code
set(language) {
putString(LANGUAGE_TYPE, language)
}
var isDefaultSystemLanguage
- get() = getBoolean(DEFAULT_SYSTEM_LANGUAGE, false) ?: false
+ get() = getBoolean(DEFAULT_SYSTEM_LANGUAGE, false) == true
set(value) {
putBoolean(DEFAULT_SYSTEM_LANGUAGE, value)
}
@@ -209,6 +206,9 @@ class PreferencesHelper @Inject constructor(@ApplicationContext context: Context
const val APPLICATION_THEME = "application_theme"
const val LANGUAGE_TYPE = "language_type"
const val DEFAULT_SYSTEM_LANGUAGE = "default_system_language"
+
+ private const val DEFAULT_TENANT = "gsoc"
+ private const val DEFAULT_BASE_URL = "https://gsoc.mifos.community"
}
fun getStringFlowForKey(keyForString: String) = callbackFlow {
@@ -220,7 +220,7 @@ class PreferencesHelper @Inject constructor(@ApplicationContext context: Context
sharedPreferences?.registerOnSharedPreferenceChangeListener(listener)
send(getString(keyForString, null))
awaitClose { sharedPreferences?.unregisterOnSharedPreferenceChangeListener(listener) }
- }.buffer(Channel.UNLIMITED)
+ }.buffer(Channel.Factory.UNLIMITED)
fun getIntFlowForKey(keyForInt: String) = callbackFlow {
val listener = SharedPreferences.OnSharedPreferenceChangeListener { _, key ->
@@ -231,5 +231,5 @@ class PreferencesHelper @Inject constructor(@ApplicationContext context: Context
sharedPreferences?.registerOnSharedPreferenceChangeListener(listener)
send(getInt(keyForInt, -1))
awaitClose { sharedPreferences?.unregisterOnSharedPreferenceChangeListener(listener) }
- }.buffer(Channel.UNLIMITED)
+ }.buffer(Channel.Factory.UNLIMITED)
}
diff --git a/core/datastore/src/release/java/org/mifos/mobile/core/datastore/SelfServiceInterceptor.kt b/core/datastore/src/release/java/org/mifos/mobile/core/datastore/SelfServiceInterceptor.kt
deleted file mode 100644
index 615690eb8..000000000
--- a/core/datastore/src/release/java/org/mifos/mobile/core/datastore/SelfServiceInterceptor.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright 2024 Mifos Initiative
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/.
- *
- * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
- */
-package org.mifos.mobile.core.datastore
-
-import okhttp3.Interceptor
-import okhttp3.Request
-import okhttp3.Request.Builder
-import okhttp3.Response
-import java.io.IOException
-
-class SelfServiceInterceptor(private val preferencesHelper: PreferencesHelper) : Interceptor {
- @Throws(IOException::class)
- override fun intercept(chain: Interceptor.Chain): Response {
- val chainRequest: Request = chain.request()
- val builder: Builder = chainRequest.newBuilder()
- builder.header("Content-Type", "application/json")
- builder.header("Accept", "application/json")
-
- preferencesHelper.tenant?.let {
- builder.header(HEADER_TENANT, it)
- }
-
- preferencesHelper.token?.let {
- if (it.isNotEmpty()) {
- builder.header(HEADER_AUTH, it)
- }
- }
-
- val request: Request = builder.build()
- return chain.proceed(request)
- }
-
- companion object {
- const val HEADER_TENANT = "Fineract-Platform-TenantId"
- const val HEADER_AUTH = "Authorization"
- const val DEFAULT_TENANT = "gsoc"
- }
-}
diff --git a/core/model/build.gradle.kts b/core/model/build.gradle.kts
index 1d6c0c2a2..2a7083558 100644
--- a/core/model/build.gradle.kts
+++ b/core/model/build.gradle.kts
@@ -26,6 +26,7 @@ dependencies {
api(projects.core.common)
implementation(libs.jetbrains.kotlin.jdk7)
+ implementation(libs.kotlinx.serialization.json)
// For Serialized name
implementation(libs.squareup.retrofit.converter.gson)
diff --git a/core/model/src/main/java/org/mifos/mobile/core/model/entity/Charge.kt b/core/model/src/main/java/org/mifos/mobile/core/model/entity/Charge.kt
new file mode 100644
index 000000000..3dc04d662
--- /dev/null
+++ b/core/model/src/main/java/org/mifos/mobile/core/model/entity/Charge.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2024 Mifos Initiative
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ *
+ * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
+ */
+package org.mifos.mobile.core.model.entity
+
+import android.os.Parcelable
+import kotlinx.parcelize.Parcelize
+
+@Parcelize
+data class Charge(
+ val clientId: Int? = null,
+ val chargeId: Int? = null,
+ val name: String? = null,
+ val dueDate: ArrayList = ArrayList(),
+ val chargeTimeType: ChargeTimeType? = null,
+ val chargeCalculationType: ChargeCalculationType? = null,
+ val currency: Currency? = null,
+ val amount: Double = 0.0,
+ val amountPaid: Double = 0.0,
+ val amountWaived: Double = 0.0,
+ val amountWrittenOff: Double = 0.0,
+ val amountOutstanding: Double = 0.0,
+ val penalty: Boolean = false,
+ val isActive: Boolean = false,
+ val isChargePaid: Boolean = false,
+ val isChargeWaived: Boolean = false,
+ val paid: Boolean = false,
+ val waived: Boolean = false,
+) : Parcelable
diff --git a/core/model/src/main/java/org/mifos/mobile/core/model/entity/ChargeCalculationType.kt b/core/model/src/main/java/org/mifos/mobile/core/model/entity/ChargeCalculationType.kt
index 526fea707..07347cc8b 100644
--- a/core/model/src/main/java/org/mifos/mobile/core/model/entity/ChargeCalculationType.kt
+++ b/core/model/src/main/java/org/mifos/mobile/core/model/entity/ChargeCalculationType.kt
@@ -11,8 +11,10 @@ package org.mifos.mobile.core.model.entity
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
+import kotlinx.serialization.Serializable
@Parcelize
+@Serializable
data class ChargeCalculationType(
var id: Int = 0,
var code: String? = null,
diff --git a/core/model/src/main/java/org/mifos/mobile/core/model/entity/Currency.kt b/core/model/src/main/java/org/mifos/mobile/core/model/entity/Currency.kt
index 8fc44de67..b52f63073 100644
--- a/core/model/src/main/java/org/mifos/mobile/core/model/entity/Currency.kt
+++ b/core/model/src/main/java/org/mifos/mobile/core/model/entity/Currency.kt
@@ -24,5 +24,4 @@ data class Currency(
var displaySymbol: String? = null,
var nameCode: String? = null,
var displayLabel: String? = null,
-
) : Parcelable
diff --git a/core/model/src/main/java/org/mifos/mobile/core/model/entity/MifosNotification.kt b/core/model/src/main/java/org/mifos/mobile/core/model/entity/MifosNotification.kt
new file mode 100644
index 000000000..82ebee93b
--- /dev/null
+++ b/core/model/src/main/java/org/mifos/mobile/core/model/entity/MifosNotification.kt
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2024 Mifos Initiative
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ *
+ * See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
+ */
+package org.mifos.mobile.core.model.entity
+
+import android.os.Parcelable
+import kotlinx.parcelize.Parcelize
+import kotlinx.serialization.Serializable
+
+@Parcelize
+@Serializable
+data class MifosNotification(
+ var timeStamp: Long,
+ var msg: String? = null,
+ var read: Boolean? = null,
+) : Parcelable {
+ fun isRead(): Boolean {
+ return read == true
+ }
+}
diff --git a/core/datastore/src/release/java/org/mifos/mobile/core/datastore/BaseURL.kt b/core/network/src/main/java/org/mifos/mobile/core/network/BaseURL.kt
similarity index 95%
rename from core/datastore/src/release/java/org/mifos/mobile/core/datastore/BaseURL.kt
rename to core/network/src/main/java/org/mifos/mobile/core/network/BaseURL.kt
index 009804957..089902adf 100644
--- a/core/datastore/src/release/java/org/mifos/mobile/core/datastore/BaseURL.kt
+++ b/core/network/src/main/java/org/mifos/mobile/core/network/BaseURL.kt
@@ -7,7 +7,7 @@
*
* See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
*/
-package org.mifos.mobile.core.datastore
+package org.mifos.mobile.core.network
class BaseURL {
val url: String? = null
diff --git a/core/network/src/main/java/org/mifos/mobile/core/network/DataManager.kt b/core/network/src/main/java/org/mifos/mobile/core/network/DataManager.kt
index 97beabc3b..b524fe16a 100644
--- a/core/network/src/main/java/org/mifos/mobile/core/network/DataManager.kt
+++ b/core/network/src/main/java/org/mifos/mobile/core/network/DataManager.kt
@@ -11,10 +11,8 @@ package org.mifos.mobile.core.network
import io.reactivex.Observable
import okhttp3.ResponseBody
-import org.mifos.mobile.core.datastore.DatabaseHelper
import org.mifos.mobile.core.datastore.PreferencesHelper
-import org.mifos.mobile.core.datastore.model.Charge
-import org.mifos.mobile.core.datastore.model.MifosNotification
+import org.mifos.mobile.core.model.entity.Charge
import org.mifos.mobile.core.model.entity.Page
import org.mifos.mobile.core.model.entity.Transaction
import org.mifos.mobile.core.model.entity.UpdatePasswordPayload
@@ -53,7 +51,6 @@ import javax.inject.Singleton
class DataManager @Inject constructor(
val preferencesHelper: PreferencesHelper,
private val baseApiManager: BaseApiManager,
- private val databaseHelper: DatabaseHelper,
) {
var clientId: Long? = preferencesHelper.clientId
@@ -88,9 +85,7 @@ class DataManager @Inject constructor(
}
suspend fun getClientCharges(clientId: Long): Page {
- return baseApiManager.clientChargeApi.getClientChargeList(clientId).apply {
- databaseHelper.syncCharges(this)
- }
+ return baseApiManager.clientChargeApi.getClientChargeList(clientId)
}
suspend fun getLoanCharges(loanId: Long): List {
@@ -209,14 +204,6 @@ class DataManager @Inject constructor(
return baseApiManager.registrationApi.verifyUser(userVerify)
}
- fun clientLocalCharges(): Page = databaseHelper.clientCharges()
-
- fun notifications(): List = databaseHelper.notifications()
-
- fun unreadNotificationsCount(): Int {
- return databaseHelper.unreadNotificationsCount()
- }
-
suspend fun registerNotification(payload: NotificationRegisterPayload?): ResponseBody {
return baseApiManager.notificationApi.registerNotification(payload)
}
diff --git a/core/datastore/src/debug/java/org/mifos/mobile/core/datastore/SelfServiceInterceptor.kt b/core/network/src/main/java/org/mifos/mobile/core/network/SelfServiceInterceptor.kt
similarity index 93%
rename from core/datastore/src/debug/java/org/mifos/mobile/core/datastore/SelfServiceInterceptor.kt
rename to core/network/src/main/java/org/mifos/mobile/core/network/SelfServiceInterceptor.kt
index 33601d7f4..b27e5b6de 100644
--- a/core/datastore/src/debug/java/org/mifos/mobile/core/datastore/SelfServiceInterceptor.kt
+++ b/core/network/src/main/java/org/mifos/mobile/core/network/SelfServiceInterceptor.kt
@@ -7,17 +7,14 @@
*
* See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
*/
-package org.mifos.mobile.core.datastore
+package org.mifos.mobile.core.network
import android.text.TextUtils
import okhttp3.Interceptor
import okhttp3.Response
+import org.mifos.mobile.core.datastore.PreferencesHelper
import java.io.IOException
-/**
- * @author Vishwajeet
- * @since 21/06/16
- */
class SelfServiceInterceptor(private val preferencesHelper: PreferencesHelper) : Interceptor {
@Throws(IOException::class)
override fun intercept(chain: Interceptor.Chain): Response {
diff --git a/core/network/src/main/java/org/mifos/mobile/core/network/SelfServiceOkHttpClient.kt b/core/network/src/main/java/org/mifos/mobile/core/network/SelfServiceOkHttpClient.kt
index 0ed48eefc..933eb14ff 100644
--- a/core/network/src/main/java/org/mifos/mobile/core/network/SelfServiceOkHttpClient.kt
+++ b/core/network/src/main/java/org/mifos/mobile/core/network/SelfServiceOkHttpClient.kt
@@ -12,7 +12,6 @@ package org.mifos.mobile.core.network
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import org.mifos.mobile.core.datastore.PreferencesHelper
-import org.mifos.mobile.core.datastore.SelfServiceInterceptor
import java.security.SecureRandom
import java.security.cert.CertificateException
import java.security.cert.X509Certificate
diff --git a/core/network/src/main/java/org/mifos/mobile/core/network/di/NetworkModule.kt b/core/network/src/main/java/org/mifos/mobile/core/network/di/NetworkModule.kt
index 5cad594b8..562e45708 100644
--- a/core/network/src/main/java/org/mifos/mobile/core/network/di/NetworkModule.kt
+++ b/core/network/src/main/java/org/mifos/mobile/core/network/di/NetworkModule.kt
@@ -13,8 +13,8 @@ import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
-import org.mifos.mobile.core.datastore.BaseURL
import org.mifos.mobile.core.datastore.PreferencesHelper
+import org.mifos.mobile.core.network.BaseURL
import org.mifos.mobile.core.network.SelfServiceOkHttpClient
import org.mifos.mobile.core.network.services.AuthenticationService
import org.mifos.mobile.core.network.services.BeneficiaryService
diff --git a/core/network/src/main/java/org/mifos/mobile/core/network/services/ClientChargeService.kt b/core/network/src/main/java/org/mifos/mobile/core/network/services/ClientChargeService.kt
index f8e90d532..3985947c5 100644
--- a/core/network/src/main/java/org/mifos/mobile/core/network/services/ClientChargeService.kt
+++ b/core/network/src/main/java/org/mifos/mobile/core/network/services/ClientChargeService.kt
@@ -10,15 +10,11 @@
package org.mifos.mobile.core.network.services
import org.mifos.mobile.core.common.ApiEndPoints
-import org.mifos.mobile.core.datastore.model.Charge
+import org.mifos.mobile.core.model.entity.Charge
import org.mifos.mobile.core.model.entity.Page
import retrofit2.http.GET
import retrofit2.http.Path
-/**
- * @author Vishwajeet
- * @since 17/8/16.
- */
interface ClientChargeService {
@GET(ApiEndPoints.CLIENTS + "/{clientId}/charges")
diff --git a/core/testing/src/main/java/org/mifos/mobile/core/testing/util/FakeRemoteDataSource.kt b/core/testing/src/main/java/org/mifos/mobile/core/testing/util/FakeRemoteDataSource.kt
index 904e4e469..e98580199 100644
--- a/core/testing/src/main/java/org/mifos/mobile/core/testing/util/FakeRemoteDataSource.kt
+++ b/core/testing/src/main/java/org/mifos/mobile/core/testing/util/FakeRemoteDataSource.kt
@@ -10,7 +10,7 @@
package org.mifos.mobile.core.testing.util
import com.google.gson.reflect.TypeToken
-import org.mifos.mobile.core.datastore.model.Charge
+import org.mifos.mobile.core.database.entity.ChargeEntity
import org.mifos.mobile.core.model.entity.Page
import org.mifos.mobile.core.model.entity.Transaction
import org.mifos.mobile.core.model.entity.UpdatePasswordPayload
@@ -177,22 +177,22 @@ object FakeRemoteDataSource {
LoginPayload::class.java,
FakeJsonName.LOGIN,
)
- val charge: Page?
- get() = mTestDataFactory.getListTypePojo?>(
+ val charge: Page?
+ get() = mTestDataFactory.getListTypePojo?>(
object :
- TypeToken?>() {},
+ TypeToken?>() {},
FakeJsonName.CHARGE,
)
- val savingsCharge: List
+ val savingsCharge: List
get() = mTestDataFactory.getListTypePojo(
object :
- TypeToken?>() {},
+ TypeToken?>() {},
FakeJsonName.SAVING_CHARGE,
)
- val loanCharge: List
+ val loanCharge: List
get() = mTestDataFactory.getListTypePojo(
object :
- TypeToken?>() {},
+ TypeToken?>() {},
FakeJsonName.LOAN_CHARGE,
)
val userVerify: UserVerify
diff --git a/feature/beneficiary/src/main/java/org/mifos/mobile/feature/beneficiary/beneficiaryList/BeneficiaryListScreen.kt b/feature/beneficiary/src/main/java/org/mifos/mobile/feature/beneficiary/beneficiaryList/BeneficiaryListScreen.kt
index 9c343f634..10bceff57 100644
--- a/feature/beneficiary/src/main/java/org/mifos/mobile/feature/beneficiary/beneficiaryList/BeneficiaryListScreen.kt
+++ b/feature/beneficiary/src/main/java/org/mifos/mobile/feature/beneficiary/beneficiaryList/BeneficiaryListScreen.kt
@@ -9,21 +9,17 @@
*/
package org.mifos.mobile.feature.beneficiary.beneficiaryList
-import android.widget.Toast
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.pulltorefresh.PullToRefreshContainer
+import androidx.compose.material3.pulltorefresh.PullToRefreshBox
import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState
import androidx.compose.runtime.Composable
-import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
-import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
-import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
@@ -99,61 +95,42 @@ private fun BeneficiaryListScreen(
Box(
modifier = Modifier
.fillMaxSize()
- .padding(it)
- .nestedScroll(pullRefreshState.nestedScrollConnection),
+ .padding(it),
) {
- when (uiState) {
- BeneficiaryListUiState.Loading -> {
- MifosProgressIndicatorOverlay()
- }
-
- is BeneficiaryListUiState.Error -> {
- MifosErrorComponent(
- isNetworkConnected = Network.isConnected(context),
- isRetryEnabled = true,
- onRetry = retryLoadingBeneficiary,
- message = stringResource(R.string.error_fetching_beneficiaries),
- )
- }
+ PullToRefreshBox(
+ state = pullRefreshState,
+ onRefresh = refresh,
+ isRefreshing = isRefreshing,
+ ) {
+ when (uiState) {
+ BeneficiaryListUiState.Loading -> {
+ MifosProgressIndicatorOverlay()
+ }
- is BeneficiaryListUiState.Success -> {
- if (uiState.beneficiaries.isEmpty()) {
- EmptyDataView(
- modifier = Modifier.fillMaxSize(),
- icon = R.drawable.ic_error_black_24dp,
- error = R.string.no_beneficiary_found_please_add,
- )
- } else {
- ShowBeneficiary(
- beneficiaryList = uiState.beneficiaries,
- onClick = onBeneficiaryItemClick,
+ is BeneficiaryListUiState.Error -> {
+ MifosErrorComponent(
+ isNetworkConnected = Network.isConnected(context),
+ isRetryEnabled = true,
+ onRetry = retryLoadingBeneficiary,
+ message = stringResource(R.string.error_fetching_beneficiaries),
)
}
- }
- }
-
- PullToRefreshContainer(
- state = pullRefreshState,
- modifier = Modifier.align(Alignment.TopCenter),
- )
- }
- LaunchedEffect(key1 = isRefreshing) {
- if (isRefreshing) pullRefreshState.startRefresh()
- }
-
- LaunchedEffect(key1 = pullRefreshState.isRefreshing) {
- if (pullRefreshState.isRefreshing) {
- if (Network.isConnected(context)) {
- refresh()
- } else {
- Toast.makeText(
- context,
- context.resources.getText(R.string.internet_not_connected),
- Toast.LENGTH_SHORT,
- ).show()
+ is BeneficiaryListUiState.Success -> {
+ if (uiState.beneficiaries.isEmpty()) {
+ EmptyDataView(
+ modifier = Modifier.fillMaxSize(),
+ icon = R.drawable.ic_error_black_24dp,
+ error = R.string.no_beneficiary_found_please_add,
+ )
+ } else {
+ ShowBeneficiary(
+ beneficiaryList = uiState.beneficiaries,
+ onClick = onBeneficiaryItemClick,
+ )
+ }
+ }
}
- pullRefreshState.endRefresh()
}
}
}
diff --git a/feature/client-charge/build.gradle.kts b/feature/client-charge/build.gradle.kts
index 7387aec95..f201facc3 100644
--- a/feature/client-charge/build.gradle.kts
+++ b/feature/client-charge/build.gradle.kts
@@ -17,5 +17,5 @@ android {
}
dependencies {
- implementation(libs.dbflow)
+
}
\ No newline at end of file
diff --git a/feature/client-charge/src/main/java/org/mifos/mobile/feature/charge/screens/ClientChargeScreen.kt b/feature/client-charge/src/main/java/org/mifos/mobile/feature/charge/screens/ClientChargeScreen.kt
index 1521fb350..3eb83776c 100644
--- a/feature/client-charge/src/main/java/org/mifos/mobile/feature/charge/screens/ClientChargeScreen.kt
+++ b/feature/client-charge/src/main/java/org/mifos/mobile/feature/charge/screens/ClientChargeScreen.kt
@@ -38,11 +38,11 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
import org.mifos.mobile.core.common.Network
import org.mifos.mobile.core.common.utils.CurrencyUtil
import org.mifos.mobile.core.common.utils.DateHelper
-import org.mifos.mobile.core.datastore.model.Charge
import org.mifos.mobile.core.designsystem.components.MifosScaffold
import org.mifos.mobile.core.designsystem.theme.GreenSuccess
import org.mifos.mobile.core.designsystem.theme.MifosMobileTheme
import org.mifos.mobile.core.designsystem.theme.RedErrorDark
+import org.mifos.mobile.core.model.entity.Charge
import org.mifos.mobile.core.ui.component.EmptyDataView
import org.mifos.mobile.core.ui.component.MifosErrorComponent
import org.mifos.mobile.core.ui.component.MifosProgressIndicator
diff --git a/feature/client-charge/src/main/java/org/mifos/mobile/feature/charge/utils/ClientChargeState.kt b/feature/client-charge/src/main/java/org/mifos/mobile/feature/charge/utils/ClientChargeState.kt
index b9156b232..09a35d461 100644
--- a/feature/client-charge/src/main/java/org/mifos/mobile/feature/charge/utils/ClientChargeState.kt
+++ b/feature/client-charge/src/main/java/org/mifos/mobile/feature/charge/utils/ClientChargeState.kt
@@ -9,7 +9,7 @@
*/
package org.mifos.mobile.feature.charge.utils
-import org.mifos.mobile.core.datastore.model.Charge
+import org.mifos.mobile.core.model.entity.Charge
internal sealed class ClientChargeState {
data object Loading : ClientChargeState()
diff --git a/feature/client-charge/src/main/java/org/mifos/mobile/feature/charge/viewmodel/ClientChargeViewModel.kt b/feature/client-charge/src/main/java/org/mifos/mobile/feature/charge/viewmodel/ClientChargeViewModel.kt
index 951b6fe52..f631e6697 100644
--- a/feature/client-charge/src/main/java/org/mifos/mobile/feature/charge/viewmodel/ClientChargeViewModel.kt
+++ b/feature/client-charge/src/main/java/org/mifos/mobile/feature/charge/viewmodel/ClientChargeViewModel.kt
@@ -9,6 +9,7 @@
*/
package org.mifos.mobile.feature.charge.viewmodel
+import android.util.Log
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
@@ -28,8 +29,8 @@ import javax.inject.Inject
@HiltViewModel
internal class ClientChargeViewModel @Inject constructor(
private val clientChargeRepositoryImp: ClientChargeRepository,
- val preferencesHelper: PreferencesHelper,
- private val savedStateHandle: SavedStateHandle,
+ preferencesHelper: PreferencesHelper,
+ savedStateHandle: SavedStateHandle,
) : ViewModel() {
private val _clientChargeUiState = MutableStateFlow(Loading)
@@ -63,6 +64,8 @@ internal class ClientChargeViewModel @Inject constructor(
clientChargeRepositoryImp.getClientCharges(clientId).catch {
_clientChargeUiState.value = ClientChargeState.Error(it.message)
}.collect {
+ Log.e("selfServiceDatabase", it.toString())
+ clientChargeRepositoryImp.syncCharges(it)
_clientChargeUiState.value = ClientChargeState.Success(it.pageItems)
}
}
@@ -96,8 +99,7 @@ internal class ClientChargeViewModel @Inject constructor(
clientChargeRepositoryImp.clientLocalCharges().catch {
_clientChargeUiState.value = ClientChargeState.Error(it.message)
}.collect {
- _clientChargeUiState.value =
- ClientChargeState.Success(it.pageItems.filterNotNull())
+ _clientChargeUiState.value = ClientChargeState.Success(it.pageItems)
}
}
}
diff --git a/feature/notification/build.gradle.kts b/feature/notification/build.gradle.kts
index 56422544d..413c425d7 100644
--- a/feature/notification/build.gradle.kts
+++ b/feature/notification/build.gradle.kts
@@ -17,6 +17,5 @@ android {
}
dependencies {
- implementation(projects.core.datastore)
- implementation(libs.dbflow)
+
}
\ No newline at end of file
diff --git a/feature/notification/src/main/java/org/mifos/mobile/feature/notification/NotificationScreen.kt b/feature/notification/src/main/java/org/mifos/mobile/feature/notification/NotificationScreen.kt
index ab39a3cb8..69887a227 100644
--- a/feature/notification/src/main/java/org/mifos/mobile/feature/notification/NotificationScreen.kt
+++ b/feature/notification/src/main/java/org/mifos/mobile/feature/notification/NotificationScreen.kt
@@ -24,17 +24,15 @@ import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
-import androidx.compose.material3.pulltorefresh.PullToRefreshContainer
+import androidx.compose.material3.pulltorefresh.PullToRefreshBox
import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState
import androidx.compose.runtime.Composable
-import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
-import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
@@ -45,10 +43,10 @@ import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import org.mifos.mobile.core.common.Network
import org.mifos.mobile.core.common.utils.DateHelper
-import org.mifos.mobile.core.datastore.model.MifosNotification
import org.mifos.mobile.core.designsystem.components.MifosScaffold
import org.mifos.mobile.core.designsystem.components.MifosTextButton
import org.mifos.mobile.core.designsystem.theme.MifosMobileTheme
+import org.mifos.mobile.core.model.entity.MifosNotification
import org.mifos.mobile.core.ui.component.EmptyDataView
import org.mifos.mobile.core.ui.component.MifosErrorComponent
import org.mifos.mobile.core.ui.component.MifosProgressIndicatorOverlay
@@ -137,24 +135,11 @@ private fun NotificationContent(
) {
val pullRefreshState = rememberPullToRefreshState()
- if (pullRefreshState.isRefreshing) {
- LaunchedEffect(key1 = true) {
- onRefresh()
- }
- }
-
- LaunchedEffect(key1 = isRefreshing) {
- if (isRefreshing) {
- pullRefreshState.startRefresh()
- } else {
- pullRefreshState.endRefresh()
- }
- }
-
- Box(
- modifier = modifier
- .fillMaxSize()
- .nestedScroll(pullRefreshState.nestedScrollConnection),
+ PullToRefreshBox(
+ state = pullRefreshState,
+ onRefresh = onRefresh,
+ isRefreshing = isRefreshing,
+ modifier = modifier,
) {
LazyColumn(modifier = Modifier.fillMaxSize()) {
itemsIndexed(items = notifications) { index, notification ->
@@ -167,10 +152,6 @@ private fun NotificationContent(
}
}
}
- PullToRefreshContainer(
- state = pullRefreshState,
- modifier = Modifier.align(Alignment.TopCenter),
- )
}
}
@@ -227,8 +208,16 @@ internal class NotificationUiStatePreviews : PreviewParameterProvider get() = _isRefreshing
init {
- loadNotifications()
+ viewModelScope.launch {
+ notificationRepositoryImp.deleteOldNotifications()
+ loadNotifications()
+ }
}
fun loadNotifications() {
@@ -41,12 +45,15 @@ internal class NotificationViewModel @Inject constructor(
viewModelScope.launch {
notificationRepositoryImp.loadNotifications()
.catch {
+ Log.e("selfServiceDatabase", it.toString())
_notificationUiState.value =
NotificationUiState.Error(errorMessage = it.message)
}.collect { notifications ->
+ Log.e("selfServiceDatabase", notifications.toString())
+ val sortedNotifications = sortNotifications(notifications)
_isRefreshing.emit(false)
_notificationUiState.value =
- NotificationUiState.Success(notifications = notifications)
+ NotificationUiState.Success(notifications = sortedNotifications)
}
}
}
@@ -57,8 +64,18 @@ internal class NotificationViewModel @Inject constructor(
}
fun dismissNotification(notification: MifosNotification) {
- notification.setRead(true)
- notification.save()
+ notification.read = true
+ viewModelScope.launch {
+ notificationRepositoryImp.saveNotification(notification.copy(read = true))
+ notificationRepositoryImp.updateReadStatus(notification, true)
+ }
+ }
+
+ private fun sortNotifications(notifications: List): List {
+ return notifications.sortedWith(
+ compareByDescending { !it.isRead() }
+ .thenByDescending { it.timeStamp },
+ )
}
}
diff --git a/feature/qr/src/main/java/org/mifos/mobile/feature/qr/qrCodeImport/QrCodeImportContent.kt b/feature/qr/src/main/java/org/mifos/mobile/feature/qr/qrCodeImport/QrCodeImportContent.kt
index e80ffd473..f584ce714 100644
--- a/feature/qr/src/main/java/org/mifos/mobile/feature/qr/qrCodeImport/QrCodeImportContent.kt
+++ b/feature/qr/src/main/java/org/mifos/mobile/feature/qr/qrCodeImport/QrCodeImportContent.kt
@@ -13,12 +13,10 @@ import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Bitmap
import android.net.Uri
-import android.os.Build
import android.provider.Settings
import android.widget.Toast
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
-import androidx.annotation.RequiresApi
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.getValue
@@ -27,11 +25,11 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.compose.ui.res.stringResource
import androidx.core.content.ContextCompat
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
+import androidx.lifecycle.compose.LocalLifecycleOwner
import com.google.accompanist.permissions.ExperimentalPermissionsApi
import com.google.accompanist.permissions.PermissionState
import com.google.accompanist.permissions.rememberPermissionState
@@ -110,7 +108,7 @@ internal fun PermissionBox(
contract = ActivityResultContracts.RequestMultiplePermissions(),
onResult = { permissionResults ->
val isGranted =
- requiredPermissions.all { permissionResults[it] ?: false }
+ requiredPermissions.all { permissionResults[it] == true }
permissionGranted = isGranted
@@ -179,7 +177,6 @@ internal fun PermissionBox(
}
}
-@RequiresApi(Build.VERSION_CODES.O)
internal fun convertToMutableBitmap(bitmap: Bitmap): Bitmap {
return if (bitmap.config == Bitmap.Config.HARDWARE) {
bitmap.copy(Bitmap.Config.ARGB_8888, true)
diff --git a/feature/recent-transaction/src/main/java/org/mifos/mobile/feature/transaction/screens/RecentTransactionScreen.kt b/feature/recent-transaction/src/main/java/org/mifos/mobile/feature/transaction/screens/RecentTransactionScreen.kt
index f2578c0bc..f2efa8283 100644
--- a/feature/recent-transaction/src/main/java/org/mifos/mobile/feature/transaction/screens/RecentTransactionScreen.kt
+++ b/feature/recent-transaction/src/main/java/org/mifos/mobile/feature/transaction/screens/RecentTransactionScreen.kt
@@ -26,15 +26,13 @@ import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
-import androidx.compose.material3.pulltorefresh.PullToRefreshContainer
+import androidx.compose.material3.pulltorefresh.PullToRefreshBox
import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState
import androidx.compose.runtime.Composable
-import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
-import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
@@ -104,64 +102,50 @@ private fun RecentTransactionScreen(
Box(
Modifier
.fillMaxSize()
- .padding(paddingValues)
- .nestedScroll(pullRefreshState.nestedScrollConnection),
+ .padding(paddingValues),
) {
- Column(
- modifier = Modifier
- .fillMaxSize(),
- verticalArrangement = Arrangement.Center,
+ PullToRefreshBox(
+ state = pullRefreshState,
+ onRefresh = onRefresh,
+ isRefreshing = isRefreshing,
) {
- when (uiState) {
- is RecentTransactionState.Error -> {
- MifosErrorComponent(
- isNetworkConnected = Network.isConnected(context),
- isRetryEnabled = true,
- onRetry = onRetry,
- )
- }
+ Column(
+ modifier = Modifier
+ .fillMaxSize(),
+ verticalArrangement = Arrangement.Center,
+ ) {
+ when (uiState) {
+ is RecentTransactionState.Error -> {
+ MifosErrorComponent(
+ isNetworkConnected = Network.isConnected(context),
+ isRetryEnabled = true,
+ onRetry = onRetry,
+ )
+ }
- is RecentTransactionState.Loading -> {
- MifosProgressIndicatorOverlay()
- }
+ is RecentTransactionState.Loading -> {
+ MifosProgressIndicatorOverlay()
+ }
- is RecentTransactionState.Success -> {
- if (uiState.transactions.isEmpty()) {
- EmptyDataView(
- icon = R.drawable.ic_error_black_24dp,
- error = R.string.no_transaction,
- modifier = Modifier.fillMaxSize(),
- )
- } else {
- RecentTransactionsContent(
- transactions = uiState.transactions,
- isPaginating = isPaginating,
- loadMore = loadMore,
- canPaginate = uiState.canPaginate,
- )
+ is RecentTransactionState.Success -> {
+ if (uiState.transactions.isEmpty()) {
+ EmptyDataView(
+ icon = R.drawable.ic_error_black_24dp,
+ error = R.string.no_transaction,
+ modifier = Modifier.fillMaxSize(),
+ )
+ } else {
+ RecentTransactionsContent(
+ transactions = uiState.transactions,
+ isPaginating = isPaginating,
+ loadMore = loadMore,
+ canPaginate = uiState.canPaginate,
+ )
+ }
}
}
}
}
- if (pullRefreshState.isRefreshing) {
- LaunchedEffect(key1 = true) {
- onRefresh()
- }
- }
- LaunchedEffect(key1 = isRefreshing) {
- if (isRefreshing) {
- pullRefreshState.startRefresh()
- } else {
- pullRefreshState.endRefresh()
- }
- }
-
- PullToRefreshContainer(
- state = pullRefreshState,
- modifier = Modifier
- .padding(top = 24.dp)
- .align(Alignment.TopCenter),
- )
}
},
)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index c9410a860..4c6bd78de 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,37 +1,36 @@
[versions]
accompanistVersion = "0.34.0"
-activityVersion = "1.9.1"
-androidDesugarJdkLibs = "2.1.1"
-androidGradlePlugin = "8.5.2"
-androidTools = "31.5.2"
+activityVersion = "1.9.3"
+androidDesugarJdkLibs = "2.1.4"
+androidGradlePlugin = "8.7.0"
+androidTools = "31.7.0"
androidx-test-ext-junit = "1.2.1"
-androidxActivity = "1.9.1"
-androidxComposeBom = "2024.08.00"
+androidxActivity = "1.9.3"
+androidxComposeBom = "2024.12.01"
androidxComposeCompiler = "1.5.15"
androidxCoreSplashscreen = "1.0.1"
androidxEspresso = "3.6.1"
androidxHilt = "1.2.0"
-androidxLifecycle = "2.8.4"
+androidxLifecycle = "2.8.7"
androidxMetrics = "1.0.0-beta01"
-androidxNavigation = "2.8.0-rc01"
-androidxProfileinstaller = "1.3.1"
+androidxNavigation = "2.8.5"
+androidxProfileinstaller = "1.4.1"
androidxTestExt = "1.2.1"
androidxTestRules = "1.6.1"
androidxTestRunner = "1.6.2"
androidxTracing = "1.2.0"
androidxUiAutomator = "2.3.0"
-annotationVersion = "1.8.2"
+annotation = "1.9.1"
appcompatVersion = "1.7.0"
cameraCoreVersion = "1.3.4"
-cameraxVersion = "1.3.4"
-compose-material = "1.6.8"
+cameraxVersion = "1.4.1"
+compose-material = "1.7.6"
compose-plugin = "1.6.11"
-coreKtxVersion = "1.13.1"
-dbflowVersion = "4.2.4"
+coreKtx = "1.15.0"
dependencyGuard = "0.5.0"
-detekt = "1.23.5"
+detekt = "1.23.7"
easycropVersion = "0.1.1"
-firebaseBom = "33.2.0"
+firebaseBom = "33.7.0"
firebaseCrashlyticsPlugin = "3.0.2"
firebasePerfPlugin = "1.4.2"
gmsPlugin = "4.4.2"
@@ -39,23 +38,25 @@ googleAppCodeScanner = "17.3.0"
googleMaps = "4.4.1"
googleOss = "17.1.0"
googleOssPlugin = "0.10.6"
-hilt = "2.52"
+gsonVersion = "2.10.1"
+hilt = "2.54"
+hiltExt = "1.2.0"
jacoco = "0.8.7"
junitVersion = "4.13.2"
-koin = "3.6.0-Beta4"
-koinComposeMultiplatform = "1.2.0-Beta4"
-kotlin = "2.0.20"
-kotlinxCoroutinesAndroidVersion = "1.8.1"
-kotlinxCoroutinesTestVersion = "1.8.1"
-kotlinxImmutable = "0.3.7"
-ksp = "2.0.20-1.0.24"
+koin = "4.0.0"
+koinComposeMultiplatform = "4.0.0"
+kotlin = "2.1.0"
+kotlinxCoroutines = "1.10.1"
+kotlinxImmutable = "0.3.8"
+kotlinxSerializationJson = "1.8.0-RC"
+ksp = "2.1.0-1.0.29"
ktlint = "12.1.1"
libphonenumberAndroidVersion = "8.13.35"
lifecycleExtensionsVersion = "2.2.0"
-lifecycleVersion = "2.8.4"
-material3 = "1.2.1"
-mockitoAndroidVersion = "5.4.0"
-mockitoCoreVersion = "5.4.0"
+lifecycleLivedataKtxVersion = "2.8.7"
+lifecycleVersion = "2.8.7"
+material3 = "1.3.1"
+mockitoCoreVersion = "5.6.0"
multidexVersion = "2.0.1"
okHttp3Version = "4.12.0"
playServicesCodeScanner = "16.1.0"
@@ -63,12 +64,15 @@ playServicesVersion = "19.0.0"
retrofitVersion = "2.11.0"
roborazzi = "1.26.0"
room = "2.6.1"
+roomKtxVersion = "2.6.1"
+roomRuntimeVersion = "2.6.1"
+roomTestingVersion = "2.6.1"
rxandroidVersion = "2.1.1"
rxjavaVersion = "2.2.21"
secrets = "2.0.1"
slackComposeLint = "1.3.1"
-spotlessVersion = "6.23.3"
-truth = "1.4.2"
+spotlessVersion = "6.25.0"
+truth = "1.4.4"
turbineVersion = "1.1.0"
twitter-detekt-compose = "0.0.26"
versionCatalogLinterVersion = "1.0.3"
@@ -82,7 +86,7 @@ android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", ver
android-tools-common = { group = "com.android.tools", name = "common", version.ref = "androidTools" }
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "androidxActivity" }
androidx-activity-ktx = { group = "androidx.activity", name = "activity-ktx", version.ref = "activityVersion" }
-androidx-annotation = { group = "androidx.annotation", name = "annotation", version.ref = "annotationVersion" }
+androidx-annotation = { group = "androidx.annotation", name = "annotation", version.ref = "annotation" }
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompatVersion" }
androidx-camera-camera2 = { group = "androidx.camera", name = "camera-camera2", version.ref = "cameraxVersion" }
androidx-camera-core = { group = "androidx.camera", name = "camera-core", version.ref = "cameraxVersion" }
@@ -103,11 +107,12 @@ androidx-compose-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-
androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
androidx-compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
androidx-compose-ui-util = { group = "androidx.compose.ui", name = "ui-util" }
-androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtxVersion" }
+androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
androidx-core-splashscreen = { group = "androidx.core", name = "core-splashscreen", version.ref = "androidxCoreSplashscreen" }
androidx-hilt-navigation-compose = { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "androidxHilt" }
androidx-lifecycle-extensions = { group = "androidx.lifecycle", name = "lifecycle-extensions", version.ref = "lifecycleExtensionsVersion" }
androidx-lifecycle-ktx = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version.ref = "lifecycleVersion" }
+androidx-lifecycle-livedata-ktx = { group = "androidx.lifecycle", name = "lifecycle-livedata-ktx", version.ref = "lifecycleLivedataKtxVersion" }
androidx-lifecycle-runtimeCompose = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "androidxLifecycle" }
androidx-lifecycle-runtimeTesting = { group = "androidx.lifecycle", name = "lifecycle-runtime-testing", version.ref = "androidxLifecycle" }
androidx-lifecycle-viewModelCompose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "androidxLifecycle" }
@@ -116,6 +121,10 @@ androidx-multidex = { group = "androidx.multidex", name = "multidex", version.re
androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "androidxNavigation" }
androidx-navigation-testing = { group = "androidx.navigation", name = "navigation-testing", version.ref = "androidxNavigation" }
androidx-profileinstaller = { group = "androidx.profileinstaller", name = "profileinstaller", version.ref = "androidxProfileinstaller" }
+androidx-room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" }
+androidx-room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "roomKtxVersion" }
+androidx-room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = "roomRuntimeVersion" }
+androidx-room-testing = { group = "androidx.room", name = "room-testing", version.ref = "roomTestingVersion" }
androidx-test-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "androidxEspresso" }
androidx-test-ext = { group = "androidx.test.ext", name = "junit-ktx", version.ref = "androidxTestExt" }
androidx-test-ext-junit = { group = "androidx.test.ext", name = "junit", version.ref = "androidx-test-ext-junit" }
@@ -124,9 +133,6 @@ androidx-test-runner = { group = "androidx.test", name = "runner", version.ref =
androidx-test-uiautomator = { group = "androidx.test.uiautomator", name = "uiautomator", version.ref = "androidxUiAutomator" }
androidx-tracing-ktx = { group = "androidx.tracing", name = "tracing-ktx", version.ref = "androidxTracing" }
compose-gradlePlugin = { group = "org.jetbrains.kotlin", name = "compose-compiler-gradle-plugin", version.ref = "kotlin" }
-dbflow = { group = "com.github.Raizlabs.DBFlow", name = "dbflow", version.ref = "dbflowVersion" }
-dbflow-core = { group = "com.github.Raizlabs.DBFlow", name = "dbflow-core", version.ref = "dbflowVersion" }
-dbflow-processor = { group = "com.github.Raizlabs.DBFlow", name = "dbflow-processor", version.ref = "dbflowVersion" }
detekt-formatting = { group = "io.gitlab.arturbosch.detekt", name = "detekt-formatting", version.ref = "detekt" }
detekt-gradlePlugin = { group = "io.gitlab.arturbosch.detekt", name = "detekt-gradle-plugin", version.ref = "detekt" }
easycrop-compose = { group = "io.github.mr0xf00", name = "easycrop", version.ref = "easycropVersion" }
@@ -142,10 +148,15 @@ google-map-compose = { group = "com.google.maps.android", name = "maps-compose",
google-oss-licenses = { group = "com.google.android.gms", name = "play-services-oss-licenses", version.ref = "googleOss" }
google-oss-licenses-plugin = { group = "com.google.android.gms", name = "oss-licenses-plugin", version.ref = "googleOssPlugin" }
google-play-services-code-scanner = { group = "com.google.android.gms", name = "play-services-code-scanner", version.ref = "playServicesCodeScanner" }
+gson = { group = "com.google.code.gson", name = "gson", version.ref = "gsonVersion" }
hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" }
hilt-android-testing = { group = "com.google.dagger", name = "hilt-android-testing", version.ref = "hilt" }
-hilt-compiler = { group = "com.google.dagger", name = "hilt-android-compiler", version.ref = "hilt" }
+hilt-compiler = { group = "com.google.dagger", name = "hilt-compiler", version.ref = "hilt" }
+hilt-core = { group = "com.google.dagger", name = "hilt-core", version.ref = "hilt" }
+hilt-ext-compiler = { group = "androidx.hilt", name = "hilt-compiler", version.ref = "hiltExt" }
+hilt-ext-work = { group = "androidx.hilt", name = "hilt-work", version.ref = "hiltExt" }
jetbrains-kotlin-jdk7 = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-jdk7", version.ref = "kotlin" }
+jetbrains-kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" }
junit = { group = "junit", name = "junit", version.ref = "junitVersion" }
koin-android = { group = "io.insert-koin", name = "koin-android", version.ref = "koin" }
koin-androidx-compose = { group = "io.insert-koin", name = "koin-androidx-compose", version.ref = "koin" }
@@ -155,15 +166,16 @@ koin-core = { group = "io.insert-koin", name = "koin-core", version.ref = "koin"
kotlin-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" }
kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-jdk8", version.ref = "kotlin" }
kotlinx-collections-immutable = { group = "org.jetbrains.kotlinx", name = "kotlinx-collections-immutable", version.ref = "kotlinxImmutable" }
-kotlinx-coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "kotlinxCoroutinesAndroidVersion" }
-kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlinxCoroutinesTestVersion" }
+kotlinx-coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "kotlinxCoroutines" }
+kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinxCoroutines" }
+kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlinxCoroutines" }
+kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" }
ksp-gradlePlugin = { group = "com.google.devtools.ksp", name = "com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" }
ktlint-gradlePlugin = { group = "org.jlleitschuh.gradle", name = "ktlint-gradle", version.ref = "ktlint" }
libphonenumber-android = { group = "io.michaelrocks", name = "libphonenumber-android", version.ref = "libphonenumberAndroidVersion" }
lint-api = { group = "com.android.tools.lint", name = "lint-api", version.ref = "androidTools" }
lint-checks = { group = "com.android.tools.lint", name = "lint-checks", version.ref = "androidTools" }
lint-tests = { group = "com.android.tools.lint", name = "lint-tests", version.ref = "androidTools" }
-mockito-android = { group = "org.mockito", name = "mockito-android", version.ref = "mockitoAndroidVersion" }
mockito-core = { group = "org.mockito", name = "mockito-core", version.ref = "mockitoCoreVersion" }
play-services-maps = { group = "com.google.android.gms", name = "play-services-maps", version.ref = "playServicesVersion" }
reactivex-rxjava2 = { group = "io.reactivex.rxjava2", name = "rxjava", version.ref = "rxjavaVersion" }
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index a9a478406..f5e988661 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
diff --git a/libs/country-code-picker/build.gradle.kts b/libs/country-code-picker/build.gradle.kts
index f6b28408e..01c6819f6 100644
--- a/libs/country-code-picker/build.gradle.kts
+++ b/libs/country-code-picker/build.gradle.kts
@@ -14,6 +14,10 @@ plugins {
android {
namespace = "com.mifos.library.countrycodepicker"
+
+ lint {
+ disable += "SuspiciousModifierThen"
+ }
}
dependencies {
diff --git a/libs/country-code-picker/src/main/kotlin/com/mifos/library/countrycodepicker/CountryCodePicker.kt b/libs/country-code-picker/src/main/kotlin/com/mifos/library/countrycodepicker/CountryCodePicker.kt
index 133b7dd9a..58e9718af 100644
--- a/libs/country-code-picker/src/main/kotlin/com/mifos/library/countrycodepicker/CountryCodePicker.kt
+++ b/libs/country-code-picker/src/main/kotlin/com/mifos/library/countrycodepicker/CountryCodePicker.kt
@@ -262,7 +262,7 @@ fun CountryCodePicker(
visualTransformation = phoneNumberTransformation,
keyboardOptions = keyboardOptions ?: KeyboardOptions.Default.copy(
keyboardType = KeyboardType.Phone,
- autoCorrect = true,
+ autoCorrectEnabled = true,
imeAction = ImeAction.Done,
),
keyboardActions = keyboardActions ?: KeyboardActions(
diff --git a/libs/pullrefresh/src/main/kotlin/com.mifos.library.pullrefresh/PullRefresh.kt b/libs/pullrefresh/src/main/kotlin/com.mifos.library.pullrefresh/PullRefresh.kt
index 0f015468a..15544799c 100644
--- a/libs/pullrefresh/src/main/kotlin/com.mifos.library.pullrefresh/PullRefresh.kt
+++ b/libs/pullrefresh/src/main/kotlin/com.mifos.library.pullrefresh/PullRefresh.kt
@@ -7,7 +7,7 @@
*
* See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
*/
-@file:Suppress("InvalidPackageDeclaration")
+@file:Suppress("InvalidPackageDeclaration", "DEPRECATION")
package com.mifos.library.pullrefresh
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 52e91b495..5f0da72bb 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -46,6 +46,7 @@ include(":core:model")
include(":core:common")
include(":core:data")
include(":core:network")
+include(":core:database")
include(":core:datastore")
include(":core:qrcode")
include(":core:testing")