From d98b71f7e8803155d5da62a0c4efff2ec9d4dd3e Mon Sep 17 00:00:00 2001 From: nagarjuna Date: Tue, 16 Jun 2026 09:23:08 +0530 Subject: [PATCH 1/9] feat: home widget for android --- cmp-android/build.gradle.kts | 9 + cmp-android/src/main/AndroidManifest.xml | 33 ++ .../main/kotlin/org/mifospay/MainActivity.kt | 7 + .../main/kotlin/org/mifospay/MifosPayApp.kt | 28 +- .../mifospay/widget/AndroidWidgetModule.kt | 22 + .../widget/AndroidWidgetSyncService.kt | 36 ++ .../mifospay/widget/FinanceGlanceWidget.kt | 482 ++++++++++++++++++ .../mifospay/widget/FinanceWidgetReceiver.kt | 26 + .../org/mifospay/widget/WidgetDeeplink.kt | 21 + .../mifospay/widget/WidgetRefreshWorker.kt | 67 +++ .../kotlin/org/mifospay/widget/ui/Actions.kt | 42 ++ .../org/mifospay/widget/ui/WidgetAction.kt | 13 + cmp-android/src/main/res/values/strings.xml | 2 + .../src/main/res/xml/finance_widget_info.xml | 17 + .../mifospay/shared/MifosPayApp.android.kt | 35 ++ .../PendingDeeplinkStore.android.kt | 30 ++ .../consumePendingDeepLink.android.kt | 17 + .../kotlin/org/mifospay/shared/MifosPayApp.kt | 8 + .../org/mifospay/shared/MifosPayViewModel.kt | 4 + .../org/mifospay/shared/di/KoinModules.kt | 5 + .../shared/navigation/PendingDeeplinkStore.kt | 32 ++ .../shared/navigation/RootNavGraph.kt | 7 + .../navigation/consumePendingDeepLink.kt | 27 + .../shared/widget/WidgetDataProvider.kt | 12 + .../shared/widget/WidgetDataProviderImpl.kt | 39 ++ .../org/mifospay/shared/widget/WidgetState.kt | 21 + .../org/mifospay/shared/MifosPayApp.ios.kt | 8 + .../navigation/PendingDeeplinkStore.ios.kt | 13 + .../navigation/consumePendingDeepLink.ios.kt | 7 + .../mifospay/core/data/di/RepositoryModule.kt | 20 + .../mifospay/core/data/mapper/WidgetMapper.kt | 49 ++ .../repository/WidgetManagerRepository.kt | 15 + .../core/data/repository/WidgetRepository.kt | 27 + .../WidgetManagerRepositoryImpl.kt | 35 ++ .../repositoryImpl/WidgetRepositoryImpl.kt | 70 +++ .../core/data/util/WidgetSyncService.kt | 32 ++ .../datastore/UserPreferencesDataSource.kt | 10 + .../datastore/WidgetPrefernceDataSource.kt | 69 +++ .../core/datastore/di/PreferenceModule.kt | 9 + .../org/mifospay/core/domain/LoginUseCase.kt | 3 + .../mifospay/core/domain/di/DomainModule.kt | 1 + .../mifospay/core/model/widget/WidgetData.kt | 40 ++ .../feature/home/navigation/HomeNavigation.kt | 9 +- .../make/transfer/MakeTransferViewModel.kt | 4 +- .../interbank/InterbankTransferViewModel.kt | 7 + .../confirm/TransferConfirmViewModel.kt | 3 + gradle/libs.versions.toml | 2 + 47 files changed, 1471 insertions(+), 4 deletions(-) create mode 100644 cmp-android/src/main/kotlin/org/mifospay/widget/AndroidWidgetModule.kt create mode 100644 cmp-android/src/main/kotlin/org/mifospay/widget/AndroidWidgetSyncService.kt create mode 100644 cmp-android/src/main/kotlin/org/mifospay/widget/FinanceGlanceWidget.kt create mode 100644 cmp-android/src/main/kotlin/org/mifospay/widget/FinanceWidgetReceiver.kt create mode 100644 cmp-android/src/main/kotlin/org/mifospay/widget/WidgetDeeplink.kt create mode 100644 cmp-android/src/main/kotlin/org/mifospay/widget/WidgetRefreshWorker.kt create mode 100644 cmp-android/src/main/kotlin/org/mifospay/widget/ui/Actions.kt create mode 100644 cmp-android/src/main/kotlin/org/mifospay/widget/ui/WidgetAction.kt create mode 100644 cmp-android/src/main/res/xml/finance_widget_info.xml create mode 100644 cmp-shared/src/androidMain/kotlin/org/mifospay/shared/MifosPayApp.android.kt create mode 100644 cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.android.kt create mode 100644 cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.android.kt create mode 100644 cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.kt create mode 100644 cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.kt create mode 100644 cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetDataProvider.kt create mode 100644 cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetDataProviderImpl.kt create mode 100644 cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetState.kt create mode 100644 cmp-shared/src/iosMain/kotlin/org/mifospay/shared/MifosPayApp.ios.kt create mode 100644 cmp-shared/src/iosMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.ios.kt create mode 100644 cmp-shared/src/iosMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.ios.kt create mode 100644 core/data/src/commonMain/kotlin/org/mifospay/core/data/mapper/WidgetMapper.kt create mode 100644 core/data/src/commonMain/kotlin/org/mifospay/core/data/repository/WidgetManagerRepository.kt create mode 100644 core/data/src/commonMain/kotlin/org/mifospay/core/data/repository/WidgetRepository.kt create mode 100644 core/data/src/commonMain/kotlin/org/mifospay/core/data/repositoryImpl/WidgetManagerRepositoryImpl.kt create mode 100644 core/data/src/commonMain/kotlin/org/mifospay/core/data/repositoryImpl/WidgetRepositoryImpl.kt create mode 100644 core/data/src/commonMain/kotlin/org/mifospay/core/data/util/WidgetSyncService.kt create mode 100644 core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/WidgetPrefernceDataSource.kt create mode 100644 core/model/src/commonMain/kotlin/org/mifospay/core/model/widget/WidgetData.kt diff --git a/cmp-android/build.gradle.kts b/cmp-android/build.gradle.kts index 9bbfaff38..e6892ebd0 100644 --- a/cmp-android/build.gradle.kts +++ b/cmp-android/build.gradle.kts @@ -80,6 +80,7 @@ android { } dependencies { + implementation(libs.androidx.runtime) implementation(projects.cmpShared) implementation(projects.core.data) implementation(projects.core.ui) @@ -128,6 +129,14 @@ dependencies { testImplementation(kotlin("test")) testImplementation(libs.koin.test) testImplementation(libs.koin.test.junit4) + + implementation("androidx.glance:glance-appwidget:1.1.0") + implementation("androidx.glance:glance-material3:1.1.0") + + implementation("androidx.work:work-runtime-ktx:2.9.1") + implementation("io.insert-koin:koin-android:3.5.6") + implementation("io.insert-koin:koin-androidx-workmanager:3.5.6") + } dependencyGuard { diff --git a/cmp-android/src/main/AndroidManifest.xml b/cmp-android/src/main/AndroidManifest.xml index f773d561e..3346cf9f4 100644 --- a/cmp-android/src/main/AndroidManifest.xml +++ b/cmp-android/src/main/AndroidManifest.xml @@ -51,6 +51,14 @@ + + + + + + + + + + + + + + + + + + + + + + () + .build() + ) + restoreSavedLanguage() } + override val workManagerConfiguration: Configuration + get() = Configuration.Builder() + .setWorkerFactory(KoinWorkerFactory()) + .build() + private fun restoreSavedLanguage() { runBlocking { val language = userDataRepository.language.first() diff --git a/cmp-android/src/main/kotlin/org/mifospay/widget/AndroidWidgetModule.kt b/cmp-android/src/main/kotlin/org/mifospay/widget/AndroidWidgetModule.kt new file mode 100644 index 000000000..f8828b265 --- /dev/null +++ b/cmp-android/src/main/kotlin/org/mifospay/widget/AndroidWidgetModule.kt @@ -0,0 +1,22 @@ +package org.mifospay.widget + +import org.koin.android.ext.koin.androidContext +import org.koin.dsl.module +import org.mifospay.core.data.util.WidgetSyncService + +/** + * Android-only Koin module. + * + * Binds [WidgetSyncService] (interface in :core:data) to its Android + * implementation [AndroidWidgetSyncService]. + * + * Loaded alongside [org.mifospay.shared.di.KoinModules.allModules] in + * Application.onCreate so the `:core:domain` use cases that depend on + * [WidgetSyncService] can resolve the binding. + */ +val androidWidgetModule = module { + + single { + AndroidWidgetSyncService(context = get(), widgetDataProvider = get()) + } +} diff --git a/cmp-android/src/main/kotlin/org/mifospay/widget/AndroidWidgetSyncService.kt b/cmp-android/src/main/kotlin/org/mifospay/widget/AndroidWidgetSyncService.kt new file mode 100644 index 000000000..9d013ad9e --- /dev/null +++ b/cmp-android/src/main/kotlin/org/mifospay/widget/AndroidWidgetSyncService.kt @@ -0,0 +1,36 @@ +package org.mifospay.widget + +import android.content.Context +import androidx.glance.appwidget.GlanceAppWidgetManager +import androidx.glance.appwidget.updateAll +import org.mifospay.core.data.util.WidgetSyncService +import org.mifospay.core.model.widget.WidgetData +import org.mifospay.shared.widget.WidgetDataProvider + +class AndroidWidgetSyncService( + private val context: Context, + private val widgetDataProvider: WidgetDataProvider, +) : WidgetSyncService { + + override suspend fun syncToWidget(data: WidgetData) { + FinanceGlanceWidget.updateAll(context) + } + + override suspend fun refreshWidget() { + // Invalidate first so the flow re-fetches fresh balance, + // then trigger Glance to recompose. + widgetDataProvider.invalidate() + + val manager = GlanceAppWidgetManager(context) + manager.getGlanceIds(FinanceGlanceWidget::class.java) + .forEach { id -> FinanceGlanceWidget.update(context, id) } + } + + override fun schedulePeriodicSync() { + WidgetRefreshWorker.schedule(context) + } + + override fun cancelPeriodicSync() { + WidgetRefreshWorker.cancel(context) + } +} \ No newline at end of file diff --git a/cmp-android/src/main/kotlin/org/mifospay/widget/FinanceGlanceWidget.kt b/cmp-android/src/main/kotlin/org/mifospay/widget/FinanceGlanceWidget.kt new file mode 100644 index 000000000..4d4114562 --- /dev/null +++ b/cmp-android/src/main/kotlin/org/mifospay/widget/FinanceGlanceWidget.kt @@ -0,0 +1,482 @@ +/* + * 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/. + */ +package org.mifospay.widget + +import android.annotation.SuppressLint +import android.content.Context +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.glance.* +import androidx.glance.action.Action +import androidx.glance.action.clickable +import androidx.glance.appwidget.GlanceAppWidget +import androidx.glance.appwidget.SizeMode +import androidx.glance.appwidget.action.actionRunCallback +import androidx.glance.appwidget.cornerRadius +import androidx.glance.appwidget.provideContent +import androidx.glance.color.ColorProvider +import androidx.glance.layout.* +import androidx.glance.text.* +import androidx.glance.unit.ColorProvider +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject +import org.mifospay.core.common.CurrencyFormatter +import org.mifospay.core.designsystem.theme.darkKptColorScheme +import org.mifospay.core.designsystem.theme.lightKptColorScheme +import org.mifospay.core.model.widget.WidgetData +import org.mifospay.shared.widget.WidgetDataProvider +import org.mifospay.shared.widget.WidgetState +import org.mifospay.widget.ui.AddExpenseAction +import org.mifospay.widget.ui.AddIncomeAction +import org.mifospay.widget.ui.OpenDashboardAction + +// ─── KptTheme-aligned ColorProviders ────────────────────────────────────── +// Uses the same lightKptColorScheme / darkKptColorScheme that MifosTheme uses, +// so the widget always stays in sync with the app's colour palette. + +private val L = lightKptColorScheme +private val D = darkKptColorScheme + +private val cpPrimary = ColorProvider(day = L.primary, night = D.primary) +private val cpOnPrimary = ColorProvider(day = L.onPrimary, night = D.onPrimary) +private val cpSurface = ColorProvider(day = L.surface, night = D.surface) +private val cpOnSurface = ColorProvider(day = L.onSurface, night = D.onSurface) +private val cpOnSurfaceVariant = ColorProvider(day = L.onSurfaceVariant, night = D.onSurfaceVariant) +private val cpContainer = ColorProvider(day = L.surfaceContainerHigh, night = D.surfaceContainerHigh) +private val cpOutlineVariant = ColorProvider(day = L.outlineVariant, night = D.outlineVariant) +private val cpPrimaryContainer = ColorProvider(day = L.primaryContainer, night = D.primaryContainer) +private val cpOnPrimaryContainer = ColorProvider(day = L.onPrimaryContainer, night = D.onPrimaryContainer) +private val cpErrorContainer = ColorProvider(day = L.errorContainer, night = D.errorContainer) +private val cpOnErrorContainer = ColorProvider(day = L.onErrorContainer, night = D.onErrorContainer) + +// ────────────────────────────────────────────────────────────────────────── + +object FinanceGlanceWidget : GlanceAppWidget(), KoinComponent { + + private val widgetDataProvider: WidgetDataProvider by inject() + + override val sizeMode = SizeMode.Exact + + override suspend fun provideGlance(context: Context, id: GlanceId) { + provideContent { + val state by widgetDataProvider.widgetStateFlow + .collectAsState(initial = WidgetState.Unauthenticated) + + val width = LocalSize.current.width + when (state) { + is WidgetState.Unauthenticated -> UnauthenticatedWidget() + is WidgetState.Error -> ErrorWidget() + is WidgetState.Authenticated -> { + val data = (state as WidgetState.Authenticated).data + if (width >= 250.dp) FullWidget(data) else CompactWidget(data) + } + } + } + } +} + +@SuppressLint("RestrictedApi") +@Composable +private fun UnauthenticatedWidget() { + Box( + modifier = GlanceModifier + .fillMaxSize() + .background(cpSurface) + .cornerRadius(24.dp) + .padding(20.dp), + ) { + Column( + modifier = GlanceModifier.fillMaxSize(), + ) { + + Text( + text = "MifosPay", + style = TextStyle( + color = cpPrimary, + fontSize = 18.sp, + fontWeight = FontWeight.Bold, + ), + ) + + Spacer(GlanceModifier.height(2.dp)) + + Text( + text = "Digital Wallet", + style = TextStyle( + color = cpOnSurfaceVariant, + fontSize = 10.sp, + ), + ) + + Spacer(GlanceModifier.height(20.dp)) + + Text( + text = "Welcome Back", + style = TextStyle( + color = cpOnSurface, + fontSize = 20.sp, + fontWeight = FontWeight.Bold, + ), + ) + + Spacer(GlanceModifier.height(4.dp)) + + Text( + text = "Sign in to view balances and manage your wallet.", + style = TextStyle( + color = cpOnSurfaceVariant, + fontSize = 11.sp, + ), + ) + + Spacer(GlanceModifier.defaultWeight()) + + Box( + modifier = GlanceModifier + .fillMaxWidth() + .height(44.dp) + .background(cpPrimary) + .cornerRadius(14.dp) + .clickable(actionRunCallback()), + contentAlignment = Alignment.Center, + ) { + Text( + text = "Sign In", + style = TextStyle( + color = cpOnPrimary, + fontSize = 13.sp, + fontWeight = FontWeight.Bold, + ), + ) + } + } + } +} +@SuppressLint("RestrictedApi") +@Composable +private fun ErrorWidget() { + Box( + modifier = GlanceModifier + .fillMaxSize() + .background(cpSurface) + .cornerRadius(24.dp) + .padding(20.dp), + ) { + Column(modifier = GlanceModifier.fillMaxSize()) { + Text( + text = "MifosPay", + style = TextStyle(color = cpPrimary, fontSize = 18.sp, fontWeight = FontWeight.Bold), + ) + Spacer(GlanceModifier.height(2.dp)) + Text( + text = "Digital Wallet", + style = TextStyle(color = cpOnSurfaceVariant, fontSize = 10.sp), + ) + Spacer(GlanceModifier.height(20.dp)) + Text( + text = "Failed to fetch balance", + style = TextStyle(color = cpOnSurface, fontSize = 16.sp, fontWeight = FontWeight.Bold), + ) + Spacer(GlanceModifier.height(4.dp)) + Text( + text = "Tap to retry or open the app.", + style = TextStyle(color = cpOnSurfaceVariant, fontSize = 11.sp), + ) + Spacer(GlanceModifier.defaultWeight()) + Box( + modifier = GlanceModifier + .fillMaxWidth() + .height(44.dp) + .background(cpPrimary) + .cornerRadius(14.dp) + .clickable(actionRunCallback()), + contentAlignment = Alignment.Center, + ) { + Text( + text = "Open App", + style = TextStyle(color = cpOnPrimary, fontSize = 13.sp, fontWeight = FontWeight.Bold), + ) + } + } + } +} + +@SuppressLint("RestrictedApi") +@Composable +private fun FullWidget(data: WidgetData) { + Box( + modifier = GlanceModifier + .fillMaxSize() + .background(cpSurface) + .cornerRadius(24.dp) + .clickable(actionRunCallback()), + ) { + Column( + modifier = GlanceModifier + .fillMaxSize() + .padding(horizontal = 18.dp, vertical = 14.dp), + ) { + + // ───────────── Header ───────────── + + Row( + modifier = GlanceModifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + ) { + + Column( + modifier = GlanceModifier.defaultWeight(), + ) { + + Text( + text = "MifosPay", + style = TextStyle( + color = cpPrimary, + fontSize = 15.sp, + fontWeight = FontWeight.Bold, + ), + ) + + Text( + text = "Digital Wallet", + style = TextStyle( + color = cpOnSurfaceVariant, + fontSize = 10.sp, + ), + ) + } + + if (data.accountNumber.isNotBlank()) { + Box( + modifier = GlanceModifier + .background(cpPrimaryContainer) + .cornerRadius(100.dp) + .padding(horizontal = 10.dp, vertical = 4.dp), + ) { + Text( + text = "••${data.accountNumber.takeLast(4)}", + style = TextStyle( + color = cpOnPrimaryContainer, + fontSize = 10.sp, + fontWeight = FontWeight.Medium, + ), + ) + } + } + } + + Spacer(GlanceModifier.height(14.dp)) + + // ───────────── Balance ───────────── + + Text( + text = "Available Balance", + style = TextStyle( + color = cpOnSurfaceVariant, + fontSize = 11.sp, + ), + ) + + Spacer(GlanceModifier.height(4.dp)) + + Row( + verticalAlignment = Alignment.Bottom, + ) { + + Text( + text = data.currency, + style = TextStyle( + color = cpPrimary, + fontSize = 13.sp, + fontWeight = FontWeight.Bold, + ), + ) + + Spacer(GlanceModifier.width(6.dp)) + + Text( + text = CurrencyFormatter.format(data.currentBalance, 2), + style = TextStyle( + color = cpOnSurface, + fontSize = 30.sp, + fontWeight = FontWeight.Bold, + ), + ) + } + + Spacer(GlanceModifier.height(4.dp)) + + Text( + text = "Wallet Active", + style = TextStyle( + color = cpPrimary, + fontSize = 10.sp, + fontWeight = FontWeight.Medium, + ), + ) + + Spacer(GlanceModifier.height(14.dp)) + + // ───────────── Actions ───────────── + + Row( + modifier = GlanceModifier.fillMaxWidth(), + ) { + + PremiumActionButton( + label = "+ Income", + fg = cpOnPrimaryContainer, + bg = cpPrimaryContainer, + action = actionRunCallback(), + modifier = GlanceModifier.defaultWeight(), + ) + + Spacer(GlanceModifier.width(8.dp)) + + PremiumActionButton( + label = "− Expense", + fg = cpOnErrorContainer, + bg = cpErrorContainer, + action = actionRunCallback(), + modifier = GlanceModifier.defaultWeight(), + ) + } + } + } +} + +@SuppressLint("RestrictedApi") +@Composable +private fun PremiumActionButton( + label: String, + fg: ColorProvider, + bg: ColorProvider, + action: Action, + modifier: GlanceModifier = GlanceModifier, +) { + Box( + modifier = modifier + .height(42.dp) + .background(bg) + .cornerRadius(14.dp) + .clickable(action), + contentAlignment = Alignment.Center, + ) { + Text( + text = label, + style = TextStyle( + color = fg, + fontSize = 12.sp, + fontWeight = FontWeight.Bold, + ), + ) + } +} +@SuppressLint("RestrictedApi") +@Composable +private fun CompactWidget(data: WidgetData) { + Box( + modifier = GlanceModifier + .fillMaxSize() + .background(cpSurface) + .cornerRadius(24.dp) + .clickable(actionRunCallback()) + .padding(14.dp), + ) { + Column( + modifier = GlanceModifier.fillMaxSize(), + ) { + + Row( + modifier = GlanceModifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + ) { + + Text( + text = "MifosPay", + style = TextStyle( + color = cpPrimary, + fontSize = 12.sp, + fontWeight = FontWeight.Bold, + ), + modifier = GlanceModifier.defaultWeight(), + ) + + if (data.accountNumber.isNotBlank()) { + Box( + modifier = GlanceModifier + .background(cpPrimaryContainer) + .cornerRadius(100.dp) + .padding(horizontal = 8.dp, vertical = 3.dp), + ) { + Text( + text = "••${data.accountNumber.takeLast(4)}", + style = TextStyle( + color = cpOnPrimaryContainer, + fontSize = 8.sp, + fontWeight = FontWeight.Medium, + ), + ) + } + } + } + + Spacer(GlanceModifier.height(10.dp)) + + Text( + text = "Available Balance", + style = TextStyle( + color = cpOnSurfaceVariant, + fontSize = 9.sp, + ), + ) + + Spacer(GlanceModifier.height(2.dp)) + + Text( + text = data.currency, + style = TextStyle( + color = cpPrimary, + fontSize = 10.sp, + fontWeight = FontWeight.Bold, + ), + ) + + Spacer(GlanceModifier.height(2.dp)) + + Text( + text = CurrencyFormatter.format(data.currentBalance, 2), + style = TextStyle( + color = cpOnSurface, + fontSize = 22.sp, + fontWeight = FontWeight.Bold, + ), + ) + } + } +} + +@Composable +private fun ChipButton( + label: String, + fg: ColorProvider, + bg: ColorProvider, + action: Action, + modifier: GlanceModifier = GlanceModifier, +) { + Box( + modifier = modifier.height(34.dp).background(bg).cornerRadius(10.dp).clickable(action), + contentAlignment = Alignment.Center, + ) { + Text(text = label, style = TextStyle(color = fg, fontSize = 12.sp, fontWeight = FontWeight.Medium)) + } +} + diff --git a/cmp-android/src/main/kotlin/org/mifospay/widget/FinanceWidgetReceiver.kt b/cmp-android/src/main/kotlin/org/mifospay/widget/FinanceWidgetReceiver.kt new file mode 100644 index 000000000..af7094ff8 --- /dev/null +++ b/cmp-android/src/main/kotlin/org/mifospay/widget/FinanceWidgetReceiver.kt @@ -0,0 +1,26 @@ +package org.mifospay.widget + +import android.content.Context +import androidx.glance.appwidget.GlanceAppWidgetReceiver +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject +import org.mifospay.core.data.repository.WidgetManagerRepository + +class FinanceWidgetReceiver : + GlanceAppWidgetReceiver(), + KoinComponent { + + override val glanceAppWidget = FinanceGlanceWidget + + private val widgetManager: WidgetManagerRepository by inject() + + override fun onEnabled(context: Context) { + super.onEnabled(context) + widgetManager.schedule() + } + + override fun onDisabled(context: Context) { + super.onDisabled(context) + widgetManager.cancel() + } +} \ No newline at end of file diff --git a/cmp-android/src/main/kotlin/org/mifospay/widget/WidgetDeeplink.kt b/cmp-android/src/main/kotlin/org/mifospay/widget/WidgetDeeplink.kt new file mode 100644 index 000000000..6d9732343 --- /dev/null +++ b/cmp-android/src/main/kotlin/org/mifospay/widget/WidgetDeeplink.kt @@ -0,0 +1,21 @@ +package org.mifospay.widget + + +/** + * Single source of truth for all widget deep-link URIs. + * + * Referenced by: + * • [org.mifospay.widget.ui.WidgetAction] — fires the Intent + * • Your NavHost composable — registers navDeepLink { uriPattern = ... } + * • AndroidManifest.xml intent-filter — scheme + host only (no query) + * + * Lives in :cmp-shared so the NavHost (which is also in cmp-shared or + * cmp-android) can import it without a circular dependency. + */ +object WidgetDeepLink { + const val SCHEME = "mifospay" + + const val URI_ADD_INCOME = "$SCHEME://add" + const val URI_ADD_EXPENSE = "$SCHEME://expense" + const val URI_DASHBOARD = "$SCHEME://dashboard" +} \ No newline at end of file diff --git a/cmp-android/src/main/kotlin/org/mifospay/widget/WidgetRefreshWorker.kt b/cmp-android/src/main/kotlin/org/mifospay/widget/WidgetRefreshWorker.kt new file mode 100644 index 000000000..04f0800d9 --- /dev/null +++ b/cmp-android/src/main/kotlin/org/mifospay/widget/WidgetRefreshWorker.kt @@ -0,0 +1,67 @@ +package org.mifospay.widget + +import android.content.Context +import androidx.work.* +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject +import org.mifospay.core.data.repository.WidgetManagerRepository +import java.util.concurrent.TimeUnit + +/** + * WorkManager background refresh worker. + * + * Imports from: + * • androidx.work.* (WorkManager) + * • org.koin.* (DI) + * • org.mifospay.shared.* (:cmp-shared — WidgetSyncCoordinator) + * + * Does NOT import from :core:domain. + */ +class WidgetRefreshWorker( + context: Context, + workerParams: WorkerParameters, +) : CoroutineWorker(context, workerParams), KoinComponent { + + // Injects from :cmp-shared — not from :core:domain + private val widgetManager: WidgetManagerRepository by inject() + + override suspend fun doWork(): Result { + return try { + + widgetManager.refresh() + + Result.success() + + } catch (e: Exception) { + + Result.retry() + } + } + companion object { + private const val WORK_NAME = "mifospay_widget_refresh_periodic" + private const val MAX_RETRIES = 3 + + fun schedule(context: Context) { + WorkManager.getInstance(context).enqueueUniquePeriodicWork( + WORK_NAME, + ExistingPeriodicWorkPolicy.KEEP, + PeriodicWorkRequestBuilder(15, TimeUnit.MINUTES) + .setConstraints( + Constraints.Builder() + .setRequiredNetworkType(NetworkType.CONNECTED) + .build(), + ) + .setBackoffCriteria( + BackoffPolicy.EXPONENTIAL, + WorkRequest.MIN_BACKOFF_MILLIS, + TimeUnit.MILLISECONDS, + ) + .build(), + ) + } + + fun cancel(context: Context) { + WorkManager.getInstance(context).cancelUniqueWork(WORK_NAME) + } + } +} diff --git a/cmp-android/src/main/kotlin/org/mifospay/widget/ui/Actions.kt b/cmp-android/src/main/kotlin/org/mifospay/widget/ui/Actions.kt new file mode 100644 index 000000000..6c6740b80 --- /dev/null +++ b/cmp-android/src/main/kotlin/org/mifospay/widget/ui/Actions.kt @@ -0,0 +1,42 @@ +package org.mifospay.widget.ui + +import android.content.Context +import android.content.Intent +import androidx.glance.GlanceId +import androidx.glance.action.ActionParameters +import androidx.glance.appwidget.action.ActionCallback +import androidx.core.net.toUri + +/** + * Glance [ActionCallback] implementations. + * Only imports: Glance + :core:model. Zero domain/data imports. + */ + +class AddIncomeAction : ActionCallback { + override suspend fun onAction(context: Context, glanceId: GlanceId, parameters: ActionParameters) { + context.launchWidgetAction(WidgetAction.ADD_INCOME) + } +} + +class AddExpenseAction : ActionCallback { + override suspend fun onAction(context: Context, glanceId: GlanceId, parameters: ActionParameters) { + context.launchWidgetAction(WidgetAction.ADD_EXPENSE) + } +} + +class OpenDashboardAction : ActionCallback { + override suspend fun onAction(context: Context, glanceId: GlanceId, parameters: ActionParameters) { + context.launchWidgetAction(WidgetAction.OPEN_DASHBOARD) + } +} + +private fun Context.launchWidgetAction(action: WidgetAction) { + startActivity( + Intent(Intent.ACTION_VIEW, action.uri.toUri()).apply { + flags = Intent.FLAG_ACTIVITY_NEW_TASK or + Intent.FLAG_ACTIVITY_CLEAR_TOP or + Intent.FLAG_ACTIVITY_SINGLE_TOP + setPackage(packageName) + }, + ) +} \ No newline at end of file diff --git a/cmp-android/src/main/kotlin/org/mifospay/widget/ui/WidgetAction.kt b/cmp-android/src/main/kotlin/org/mifospay/widget/ui/WidgetAction.kt new file mode 100644 index 000000000..58579ff01 --- /dev/null +++ b/cmp-android/src/main/kotlin/org/mifospay/widget/ui/WidgetAction.kt @@ -0,0 +1,13 @@ +package org.mifospay.widget.ui + +import org.mifospay.widget.WidgetDeepLink + +/** + * Updated to reference [WidgetDeepLink] constants. + * URIs now have a single definition — change them in WidgetDeepLink only. + */ +enum class WidgetAction(val uri: String) { + ADD_INCOME(WidgetDeepLink.URI_ADD_INCOME), + ADD_EXPENSE(WidgetDeepLink.URI_ADD_EXPENSE), + OPEN_DASHBOARD(WidgetDeepLink.URI_DASHBOARD), +} \ No newline at end of file diff --git a/cmp-android/src/main/res/values/strings.xml b/cmp-android/src/main/res/values/strings.xml index 8334b94dc..07f71e56b 100644 --- a/cmp-android/src/main/res/values/strings.xml +++ b/cmp-android/src/main/res/values/strings.xml @@ -16,5 +16,7 @@ Profile ⚠️ You aren’t connected to the internet FAQ + Finance widget — balance, budget and quick actions + diff --git a/cmp-android/src/main/res/xml/finance_widget_info.xml b/cmp-android/src/main/res/xml/finance_widget_info.xml new file mode 100644 index 000000000..5a735db5b --- /dev/null +++ b/cmp-android/src/main/res/xml/finance_widget_info.xml @@ -0,0 +1,17 @@ + \ No newline at end of file diff --git a/cmp-shared/src/androidMain/kotlin/org/mifospay/shared/MifosPayApp.android.kt b/cmp-shared/src/androidMain/kotlin/org/mifospay/shared/MifosPayApp.android.kt new file mode 100644 index 000000000..460d41b5a --- /dev/null +++ b/cmp-shared/src/androidMain/kotlin/org/mifospay/shared/MifosPayApp.android.kt @@ -0,0 +1,35 @@ +package org.mifospay.shared + +import android.app.Activity +import android.content.Context +import android.content.ContextWrapper +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.ui.platform.LocalContext +import androidx.navigation.NavHostController +import org.mifospay.shared.navigation.PendingDeepLinkStore + +private fun Context.findActivity(): Activity? = when (this) { + is Activity -> this + is ContextWrapper -> baseContext.findActivity() + else -> null +} + + +@Composable +actual fun HandleDeepLinks(navController: NavHostController) { + val context = LocalContext.current + val activity = context.findActivity() + + LaunchedEffect(activity?.intent) { + val intent = activity?.intent ?: return@LaunchedEffect + val uri = intent.data ?: return@LaunchedEffect + + // Store the URI string — no Android type leaks into shared code. + // Consumed by RootNavGraph once MAIN_GRAPH composes (post-passcode). + PendingDeepLinkStore.store(uri.toString()) + + // Clear intent data so rotation doesn't re-trigger this effect. + activity.intent = activity.intent.apply { data = null } + } +} \ No newline at end of file diff --git a/cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.android.kt b/cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.android.kt new file mode 100644 index 000000000..296cb3a62 --- /dev/null +++ b/cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.android.kt @@ -0,0 +1,30 @@ +package org.mifospay.shared.navigation + +/* + * 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-wallet/blob/master/LICENSE.md + */ + +actual object PendingDeepLinkStore { + + private var pendingUri: String? = null + + actual fun store(uri: String) { + pendingUri = uri + } + + actual fun consume(): String? { + val uri = pendingUri + pendingUri = null + return uri + } + + actual fun clear() { + pendingUri = null + } +} diff --git a/cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.android.kt b/cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.android.kt new file mode 100644 index 000000000..d75eb377d --- /dev/null +++ b/cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.android.kt @@ -0,0 +1,17 @@ +package org.mifospay.shared.navigation + +import android.content.Intent +import androidx.navigation.NavHostController +import androidx.core.net.toUri + +/** + * Android actual — reconstructs an Intent from the stored URI string + * and passes it to NavHostController.handleDeepLink(). + * + * Android imports are legal here because this file is in androidMain. + */ +actual fun consumePendingDeepLink(navController: NavHostController) { + val uriString = PendingDeepLinkStore.consume() ?: return + val intent = Intent(Intent.ACTION_VIEW, uriString.toUri()) + navController.handleDeepLink(intent) +} diff --git a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/MifosPayApp.kt b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/MifosPayApp.kt index af8550c63..4517d8be7 100644 --- a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/MifosPayApp.kt +++ b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/MifosPayApp.kt @@ -20,6 +20,7 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.compose.collectAsStateWithLifecycle +import androidx.navigation.NavHostController import androidx.navigation.compose.rememberNavController import co.touchlab.kermit.Logger import org.koin.compose.koinInject @@ -116,6 +117,8 @@ private fun MifosPayApp( val userState by viewModel.userState.collectAsStateWithLifecycle() val navController = rememberNavController() + HandleDeepLinks(navController) + val showErrorDialog = remember { mutableStateOf(false) } val isUnauthorized by GlobalAuthManager.isUnauthorized.collectAsStateWithLifecycle() @@ -227,3 +230,8 @@ private fun MifosPayApp( ) } } + +@Composable +expect fun HandleDeepLinks( + navController: NavHostController, +) \ No newline at end of file diff --git a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/MifosPayViewModel.kt b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/MifosPayViewModel.kt index 526fa3486..3e390335a 100644 --- a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/MifosPayViewModel.kt +++ b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/MifosPayViewModel.kt @@ -19,7 +19,9 @@ import kotlinx.coroutines.launch import org.mifos.authenticator.passcode.PasscodeManager import org.mifos.authenticator.passcode.PasscodeStorageAdapter import org.mifospay.core.data.repository.AppLockRepository +import org.mifospay.core.data.repository.WidgetManagerRepository import org.mifospay.core.datastore.UserPreferencesRepository +import org.mifospay.core.datastore.WidgetPreferencesDataSource import org.mifospay.core.model.user.UserInfo /** @@ -43,6 +45,7 @@ class MifosPayViewModel( private val passcodeManager: PasscodeManager, private val appLockRepository: AppLockRepository, private val passcodeStorageAdapter: PasscodeStorageAdapter, + private val widgetManagerRepository: WidgetManagerRepository, ) : ViewModel() { /** * Reactive session state. Starts as [UserState.UnAuthenticated] and @@ -83,6 +86,7 @@ class MifosPayViewModel( fun logOut() { viewModelScope.launch { userDataRepository.logOut() + widgetManagerRepository.clear() appLockRepository.deleteLock() passcodeManager.logOut() } diff --git a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/di/KoinModules.kt b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/di/KoinModules.kt index ddfd3f3e6..66b815738 100644 --- a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/di/KoinModules.kt +++ b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/di/KoinModules.kt @@ -10,8 +10,10 @@ package org.mifospay.shared.di import org.koin.core.context.startKoin +import org.koin.core.module.dsl.singleOf import org.koin.core.module.dsl.viewModelOf import org.koin.dsl.KoinAppDeclaration +import org.koin.dsl.bind import org.koin.dsl.koinApplication import org.koin.dsl.module import org.mifos.authenticator.passcode.PasscodeManager @@ -51,6 +53,8 @@ import org.mifospay.feature.upi.setup.di.UpiSetupModule import org.mifospay.shared.MifosPayViewModel import org.mifospay.shared.TransferOptionsViewModel import org.mifospay.shared.instance.InstanceSelectorViewModel +import org.mifospay.shared.widget.WidgetDataProvider +import org.mifospay.shared.widget.WidgetDataProviderImpl /** * Aggregator object that bundles every Koin module the app needs. Consumed by @@ -89,6 +93,7 @@ object KoinModules { viewModelOf(::MifosPayViewModel) viewModelOf(::InstanceSelectorViewModel) viewModelOf(::TransferOptionsViewModel) + singleOf(::WidgetDataProviderImpl).bind() } private val featureModules = module { includes( diff --git a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.kt b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.kt new file mode 100644 index 000000000..9b2ccbd1d --- /dev/null +++ b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.kt @@ -0,0 +1,32 @@ +package org.mifospay.shared.navigation + +/* + * 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-wallet/blob/master/LICENSE.md + */ + +/** + * Platform-agnostic store for a pending deep-link URI string. + * + * Lives in commonMain — zero platform imports. + * Stores only a URI string, not an android.content.Intent. + * + * Android actual: backed by a simple in-memory variable. + * iOS actual: same — iOS deep links use a URL string too. + */ +expect object PendingDeepLinkStore { + + /** Store a URI string to be consumed after the auth gate clears. */ + fun store(uri: String) + + /** Returns the stored URI and clears it, or null if none pending. */ + fun consume(): String? + + /** Clear without consuming — call on logout. */ + fun clear() +} \ No newline at end of file diff --git a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/RootNavGraph.kt b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/RootNavGraph.kt index 46a91a770..553f4045b 100644 --- a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/RootNavGraph.kt +++ b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/RootNavGraph.kt @@ -10,11 +10,13 @@ package org.mifospay.shared.navigation import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.text.input.KeyboardType.Companion.Uri import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost @@ -133,6 +135,11 @@ internal fun RootNavGraph( ) composable(MifosNavGraph.MAIN_GRAPH) { + + LaunchedEffect(Unit) { + consumePendingDeepLink(navHostController) + } + MifosApp( networkMonitor = networkMonitor, timeZoneMonitor = timeZoneMonitor, diff --git a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.kt b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.kt new file mode 100644 index 000000000..44f9bc501 --- /dev/null +++ b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.kt @@ -0,0 +1,27 @@ +package org.mifospay.shared.navigation + +/* + * 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-wallet/blob/master/LICENSE.md + */ + +import androidx.navigation.NavHostController + +/** + * Reads the stored URI from [PendingDeepLinkStore] and navigates to it. + * + * Lives in commonMain — [NavHostController] is from androidx.navigation + * which is multiplatform, so this is legal here. + * + * Platform-specific detail (reconstructing an Intent on Android, handling + * a URL on iOS) is hidden inside each actual implementation. + * + * Called once from the MAIN_GRAPH composable in [RootNavGraph], which + * only composes after the passcode gate has been cleared. + */ +expect fun consumePendingDeepLink(navController: NavHostController) \ No newline at end of file diff --git a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetDataProvider.kt b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetDataProvider.kt new file mode 100644 index 000000000..57ab23018 --- /dev/null +++ b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetDataProvider.kt @@ -0,0 +1,12 @@ +package org.mifospay.shared.widget + +import kotlinx.coroutines.flow.Flow + +interface WidgetDataProvider { + + /** Emits a fresh [WidgetState] whenever auth state or balance changes. */ + val widgetStateFlow: Flow + + /** Call after a transaction to force a balance re-fetch. */ + fun invalidate() +} diff --git a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetDataProviderImpl.kt b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetDataProviderImpl.kt new file mode 100644 index 000000000..12aaa7bd5 --- /dev/null +++ b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetDataProviderImpl.kt @@ -0,0 +1,39 @@ +package org.mifospay.shared.widget + +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.onStart +import org.mifospay.core.data.repository.WidgetRepository +import org.mifospay.core.datastore.UserPreferencesRepository + +class WidgetDataProviderImpl( + private val userPreferencesRepository: UserPreferencesRepository, + private val widgetRepository: WidgetRepository, +) : WidgetDataProvider { + + // Emits Unit whenever invalidate() is called (e.g. after a transfer). + private val refreshTrigger = MutableSharedFlow(extraBufferCapacity = 1) + + override fun invalidate() { + refreshTrigger.tryEmit(Unit) + } + + // Re-fetches balance when token, clientId, defaultAccount, OR a manual refresh changes. + override val widgetStateFlow: Flow = combine( + userPreferencesRepository.token, + userPreferencesRepository.clientId, + userPreferencesRepository.defaultAccount, + refreshTrigger.onStart { emit(Unit) }, // seed so combine starts immediately + ) { token, clientId, defaultAccount, _ -> + if (token.isNullOrBlank() || clientId == null || defaultAccount == null) { + WidgetState.Unauthenticated + } else { + runCatching { widgetRepository.getWidgetData() } + .fold( + onSuccess = { WidgetState.Authenticated(data = it) }, + onFailure = { WidgetState.Error }, + ) + } + } +} diff --git a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetState.kt b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetState.kt new file mode 100644 index 000000000..126fc3ea2 --- /dev/null +++ b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetState.kt @@ -0,0 +1,21 @@ +package org.mifospay.shared.widget + +import org.mifospay.core.model.widget.WidgetData + +/** + * Sealed result returned by [WidgetDataProvider.getWidgetState]. + * + * [FinanceGlanceWidget] switches its entire UI based on this — + * no auth logic lives in the Glance composable itself. + */ +sealed interface WidgetState { + + /** User is not logged in — widget shows a "Sign in" prompt. */ + data object Unauthenticated : WidgetState + + /** User is logged in — widget renders balance, budget, quick actions. */ + data class Authenticated(val data: WidgetData) : WidgetState + + /** Balance fetch failed — widget shows an error prompt. */ + data object Error : WidgetState +} \ No newline at end of file diff --git a/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/MifosPayApp.ios.kt b/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/MifosPayApp.ios.kt new file mode 100644 index 000000000..bb0d82cdd --- /dev/null +++ b/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/MifosPayApp.ios.kt @@ -0,0 +1,8 @@ +package org.mifospay.shared + +import androidx.compose.runtime.Composable +import androidx.navigation.NavHostController + +@Composable +actual fun HandleDeepLinks(navController: NavHostController) { +} \ No newline at end of file diff --git a/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.ios.kt b/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.ios.kt new file mode 100644 index 000000000..c248863ab --- /dev/null +++ b/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.ios.kt @@ -0,0 +1,13 @@ +package org.mifospay.shared.navigation + +actual object PendingDeepLinkStore { + actual fun store(uri: String) { + } + + actual fun consume(): String? { + TODO("Not yet implemented") + } + + actual fun clear() { + } +} \ No newline at end of file diff --git a/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.ios.kt b/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.ios.kt new file mode 100644 index 000000000..fa039ce11 --- /dev/null +++ b/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.ios.kt @@ -0,0 +1,7 @@ +package org.mifospay.shared.navigation + +import androidx.navigation.NavHostController + +actual fun consumePendingDeepLink(navController: NavHostController) { + // TODO +} \ No newline at end of file diff --git a/core/data/src/commonMain/kotlin/org/mifospay/core/data/di/RepositoryModule.kt b/core/data/src/commonMain/kotlin/org/mifospay/core/data/di/RepositoryModule.kt index baab97361..20ef372b4 100644 --- a/core/data/src/commonMain/kotlin/org/mifospay/core/data/di/RepositoryModule.kt +++ b/core/data/src/commonMain/kotlin/org/mifospay/core/data/di/RepositoryModule.kt @@ -45,6 +45,8 @@ import org.mifospay.core.data.repository.ThirdPartyTransferRepository import org.mifospay.core.data.repository.TwoFactorAuthRepository import org.mifospay.core.data.repository.UserRepository import org.mifospay.core.data.repository.UserVerificationRepository +import org.mifospay.core.data.repository.WidgetManagerRepository +import org.mifospay.core.data.repository.WidgetRepository import org.mifospay.core.data.repositoryImpl.AccountRepositoryImpl import org.mifospay.core.data.repositoryImpl.AppLockRepositoryImpl import org.mifospay.core.data.repositoryImpl.AssetRepositoryImpl @@ -75,6 +77,8 @@ import org.mifospay.core.data.repositoryImpl.ThirdPartyTransferRepositoryImpl import org.mifospay.core.data.repositoryImpl.TwoFactorAuthRepositoryImpl import org.mifospay.core.data.repositoryImpl.UserRepositoryImpl import org.mifospay.core.data.repositoryImpl.UserVerificationRepositoryImpl +import org.mifospay.core.data.repositoryImpl.WidgetManagerRepositoryImpl +import org.mifospay.core.data.repositoryImpl.WidgetRepositoryImpl import org.mifospay.core.data.util.NetworkMonitor import org.mifospay.core.data.util.QrTransferRouter import org.mifospay.core.data.util.TimeZoneMonitor @@ -152,4 +156,20 @@ val RepositoryModule = module { networkJson = get(), ) } + + single { + WidgetManagerRepositoryImpl( + repository = get(), + widgetSyncService = get() + ) + } + single { + WidgetRepositoryImpl( + accountRepository = get(), + widgetDataSource = get(), + userPreferencesRepository = get(), + ioDispatcher = get(ioDispatcher), + ) + } + } diff --git a/core/data/src/commonMain/kotlin/org/mifospay/core/data/mapper/WidgetMapper.kt b/core/data/src/commonMain/kotlin/org/mifospay/core/data/mapper/WidgetMapper.kt new file mode 100644 index 000000000..d57f5f7ac --- /dev/null +++ b/core/data/src/commonMain/kotlin/org/mifospay/core/data/mapper/WidgetMapper.kt @@ -0,0 +1,49 @@ +package org.mifospay.core.data.mapper + +import org.mifospay.core.model.widget.WidgetData +import kotlin.time.Clock +import kotlin.time.ExperimentalTime + +/** + * Mapper that converts your existing financial domain objects into [WidgetData]. + * + * Lives in :core:data/mapper — same home as other mappers in the project. + * + * Replace the field names below with your actual Account / Balance / Budget + * domain classes. The mapper keeps [WidgetData] decoupled from your financial + * domain — it only knows what the widget needs to render. + * + * Example call from a ViewModel or UseCase: + * + * val widgetData = WidgetDataMapper.from( + * balance = account.balance, + * currency = account.currency, + * budgetTotal = budget.totalAmount, + * budgetSpent = budget.spentAmount, + * lastIncome = lastTransaction.takeIf { it.isCredit }?.amount ?: 0.0, + * lastExpense = lastTransaction.takeIf { it.isDebit }?.amount ?: 0.0, + * userName = client.displayName, + * ) + */ +object WidgetDataMapper { + @OptIn(ExperimentalTime::class) + fun from( + balance: Double, + currency: String, + budgetTotal: Double, + budgetSpent: Double, + lastIncome: Double, + lastExpense: Double, + userName: String, + timestampMs: Long = Clock.System.now().toEpochMilliseconds(), + ): WidgetData = WidgetData( + currentBalance = balance, + currency = currency, + budgetTotal = budgetTotal, + budgetSpent = budgetSpent, + lastIncome = lastIncome, + lastExpense = lastExpense, + lastUpdatedMs = timestampMs, + userName = userName, + ) +} \ No newline at end of file diff --git a/core/data/src/commonMain/kotlin/org/mifospay/core/data/repository/WidgetManagerRepository.kt b/core/data/src/commonMain/kotlin/org/mifospay/core/data/repository/WidgetManagerRepository.kt new file mode 100644 index 000000000..3626170e7 --- /dev/null +++ b/core/data/src/commonMain/kotlin/org/mifospay/core/data/repository/WidgetManagerRepository.kt @@ -0,0 +1,15 @@ +package org.mifospay.core.data.repository + +import org.mifospay.core.model.widget.WidgetData + +interface WidgetManagerRepository { + suspend fun refresh() + + suspend fun update(data: WidgetData) + + suspend fun clear() + + fun schedule() + + fun cancel() +} \ No newline at end of file diff --git a/core/data/src/commonMain/kotlin/org/mifospay/core/data/repository/WidgetRepository.kt b/core/data/src/commonMain/kotlin/org/mifospay/core/data/repository/WidgetRepository.kt new file mode 100644 index 000000000..01cede451 --- /dev/null +++ b/core/data/src/commonMain/kotlin/org/mifospay/core/data/repository/WidgetRepository.kt @@ -0,0 +1,27 @@ +package org.mifospay.core.data.repository + +import kotlinx.coroutines.flow.Flow +import org.mifospay.core.model.widget.WidgetData +/** + * Repository interface for widget data. + * + * Lives in :core:data alongside other repository interfaces + * (e.g. AccountRepository, ClientRepository). + * + * Callers depend on this interface — never on the implementation. + * Koin provides the concrete binding via [WidgetRepositoryImpl]. + */ +interface WidgetRepository { + + /** Hot flow of the current widget state. Emits on every [saveWidgetData] call. */ + val widgetDataStream: Flow + + /** Returns the latest persisted [WidgetData], or [WidgetData.DEFAULT] if none. */ + suspend fun getWidgetData(): WidgetData + + /** Persist [data] and push it downstream via [widgetDataStream]. */ + suspend fun saveWidgetData(data: WidgetData) + + /** Reset widget storage to defaults (e.g. on logout). */ + suspend fun clearWidgetData() +} diff --git a/core/data/src/commonMain/kotlin/org/mifospay/core/data/repositoryImpl/WidgetManagerRepositoryImpl.kt b/core/data/src/commonMain/kotlin/org/mifospay/core/data/repositoryImpl/WidgetManagerRepositoryImpl.kt new file mode 100644 index 000000000..dd7b29ec1 --- /dev/null +++ b/core/data/src/commonMain/kotlin/org/mifospay/core/data/repositoryImpl/WidgetManagerRepositoryImpl.kt @@ -0,0 +1,35 @@ +package org.mifospay.core.data.repositoryImpl + +import org.mifospay.core.data.repository.WidgetManagerRepository +import org.mifospay.core.data.repository.WidgetRepository +import org.mifospay.core.data.util.WidgetSyncService +import org.mifospay.core.model.widget.WidgetData + +class WidgetManagerRepositoryImpl( + private val repository: WidgetRepository, + private val widgetSyncService: WidgetSyncService, +) : WidgetManagerRepository { + + override suspend fun refresh() { + widgetSyncService.refreshWidget() + } + + override suspend fun update(data: WidgetData) { + + repository.saveWidgetData(data) + widgetSyncService.refreshWidget() + } + + override suspend fun clear() { + repository.clearWidgetData() + widgetSyncService.refreshWidget() + } + + override fun schedule() { + widgetSyncService.schedulePeriodicSync() + } + + override fun cancel() { + widgetSyncService.cancelPeriodicSync() + } +} \ No newline at end of file diff --git a/core/data/src/commonMain/kotlin/org/mifospay/core/data/repositoryImpl/WidgetRepositoryImpl.kt b/core/data/src/commonMain/kotlin/org/mifospay/core/data/repositoryImpl/WidgetRepositoryImpl.kt new file mode 100644 index 000000000..0f01496f1 --- /dev/null +++ b/core/data/src/commonMain/kotlin/org/mifospay/core/data/repositoryImpl/WidgetRepositoryImpl.kt @@ -0,0 +1,70 @@ +package org.mifospay.core.data.repositoryImpl + +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.firstOrNull +import kotlinx.coroutines.withContext +import org.mifospay.core.common.DataState +import org.mifospay.core.data.repository.AccountRepository +import org.mifospay.core.data.repository.WidgetRepository +import org.mifospay.core.datastore.UserPreferencesRepository +import org.mifospay.core.datastore.WidgetPreferencesDataSource +import org.mifospay.core.model.widget.WidgetData + +/** + * Concrete implementation of [WidgetRepository]. + * + * Follows the same pattern as [AccountRepositoryImpl], [ClientRepositoryImpl], etc.: + * - Constructor-injected [ioDispatcher] for all I/O scheduling + * - Flow methods apply [flowOn] at the end of the chain + * - Suspend methods wrap the call body in [withContext] + * + * Thin delegation layer — all real persistence is in [WidgetPreferencesDataSource]. + */ +class WidgetRepositoryImpl( + private val widgetDataSource: WidgetPreferencesDataSource, + private val userPreferencesRepository: UserPreferencesRepository, + private val accountRepository: AccountRepository, + private val ioDispatcher: CoroutineDispatcher, +) : WidgetRepository { + + override val widgetDataStream: Flow + get() = widgetDataSource.widgetData + + override suspend fun getWidgetData(): WidgetData = + withContext(ioDispatcher) { + + val widgetData = widgetDataSource.widgetData.value + + val defaultAccountId = userPreferencesRepository.defaultAccount.value?.accountId + ?: return@withContext widgetData + + val clientId = userPreferencesRepository.clientId.value + ?: return@withContext widgetData + + val accounts = accountRepository + .getSelfAccounts(clientId) + .firstOrNull { it is DataState.Success || it is DataState.Error } + ?: return@withContext widgetData + + if (accounts is DataState.Error) throw accounts.exception + if (accounts !is DataState.Success) return@withContext widgetData + + val defaultAccount = accounts.data.firstOrNull { it.id == defaultAccountId } + ?: return@withContext widgetData + + widgetData.copy( + currentBalance = defaultAccount.balance, + currency = defaultAccount.currency.code, + accountNumber = defaultAccount.number, + ) + } + + override suspend fun saveWidgetData(data: WidgetData) = withContext(ioDispatcher) { + widgetDataSource.updateWidgetData(data) + } + + override suspend fun clearWidgetData() = withContext(ioDispatcher) { + widgetDataSource.clearWidgetData() + } +} diff --git a/core/data/src/commonMain/kotlin/org/mifospay/core/data/util/WidgetSyncService.kt b/core/data/src/commonMain/kotlin/org/mifospay/core/data/util/WidgetSyncService.kt new file mode 100644 index 000000000..7eaf6b38b --- /dev/null +++ b/core/data/src/commonMain/kotlin/org/mifospay/core/data/util/WidgetSyncService.kt @@ -0,0 +1,32 @@ +package org.mifospay.core.data.util + +import org.mifospay.core.model.widget.WidgetData + +/** + * Platform capability: push data to the home screen widget and manage + * background refresh scheduling. + * + * Lives in :core:data — depends on nothing platform-specific. + * Android actual → [AndroidWidgetSyncService] in :cmp-android + * iOS actual → IosWidgetSyncService in :cmp-ios (future) + * + * Use cases depend on this interface, never on Glance or WidgetKit. + * This is the Dependency Inversion boundary. + */ +interface WidgetSyncService { + + /** Tell the home screen to re-render all placed widget instances with [data]. */ + suspend fun syncToWidget(data: WidgetData) + + /** + * Re-render all placed widget instances from whatever is already in storage. + * Does not touch storage — just triggers a Glance / WidgetKit redraw. + */ + suspend fun refreshWidget() + + /** Register a periodic background refresh (WorkManager / WidgetKit timeline). */ + fun schedulePeriodicSync() + + /** Cancel periodic background refresh (call when last widget instance is removed). */ + fun cancelPeriodicSync() +} \ No newline at end of file diff --git a/core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/UserPreferencesDataSource.kt b/core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/UserPreferencesDataSource.kt index 49e4ea4a5..b4505f64f 100644 --- a/core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/UserPreferencesDataSource.kt +++ b/core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/UserPreferencesDataSource.kt @@ -217,6 +217,16 @@ class UserPreferencesDataSource( suspend fun clearInfo() { withContext(dispatcher) { settings.clear() + + _userInfo.value = UserInfoPreferences.DEFAULT + _clientInfo.value = ClientPreferences.DEFAULT + _defaultAccount.value = DefaultAccount.DEFAULT + + _selectedInstance.value = null + _selectedInterbankInstance.value = null + _accountExternalIds.value = emptyMap() + + selectedLanguage.value = Language.DEFAULT } } diff --git a/core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/WidgetPrefernceDataSource.kt b/core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/WidgetPrefernceDataSource.kt new file mode 100644 index 000000000..edf8f9fbf --- /dev/null +++ b/core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/WidgetPrefernceDataSource.kt @@ -0,0 +1,69 @@ +@file:OptIn(ExperimentalSerializationApi::class, ExperimentalSettingsApi::class) + +package org.mifospay.core.datastore + +import com.russhwolf.settings.ExperimentalSettingsApi +import com.russhwolf.settings.Settings +import com.russhwolf.settings.serialization.decodeValue +import com.russhwolf.settings.serialization.decodeValueOrNull +import com.russhwolf.settings.serialization.encodeValue +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.withContext +import kotlinx.serialization.ExperimentalSerializationApi +import org.mifospay.core.model.widget.WidgetData + +private const val WIDGET_DATA_KEY = "widget_data" + +/** + * Persistence layer for home screen widget data. + * + * Follows the same pattern as [UserPreferencesDataSource]: + * - [encodeValue] / [decodeValue] for kotlinx.serialization integration + * - [MutableStateFlow] seeded from storage on construction + * - All writes run on [dispatcher] via [withContext] + * - Private [Settings] extension functions per stored type + * + * Lives in :core:datastore alongside [UserPreferencesDataSource]. + */ +class WidgetPreferencesDataSource( + private val settings: Settings, + private val dispatcher: CoroutineDispatcher, +) { + private val _widgetData = MutableStateFlow( + settings.decodeValue( + key = WIDGET_DATA_KEY, + serializer = WidgetData.serializer(), + defaultValue = settings.decodeValueOrNull( + key = WIDGET_DATA_KEY, + serializer = WidgetData.serializer(), + ) ?: WidgetData.DEFAULT, + ), + ) + + val widgetData: StateFlow = _widgetData.asStateFlow() + + suspend fun updateWidgetData(data: WidgetData) { + withContext(dispatcher) { + settings.putWidgetData(data) + _widgetData.value = data + } + } + + suspend fun clearWidgetData() { + withContext(dispatcher) { + settings.remove(WIDGET_DATA_KEY) + _widgetData.value = WidgetData.DEFAULT + } + } +} + +private fun Settings.putWidgetData(data: WidgetData) { + encodeValue( + key = WIDGET_DATA_KEY, + serializer = WidgetData.serializer(), + value = data, + ) +} \ No newline at end of file diff --git a/core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/di/PreferenceModule.kt b/core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/di/PreferenceModule.kt index 220bde71e..12de283ea 100644 --- a/core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/di/PreferenceModule.kt +++ b/core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/di/PreferenceModule.kt @@ -25,6 +25,7 @@ import org.mifospay.core.datastore.BillerRepositoryImpl import org.mifospay.core.datastore.UserPreferencesDataSource import org.mifospay.core.datastore.UserPreferencesRepository import org.mifospay.core.datastore.UserPreferencesRepositoryImpl +import org.mifospay.core.datastore.WidgetPreferencesDataSource val PreferencesModule = module { factory { Settings() } @@ -61,4 +62,12 @@ val PreferencesModule = module { billDataSource = get(), ) } + + factory { + WidgetPreferencesDataSource( + settings = get(), + dispatcher = get(named(MifosDispatchers.IO.name)) + ) + } + } diff --git a/core/domain/src/commonMain/kotlin/org/mifospay/core/domain/LoginUseCase.kt b/core/domain/src/commonMain/kotlin/org/mifospay/core/domain/LoginUseCase.kt index a56cc30a0..8990ffcd4 100644 --- a/core/domain/src/commonMain/kotlin/org/mifospay/core/domain/LoginUseCase.kt +++ b/core/domain/src/commonMain/kotlin/org/mifospay/core/domain/LoginUseCase.kt @@ -15,6 +15,7 @@ import org.mifospay.core.common.DataState import org.mifospay.core.common.utils.OpenForMokkery import org.mifospay.core.data.repository.AuthenticationRepository import org.mifospay.core.data.repository.ClientRepository +import org.mifospay.core.data.repository.WidgetManagerRepository import org.mifospay.core.datastore.UserPreferencesRepository import org.mifospay.core.model.user.UserInfo @@ -23,6 +24,7 @@ class LoginUseCase( private val repository: AuthenticationRepository, private val clientRepository: ClientRepository, private val userPreferencesRepository: UserPreferencesRepository, + private val widgetManagerRepository: WidgetManagerRepository, private val ioDispatcher: CoroutineDispatcher, ) { suspend operator fun invoke(username: String, password: String): DataState { @@ -64,6 +66,7 @@ class LoginUseCase( withContext(ioDispatcher) { userPreferencesRepository.updateClientInfo(clientInfo.data) userPreferencesRepository.updateUserInfo(userInfo) + widgetManagerRepository.refresh() } DataState.Success(userInfo) diff --git a/core/domain/src/commonMain/kotlin/org/mifospay/core/domain/di/DomainModule.kt b/core/domain/src/commonMain/kotlin/org/mifospay/core/domain/di/DomainModule.kt index a601156df..c20971cf4 100644 --- a/core/domain/src/commonMain/kotlin/org/mifospay/core/domain/di/DomainModule.kt +++ b/core/domain/src/commonMain/kotlin/org/mifospay/core/domain/di/DomainModule.kt @@ -20,6 +20,7 @@ val DomainModule = module { repository = get(), clientRepository = get(), userPreferencesRepository = get(), + widgetManagerRepository = get(), ioDispatcher = get(named(MifosDispatchers.IO.name)), ) } diff --git a/core/model/src/commonMain/kotlin/org/mifospay/core/model/widget/WidgetData.kt b/core/model/src/commonMain/kotlin/org/mifospay/core/model/widget/WidgetData.kt new file mode 100644 index 000000000..d28473ff7 --- /dev/null +++ b/core/model/src/commonMain/kotlin/org/mifospay/core/model/widget/WidgetData.kt @@ -0,0 +1,40 @@ +package org.mifospay.core.model.widget + +import kotlinx.serialization.Serializable + +/** + * Canonical widget state model. + * + * Lives in :core:model so every module that needs to read or write widget + * data can depend on it without pulling in persistence or UI code. + * + * Mirrors the pattern of [org.mifospay.core.model.user.UserInfo] — + * pure data, fully serializable, no platform dependencies. + */ +@Serializable +data class WidgetData( + val currentBalance: Double = 0.0, + val currency: String = "USD", + val accountNumber: String = "", + val budgetTotal: Double = 0.0, + val budgetSpent: Double = 0.0, + val lastIncome: Double = 0.0, + val lastExpense: Double = 0.0, + val lastUpdatedMs: Long = 0L, + val userName: String = "", +) { + val budgetRemaining: Double + get() = (budgetTotal - budgetSpent).coerceAtLeast(0.0) + + val budgetUsedFraction: Float + get() = if (budgetTotal <= 0.0) 0f + else (budgetSpent / budgetTotal).toFloat().coerceIn(0f, 1f) + + val isBudgetCritical: Boolean get() = budgetUsedFraction >= 0.85f + val isBudgetWarning: Boolean get() = budgetUsedFraction >= 0.65f + val hasBudget: Boolean get() = budgetTotal > 0.0 + + companion object { + val DEFAULT = WidgetData() + } +} diff --git a/feature/home/src/commonMain/kotlin/org/mifospay/feature/home/navigation/HomeNavigation.kt b/feature/home/src/commonMain/kotlin/org/mifospay/feature/home/navigation/HomeNavigation.kt index 3c1ea8323..3d4a16a48 100644 --- a/feature/home/src/commonMain/kotlin/org/mifospay/feature/home/navigation/HomeNavigation.kt +++ b/feature/home/src/commonMain/kotlin/org/mifospay/feature/home/navigation/HomeNavigation.kt @@ -13,6 +13,7 @@ import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.compose.composable +import androidx.navigation.navDeepLink import org.mifospay.feature.home.HomeScreen const val HOME_ROUTE = "home_route" @@ -28,7 +29,13 @@ fun NavGraphBuilder.homeScreen( navigateToAccountDetail: (Long) -> Unit, navigateToHistory: () -> Unit, ) { - composable(route = HOME_ROUTE) { + composable(route = HOME_ROUTE, + deepLinks = listOf( + navDeepLink { + uriPattern = "mifospay://dashboard" + }, + ), + ) { HomeScreen( onRequest = onRequest, onPay = onPay, diff --git a/feature/make-transfer/src/commonMain/kotlin/org/mifospay/feature/make/transfer/MakeTransferViewModel.kt b/feature/make-transfer/src/commonMain/kotlin/org/mifospay/feature/make/transfer/MakeTransferViewModel.kt index fe7c7a09d..6cfd44455 100644 --- a/feature/make-transfer/src/commonMain/kotlin/org/mifospay/feature/make/transfer/MakeTransferViewModel.kt +++ b/feature/make-transfer/src/commonMain/kotlin/org/mifospay/feature/make/transfer/MakeTransferViewModel.kt @@ -36,6 +36,7 @@ import org.mifospay.core.common.getSerialized import org.mifospay.core.common.setSerialized import org.mifospay.core.common.utils.capitalizeWords import org.mifospay.core.data.repository.AccountRepository +import org.mifospay.core.data.repository.WidgetManagerRepository import org.mifospay.core.data.util.UpiQrCodeProcessor import org.mifospay.core.datastore.UserPreferencesRepository import org.mifospay.core.model.account.Account @@ -48,6 +49,7 @@ import org.mifospay.feature.make.transfer.navigation.TRANSFER_ARG internal class MakeTransferViewModel( private val accountRepository: AccountRepository, + private val widgetManagerRepository: WidgetManagerRepository, repository: UserPreferencesRepository, savedStateHandle: SavedStateHandle, ) : BaseViewModel( @@ -187,7 +189,7 @@ internal class MakeTransferViewModel( mutableStateFlow.update { it.copy(dialogState = null) } - + viewModelScope.launch { widgetManagerRepository.refresh() } sendEvent(MakeTransferEvent.OnTransferSuccess) } } diff --git a/feature/transfer-interbank/src/commonMain/kotlin/org/mifospay/feature/transfer/interbank/InterbankTransferViewModel.kt b/feature/transfer-interbank/src/commonMain/kotlin/org/mifospay/feature/transfer/interbank/InterbankTransferViewModel.kt index 06d6cff7e..fc3a703e4 100644 --- a/feature/transfer-interbank/src/commonMain/kotlin/org/mifospay/feature/transfer/interbank/InterbankTransferViewModel.kt +++ b/feature/transfer-interbank/src/commonMain/kotlin/org/mifospay/feature/transfer/interbank/InterbankTransferViewModel.kt @@ -10,7 +10,9 @@ package org.mifospay.feature.transfer.interbank import androidx.lifecycle.SavedStateHandle +import androidx.lifecycle.viewModelScope import kotlinx.coroutines.flow.update +import kotlinx.coroutines.launch import kotlinx.datetime.TimeZone import kotlinx.datetime.todayIn import kotlinx.serialization.Serializable @@ -19,6 +21,7 @@ import org.mifospay.core.common.DataState import org.mifospay.core.common.DateHelper import org.mifospay.core.data.repository.InterBankRepository import org.mifospay.core.data.repository.SelfServiceRepository +import org.mifospay.core.data.repository.WidgetManagerRepository import org.mifospay.core.datastore.UserPreferencesRepository import org.mifospay.core.model.account.Account import org.mifospay.core.model.client.Client @@ -42,6 +45,7 @@ const val INTER_BANK_TRANSFER_VERIFICATION_KEY = "inter-banking_transfer_verific class InterbankTransferViewModel( private val selfServiceRepository: SelfServiceRepository, private val interBankRepository: InterBankRepository, + private val widgetManagerRepository: WidgetManagerRepository, private val preferencesRepository: UserPreferencesRepository, private val savedStateHandle: SavedStateHandle, ) : BaseViewModel( @@ -360,6 +364,9 @@ class InterbankTransferViewModel( transferResponse = responseMessage, ) } + viewModelScope.launch { + widgetManagerRepository.refresh() + } sendEvent(InterbankTransferEvent.OnTransferSuccess) } diff --git a/feature/transfer-intrabank/src/commonMain/kotlin/org/mifospay/feature/transfer/intrabank/confirm/TransferConfirmViewModel.kt b/feature/transfer-intrabank/src/commonMain/kotlin/org/mifospay/feature/transfer/intrabank/confirm/TransferConfirmViewModel.kt index 110a42cc4..ea1b0e860 100644 --- a/feature/transfer-intrabank/src/commonMain/kotlin/org/mifospay/feature/transfer/intrabank/confirm/TransferConfirmViewModel.kt +++ b/feature/transfer-intrabank/src/commonMain/kotlin/org/mifospay/feature/transfer/intrabank/confirm/TransferConfirmViewModel.kt @@ -36,6 +36,7 @@ import org.mifospay.core.common.utils.capitalizeWords import org.mifospay.core.data.repository.ClientRepository import org.mifospay.core.data.repository.ThirdPartyTransferRepository import org.mifospay.core.data.repository.UserVerificationRepository +import org.mifospay.core.data.repository.WidgetManagerRepository import org.mifospay.core.network.model.entity.payload.TransferPayload import org.mifospay.core.network.model.entity.templates.account.AccountOption import org.mifospay.core.ui.DefaultErrorMessageProvider @@ -79,6 +80,7 @@ internal class TransferConfirmViewModel( private val repository: ThirdPartyTransferRepository, private val clientRepo: ClientRepository, private val userVerificationRepository: UserVerificationRepository, + private val widgetManagerRepository: WidgetManagerRepository, savedStateHandle: SavedStateHandle, ) : BaseViewModel( initialState = run { @@ -338,6 +340,7 @@ internal class TransferConfirmViewModel( transferResult = transferResult, ) } + widgetManagerRepository.refresh() } } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 00a8daf5a..ca65a153f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -137,6 +137,7 @@ packageVersion = "1.0.0" mifosAuthenticatorPasscode="2.3.0-beta" mifosAuthenticatorBiometrics="2.3.0-beta" +runtime = "1.11.2" [libraries] accompanist-pager = { group = "com.google.accompanist", name = "accompanist-pager", version.ref = "accompanist" } @@ -388,6 +389,7 @@ core-ktx = { group = "androidx.test", name = "core-ktx", version.ref = "coreKtx" mifos-authenticator-passcode = {group="io.github.openmf", name="mifos-authenticator-passcode", version.ref="mifosAuthenticatorPasscode"} mifos-authenticator-biometrics = {group="io.github.openmf", name="mifos-authenticator-biometrics", version.ref="mifosAuthenticatorBiometrics"} +androidx-runtime = { group = "androidx.compose.runtime", name = "runtime", version.ref = "runtime" } [bundles] androidx-compose-ui-test = [ From c67c6e8fc78c70de60ff33dadfa54eb90e52dbf8 Mon Sep 17 00:00:00 2001 From: nagarjuna Date: Tue, 16 Jun 2026 22:54:06 +0530 Subject: [PATCH 2/9] refactor: clean up --- .../main/kotlin/org/mifospay/MainActivity.kt | 1 - .../main/kotlin/org/mifospay/MifosPayApp.kt | 3 +- .../mifospay/widget/AndroidWidgetModule.kt | 20 ++-- .../widget/AndroidWidgetSyncService.kt | 11 +- .../mifospay/widget/FinanceGlanceWidget.kt | 100 ++++++++---------- .../mifospay/widget/FinanceWidgetReceiver.kt | 11 +- .../org/mifospay/widget/WidgetDeepLink.kt | 18 ++++ .../org/mifospay/widget/WidgetDeeplink.kt | 21 ---- .../mifospay/widget/WidgetRefreshWorker.kt | 36 ++++--- .../kotlin/org/mifospay/widget/ui/Actions.kt | 17 ++- .../org/mifospay/widget/ui/WidgetAction.kt | 11 +- .../src/main/res/xml/finance_widget_info.xml | 10 ++ .../mifospay/shared/MifosPayApp.android.kt | 16 ++- ...d.kt => ConsumePendingDeepLink.android.kt} | 13 ++- .../PendingDeepLinkStore.android.kt | 39 +++++++ .../kotlin/org/mifospay/shared/MifosPayApp.kt | 2 +- .../org/mifospay/shared/MifosPayViewModel.kt | 1 - ...gDeepLink.kt => ConsumePendingDeepLink.kt} | 11 +- ...eplinkStore.kt => PendingDeepLinkStore.kt} | 11 +- .../shared/navigation/RootNavGraph.kt | 2 - .../shared/widget/WidgetDataProvider.kt | 9 ++ .../shared/widget/WidgetDataProviderImpl.kt | 13 ++- .../org/mifospay/shared/widget/WidgetState.kt | 17 +-- .../org/mifospay/shared/MifosPayApp.ios.kt | 8 -- .../mifospay/shared}/MifosViewController.kt | 3 +- .../navigation/PendingDeeplinkStore.ios.kt | 13 --- .../navigation/consumePendingDeepLink.ios.kt | 7 -- .../mifospay/shared/MifosPayApp.nonAndroid.kt | 14 +++ .../ConsumePendingDeepLink.nonAndroid.kt | 15 +++ .../PendingDeepLinkStore.nonAndroid.kt} | 14 +-- .../mifospay/core/data/di/RepositoryModule.kt | 7 +- .../mifospay/core/data/mapper/WidgetMapper.kt | 49 --------- .../repository/WidgetManagerRepository.kt | 11 +- .../core/data/repository/WidgetRepository.kt | 9 ++ .../WidgetManagerRepositoryImpl.kt | 12 ++- .../repositoryImpl/WidgetRepositoryImpl.kt | 16 ++- .../core/data/util/WidgetSyncService.kt | 11 +- ...ource.kt => WidgetPreferenceDataSource.kt} | 32 +++--- .../core/datastore/di/PreferenceModule.kt | 7 +- .../mifospay/core/model/widget/WidgetData.kt | 20 +++- .../feature/home/navigation/HomeNavigation.kt | 3 +- 41 files changed, 382 insertions(+), 262 deletions(-) create mode 100644 cmp-android/src/main/kotlin/org/mifospay/widget/WidgetDeepLink.kt delete mode 100644 cmp-android/src/main/kotlin/org/mifospay/widget/WidgetDeeplink.kt rename cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/{consumePendingDeepLink.android.kt => ConsumePendingDeepLink.android.kt} (58%) create mode 100644 cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/PendingDeepLinkStore.android.kt rename cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/{consumePendingDeepLink.kt => ConsumePendingDeepLink.kt} (74%) rename cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/{PendingDeeplinkStore.kt => PendingDeepLinkStore.kt} (75%) delete mode 100644 cmp-shared/src/iosMain/kotlin/org/mifospay/shared/MifosPayApp.ios.kt rename cmp-shared/src/iosMain/kotlin/{ => org/mifospay/shared}/MifosViewController.kt (96%) delete mode 100644 cmp-shared/src/iosMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.ios.kt delete mode 100644 cmp-shared/src/iosMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.ios.kt create mode 100644 cmp-shared/src/nonAndroidMain/kotlin/org/mifospay/shared/MifosPayApp.nonAndroid.kt create mode 100644 cmp-shared/src/nonAndroidMain/kotlin/org/mifospay/shared/navigation/ConsumePendingDeepLink.nonAndroid.kt rename cmp-shared/src/{androidMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.android.kt => nonAndroidMain/kotlin/org/mifospay/shared/navigation/PendingDeepLinkStore.nonAndroid.kt} (70%) delete mode 100644 core/data/src/commonMain/kotlin/org/mifospay/core/data/mapper/WidgetMapper.kt rename core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/{WidgetPrefernceDataSource.kt => WidgetPreferenceDataSource.kt} (72%) diff --git a/cmp-android/src/main/kotlin/org/mifospay/MainActivity.kt b/cmp-android/src/main/kotlin/org/mifospay/MainActivity.kt index 199f56922..4250a0a7c 100644 --- a/cmp-android/src/main/kotlin/org/mifospay/MainActivity.kt +++ b/cmp-android/src/main/kotlin/org/mifospay/MainActivity.kt @@ -112,5 +112,4 @@ class MainActivity : AppCompatActivity() { super.onNewIntent(intent) setIntent(intent) } - } diff --git a/cmp-android/src/main/kotlin/org/mifospay/MifosPayApp.kt b/cmp-android/src/main/kotlin/org/mifospay/MifosPayApp.kt index 159a0773e..8accbc3b1 100644 --- a/cmp-android/src/main/kotlin/org/mifospay/MifosPayApp.kt +++ b/cmp-android/src/main/kotlin/org/mifospay/MifosPayApp.kt @@ -33,7 +33,6 @@ class MifosPayApp : Application(), Configuration.Provider { private val userDataRepository: UserPreferencesRepository by inject() private val widgetManager: WidgetManagerRepository by inject() - override fun onCreate() { super.onCreate() @@ -49,7 +48,7 @@ class MifosPayApp : Application(), Configuration.Provider { WorkManager.getInstance(this) .enqueue( OneTimeWorkRequestBuilder() - .build() + .build(), ) restoreSavedLanguage() diff --git a/cmp-android/src/main/kotlin/org/mifospay/widget/AndroidWidgetModule.kt b/cmp-android/src/main/kotlin/org/mifospay/widget/AndroidWidgetModule.kt index f8828b265..10d4186f6 100644 --- a/cmp-android/src/main/kotlin/org/mifospay/widget/AndroidWidgetModule.kt +++ b/cmp-android/src/main/kotlin/org/mifospay/widget/AndroidWidgetModule.kt @@ -1,19 +1,17 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ package org.mifospay.widget -import org.koin.android.ext.koin.androidContext import org.koin.dsl.module import org.mifospay.core.data.util.WidgetSyncService -/** - * Android-only Koin module. - * - * Binds [WidgetSyncService] (interface in :core:data) to its Android - * implementation [AndroidWidgetSyncService]. - * - * Loaded alongside [org.mifospay.shared.di.KoinModules.allModules] in - * Application.onCreate so the `:core:domain` use cases that depend on - * [WidgetSyncService] can resolve the binding. - */ val androidWidgetModule = module { single { diff --git a/cmp-android/src/main/kotlin/org/mifospay/widget/AndroidWidgetSyncService.kt b/cmp-android/src/main/kotlin/org/mifospay/widget/AndroidWidgetSyncService.kt index 9d013ad9e..67a272b2e 100644 --- a/cmp-android/src/main/kotlin/org/mifospay/widget/AndroidWidgetSyncService.kt +++ b/cmp-android/src/main/kotlin/org/mifospay/widget/AndroidWidgetSyncService.kt @@ -1,3 +1,12 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ package org.mifospay.widget import android.content.Context @@ -33,4 +42,4 @@ class AndroidWidgetSyncService( override fun cancelPeriodicSync() { WidgetRefreshWorker.cancel(context) } -} \ No newline at end of file +} diff --git a/cmp-android/src/main/kotlin/org/mifospay/widget/FinanceGlanceWidget.kt b/cmp-android/src/main/kotlin/org/mifospay/widget/FinanceGlanceWidget.kt index 4d4114562..b67d40e59 100644 --- a/cmp-android/src/main/kotlin/org/mifospay/widget/FinanceGlanceWidget.kt +++ b/cmp-android/src/main/kotlin/org/mifospay/widget/FinanceGlanceWidget.kt @@ -4,6 +4,8 @@ * 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-wallet/blob/master/LICENSE.md */ package org.mifospay.widget @@ -14,7 +16,9 @@ import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import androidx.glance.* +import androidx.glance.GlanceId +import androidx.glance.GlanceModifier +import androidx.glance.LocalSize import androidx.glance.action.Action import androidx.glance.action.clickable import androidx.glance.appwidget.GlanceAppWidget @@ -22,9 +26,21 @@ import androidx.glance.appwidget.SizeMode import androidx.glance.appwidget.action.actionRunCallback import androidx.glance.appwidget.cornerRadius import androidx.glance.appwidget.provideContent +import androidx.glance.background import androidx.glance.color.ColorProvider -import androidx.glance.layout.* -import androidx.glance.text.* +import androidx.glance.layout.Alignment +import androidx.glance.layout.Box +import androidx.glance.layout.Column +import androidx.glance.layout.Row +import androidx.glance.layout.Spacer +import androidx.glance.layout.fillMaxSize +import androidx.glance.layout.fillMaxWidth +import androidx.glance.layout.height +import androidx.glance.layout.padding +import androidx.glance.layout.width +import androidx.glance.text.FontWeight +import androidx.glance.text.Text +import androidx.glance.text.TextStyle import androidx.glance.unit.ColorProvider import org.koin.core.component.KoinComponent import org.koin.core.component.inject @@ -38,26 +54,19 @@ import org.mifospay.widget.ui.AddExpenseAction import org.mifospay.widget.ui.AddIncomeAction import org.mifospay.widget.ui.OpenDashboardAction -// ─── KptTheme-aligned ColorProviders ────────────────────────────────────── -// Uses the same lightKptColorScheme / darkKptColorScheme that MifosTheme uses, -// so the widget always stays in sync with the app's colour palette. - private val L = lightKptColorScheme private val D = darkKptColorScheme -private val cpPrimary = ColorProvider(day = L.primary, night = D.primary) -private val cpOnPrimary = ColorProvider(day = L.onPrimary, night = D.onPrimary) -private val cpSurface = ColorProvider(day = L.surface, night = D.surface) -private val cpOnSurface = ColorProvider(day = L.onSurface, night = D.onSurface) -private val cpOnSurfaceVariant = ColorProvider(day = L.onSurfaceVariant, night = D.onSurfaceVariant) -private val cpContainer = ColorProvider(day = L.surfaceContainerHigh, night = D.surfaceContainerHigh) -private val cpOutlineVariant = ColorProvider(day = L.outlineVariant, night = D.outlineVariant) -private val cpPrimaryContainer = ColorProvider(day = L.primaryContainer, night = D.primaryContainer) -private val cpOnPrimaryContainer = ColorProvider(day = L.onPrimaryContainer, night = D.onPrimaryContainer) -private val cpErrorContainer = ColorProvider(day = L.errorContainer, night = D.errorContainer) -private val cpOnErrorContainer = ColorProvider(day = L.onErrorContainer, night = D.onErrorContainer) - -// ────────────────────────────────────────────────────────────────────────── +private val cpPrimary = ColorProvider(day = L.primary, night = D.primary) +private val cpOnPrimary = ColorProvider(day = L.onPrimary, night = D.onPrimary) +private val cpSurface = ColorProvider(day = L.surface, night = D.surface) +private val cpOnSurface = ColorProvider(day = L.onSurface, night = D.onSurface) +private val cpOnSurfaceVariant = ColorProvider(day = L.onSurfaceVariant, night = D.onSurfaceVariant) +private val cpPrimaryContainer = ColorProvider(day = L.primaryContainer, night = D.primaryContainer) +private val cpOnPrimaryContainer = + ColorProvider(day = L.onPrimaryContainer, night = D.onPrimaryContainer) +private val cpErrorContainer = ColorProvider(day = L.errorContainer, night = D.errorContainer) +private val cpOnErrorContainer = ColorProvider(day = L.onErrorContainer, night = D.onErrorContainer) object FinanceGlanceWidget : GlanceAppWidget(), KoinComponent { @@ -96,7 +105,6 @@ private fun UnauthenticatedWidget() { Column( modifier = GlanceModifier.fillMaxSize(), ) { - Text( text = "MifosPay", style = TextStyle( @@ -160,6 +168,7 @@ private fun UnauthenticatedWidget() { } } } + @SuppressLint("RestrictedApi") @Composable private fun ErrorWidget() { @@ -173,7 +182,11 @@ private fun ErrorWidget() { Column(modifier = GlanceModifier.fillMaxSize()) { Text( text = "MifosPay", - style = TextStyle(color = cpPrimary, fontSize = 18.sp, fontWeight = FontWeight.Bold), + style = TextStyle( + color = cpPrimary, + fontSize = 18.sp, + fontWeight = FontWeight.Bold, + ), ) Spacer(GlanceModifier.height(2.dp)) Text( @@ -183,7 +196,11 @@ private fun ErrorWidget() { Spacer(GlanceModifier.height(20.dp)) Text( text = "Failed to fetch balance", - style = TextStyle(color = cpOnSurface, fontSize = 16.sp, fontWeight = FontWeight.Bold), + style = TextStyle( + color = cpOnSurface, + fontSize = 16.sp, + fontWeight = FontWeight.Bold, + ), ) Spacer(GlanceModifier.height(4.dp)) Text( @@ -202,7 +219,11 @@ private fun ErrorWidget() { ) { Text( text = "Open App", - style = TextStyle(color = cpOnPrimary, fontSize = 13.sp, fontWeight = FontWeight.Bold), + style = TextStyle( + color = cpOnPrimary, + fontSize = 13.sp, + fontWeight = FontWeight.Bold, + ), ) } } @@ -224,18 +245,13 @@ private fun FullWidget(data: WidgetData) { .fillMaxSize() .padding(horizontal = 18.dp, vertical = 14.dp), ) { - - // ───────────── Header ───────────── - Row( modifier = GlanceModifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically, ) { - Column( modifier = GlanceModifier.defaultWeight(), ) { - Text( text = "MifosPay", style = TextStyle( @@ -275,8 +291,6 @@ private fun FullWidget(data: WidgetData) { Spacer(GlanceModifier.height(14.dp)) - // ───────────── Balance ───────────── - Text( text = "Available Balance", style = TextStyle( @@ -290,7 +304,6 @@ private fun FullWidget(data: WidgetData) { Row( verticalAlignment = Alignment.Bottom, ) { - Text( text = data.currency, style = TextStyle( @@ -325,12 +338,9 @@ private fun FullWidget(data: WidgetData) { Spacer(GlanceModifier.height(14.dp)) - // ───────────── Actions ───────────── - Row( modifier = GlanceModifier.fillMaxWidth(), ) { - PremiumActionButton( label = "+ Income", fg = cpOnPrimaryContainer, @@ -380,6 +390,7 @@ private fun PremiumActionButton( ) } } + @SuppressLint("RestrictedApi") @Composable private fun CompactWidget(data: WidgetData) { @@ -394,12 +405,10 @@ private fun CompactWidget(data: WidgetData) { Column( modifier = GlanceModifier.fillMaxSize(), ) { - Row( modifier = GlanceModifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically, ) { - Text( text = "MifosPay", style = TextStyle( @@ -463,20 +472,3 @@ private fun CompactWidget(data: WidgetData) { } } } - -@Composable -private fun ChipButton( - label: String, - fg: ColorProvider, - bg: ColorProvider, - action: Action, - modifier: GlanceModifier = GlanceModifier, -) { - Box( - modifier = modifier.height(34.dp).background(bg).cornerRadius(10.dp).clickable(action), - contentAlignment = Alignment.Center, - ) { - Text(text = label, style = TextStyle(color = fg, fontSize = 12.sp, fontWeight = FontWeight.Medium)) - } -} - diff --git a/cmp-android/src/main/kotlin/org/mifospay/widget/FinanceWidgetReceiver.kt b/cmp-android/src/main/kotlin/org/mifospay/widget/FinanceWidgetReceiver.kt index af7094ff8..27dc22726 100644 --- a/cmp-android/src/main/kotlin/org/mifospay/widget/FinanceWidgetReceiver.kt +++ b/cmp-android/src/main/kotlin/org/mifospay/widget/FinanceWidgetReceiver.kt @@ -1,3 +1,12 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ package org.mifospay.widget import android.content.Context @@ -23,4 +32,4 @@ class FinanceWidgetReceiver : super.onDisabled(context) widgetManager.cancel() } -} \ No newline at end of file +} diff --git a/cmp-android/src/main/kotlin/org/mifospay/widget/WidgetDeepLink.kt b/cmp-android/src/main/kotlin/org/mifospay/widget/WidgetDeepLink.kt new file mode 100644 index 000000000..08ddf6ffd --- /dev/null +++ b/cmp-android/src/main/kotlin/org/mifospay/widget/WidgetDeepLink.kt @@ -0,0 +1,18 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ +package org.mifospay.widget + +object WidgetDeepLink { + const val SCHEME = "mifospay" + + const val URI_ADD_INCOME = "$SCHEME://add" + const val URI_ADD_EXPENSE = "$SCHEME://expense" + const val URI_DASHBOARD = "$SCHEME://dashboard" +} diff --git a/cmp-android/src/main/kotlin/org/mifospay/widget/WidgetDeeplink.kt b/cmp-android/src/main/kotlin/org/mifospay/widget/WidgetDeeplink.kt deleted file mode 100644 index 6d9732343..000000000 --- a/cmp-android/src/main/kotlin/org/mifospay/widget/WidgetDeeplink.kt +++ /dev/null @@ -1,21 +0,0 @@ -package org.mifospay.widget - - -/** - * Single source of truth for all widget deep-link URIs. - * - * Referenced by: - * • [org.mifospay.widget.ui.WidgetAction] — fires the Intent - * • Your NavHost composable — registers navDeepLink { uriPattern = ... } - * • AndroidManifest.xml intent-filter — scheme + host only (no query) - * - * Lives in :cmp-shared so the NavHost (which is also in cmp-shared or - * cmp-android) can import it without a circular dependency. - */ -object WidgetDeepLink { - const val SCHEME = "mifospay" - - const val URI_ADD_INCOME = "$SCHEME://add" - const val URI_ADD_EXPENSE = "$SCHEME://expense" - const val URI_DASHBOARD = "$SCHEME://dashboard" -} \ No newline at end of file diff --git a/cmp-android/src/main/kotlin/org/mifospay/widget/WidgetRefreshWorker.kt b/cmp-android/src/main/kotlin/org/mifospay/widget/WidgetRefreshWorker.kt index 04f0800d9..80545b092 100644 --- a/cmp-android/src/main/kotlin/org/mifospay/widget/WidgetRefreshWorker.kt +++ b/cmp-android/src/main/kotlin/org/mifospay/widget/WidgetRefreshWorker.kt @@ -1,22 +1,29 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ package org.mifospay.widget import android.content.Context -import androidx.work.* +import androidx.work.BackoffPolicy +import androidx.work.Constraints +import androidx.work.CoroutineWorker +import androidx.work.ExistingPeriodicWorkPolicy +import androidx.work.NetworkType +import androidx.work.PeriodicWorkRequestBuilder +import androidx.work.WorkManager +import androidx.work.WorkRequest +import androidx.work.WorkerParameters import org.koin.core.component.KoinComponent import org.koin.core.component.inject import org.mifospay.core.data.repository.WidgetManagerRepository import java.util.concurrent.TimeUnit -/** - * WorkManager background refresh worker. - * - * Imports from: - * • androidx.work.* (WorkManager) - * • org.koin.* (DI) - * • org.mifospay.shared.* (:cmp-shared — WidgetSyncCoordinator) - * - * Does NOT import from :core:domain. - */ class WidgetRefreshWorker( context: Context, workerParams: WorkerParameters, @@ -27,20 +34,15 @@ class WidgetRefreshWorker( override suspend fun doWork(): Result { return try { - widgetManager.refresh() Result.success() - } catch (e: Exception) { - Result.retry() } } companion object { - private const val WORK_NAME = "mifospay_widget_refresh_periodic" - private const val MAX_RETRIES = 3 - + private const val WORK_NAME = "mifospay_widget_refresh_periodic" fun schedule(context: Context) { WorkManager.getInstance(context).enqueueUniquePeriodicWork( WORK_NAME, diff --git a/cmp-android/src/main/kotlin/org/mifospay/widget/ui/Actions.kt b/cmp-android/src/main/kotlin/org/mifospay/widget/ui/Actions.kt index 6c6740b80..1a2e6deed 100644 --- a/cmp-android/src/main/kotlin/org/mifospay/widget/ui/Actions.kt +++ b/cmp-android/src/main/kotlin/org/mifospay/widget/ui/Actions.kt @@ -1,11 +1,20 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ package org.mifospay.widget.ui import android.content.Context import android.content.Intent +import androidx.core.net.toUri import androidx.glance.GlanceId import androidx.glance.action.ActionParameters import androidx.glance.appwidget.action.ActionCallback -import androidx.core.net.toUri /** * Glance [ActionCallback] implementations. @@ -34,9 +43,9 @@ private fun Context.launchWidgetAction(action: WidgetAction) { startActivity( Intent(Intent.ACTION_VIEW, action.uri.toUri()).apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK or - Intent.FLAG_ACTIVITY_CLEAR_TOP or - Intent.FLAG_ACTIVITY_SINGLE_TOP + Intent.FLAG_ACTIVITY_CLEAR_TOP or + Intent.FLAG_ACTIVITY_SINGLE_TOP setPackage(packageName) }, ) -} \ No newline at end of file +} diff --git a/cmp-android/src/main/kotlin/org/mifospay/widget/ui/WidgetAction.kt b/cmp-android/src/main/kotlin/org/mifospay/widget/ui/WidgetAction.kt index 58579ff01..fb22d2838 100644 --- a/cmp-android/src/main/kotlin/org/mifospay/widget/ui/WidgetAction.kt +++ b/cmp-android/src/main/kotlin/org/mifospay/widget/ui/WidgetAction.kt @@ -1,3 +1,12 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ package org.mifospay.widget.ui import org.mifospay.widget.WidgetDeepLink @@ -10,4 +19,4 @@ enum class WidgetAction(val uri: String) { ADD_INCOME(WidgetDeepLink.URI_ADD_INCOME), ADD_EXPENSE(WidgetDeepLink.URI_ADD_EXPENSE), OPEN_DASHBOARD(WidgetDeepLink.URI_DASHBOARD), -} \ No newline at end of file +} diff --git a/cmp-android/src/main/res/xml/finance_widget_info.xml b/cmp-android/src/main/res/xml/finance_widget_info.xml index 5a735db5b..8c23637f8 100644 --- a/cmp-android/src/main/res/xml/finance_widget_info.xml +++ b/cmp-android/src/main/res/xml/finance_widget_info.xml @@ -1,3 +1,13 @@ + + null } - @Composable actual fun HandleDeepLinks(navController: NavHostController) { - val context = LocalContext.current + val context = LocalContext.current val activity = context.findActivity() LaunchedEffect(activity?.intent) { val intent = activity?.intent ?: return@LaunchedEffect - val uri = intent.data ?: return@LaunchedEffect + val uri = intent.data ?: return@LaunchedEffect // Store the URI string — no Android type leaks into shared code. // Consumed by RootNavGraph once MAIN_GRAPH composes (post-passcode). @@ -32,4 +40,4 @@ actual fun HandleDeepLinks(navController: NavHostController) { // Clear intent data so rotation doesn't re-trigger this effect. activity.intent = activity.intent.apply { data = null } } -} \ No newline at end of file +} diff --git a/cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.android.kt b/cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/ConsumePendingDeepLink.android.kt similarity index 58% rename from cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.android.kt rename to cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/ConsumePendingDeepLink.android.kt index d75eb377d..18ffe331f 100644 --- a/cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.android.kt +++ b/cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/ConsumePendingDeepLink.android.kt @@ -1,8 +1,17 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ package org.mifospay.shared.navigation import android.content.Intent -import androidx.navigation.NavHostController import androidx.core.net.toUri +import androidx.navigation.NavHostController /** * Android actual — reconstructs an Intent from the stored URI string @@ -12,6 +21,6 @@ import androidx.core.net.toUri */ actual fun consumePendingDeepLink(navController: NavHostController) { val uriString = PendingDeepLinkStore.consume() ?: return - val intent = Intent(Intent.ACTION_VIEW, uriString.toUri()) + val intent = Intent(Intent.ACTION_VIEW, uriString.toUri()) navController.handleDeepLink(intent) } diff --git a/cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/PendingDeepLinkStore.android.kt b/cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/PendingDeepLinkStore.android.kt new file mode 100644 index 000000000..622d6c064 --- /dev/null +++ b/cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/PendingDeepLinkStore.android.kt @@ -0,0 +1,39 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ +package org.mifospay.shared.navigation + +/* + * 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-wallet/blob/master/LICENSE.md + */ + +actual object PendingDeepLinkStore { + + private var pendingUri: String? = null + + actual fun store(uri: String) { + pendingUri = uri + } + + actual fun consume(): String? { + val uri = pendingUri + pendingUri = null + return uri + } + + actual fun clear() { + pendingUri = null + } +} diff --git a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/MifosPayApp.kt b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/MifosPayApp.kt index 4517d8be7..6f9c6ba9f 100644 --- a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/MifosPayApp.kt +++ b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/MifosPayApp.kt @@ -234,4 +234,4 @@ private fun MifosPayApp( @Composable expect fun HandleDeepLinks( navController: NavHostController, -) \ No newline at end of file +) diff --git a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/MifosPayViewModel.kt b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/MifosPayViewModel.kt index 3e390335a..356245aca 100644 --- a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/MifosPayViewModel.kt +++ b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/MifosPayViewModel.kt @@ -21,7 +21,6 @@ import org.mifos.authenticator.passcode.PasscodeStorageAdapter import org.mifospay.core.data.repository.AppLockRepository import org.mifospay.core.data.repository.WidgetManagerRepository import org.mifospay.core.datastore.UserPreferencesRepository -import org.mifospay.core.datastore.WidgetPreferencesDataSource import org.mifospay.core.model.user.UserInfo /** diff --git a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.kt b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/ConsumePendingDeepLink.kt similarity index 74% rename from cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.kt rename to cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/ConsumePendingDeepLink.kt index 44f9bc501..339deda1d 100644 --- a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.kt +++ b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/ConsumePendingDeepLink.kt @@ -1,3 +1,12 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ package org.mifospay.shared.navigation /* @@ -24,4 +33,4 @@ import androidx.navigation.NavHostController * Called once from the MAIN_GRAPH composable in [RootNavGraph], which * only composes after the passcode gate has been cleared. */ -expect fun consumePendingDeepLink(navController: NavHostController) \ No newline at end of file +expect fun consumePendingDeepLink(navController: NavHostController) diff --git a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.kt b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/PendingDeepLinkStore.kt similarity index 75% rename from cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.kt rename to cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/PendingDeepLinkStore.kt index 9b2ccbd1d..d66adc847 100644 --- a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.kt +++ b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/PendingDeepLinkStore.kt @@ -1,3 +1,12 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ package org.mifospay.shared.navigation /* @@ -29,4 +38,4 @@ expect object PendingDeepLinkStore { /** Clear without consuming — call on logout. */ fun clear() -} \ No newline at end of file +} diff --git a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/RootNavGraph.kt b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/RootNavGraph.kt index 553f4045b..62e3e9f04 100644 --- a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/RootNavGraph.kt +++ b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/RootNavGraph.kt @@ -16,7 +16,6 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier -import androidx.compose.ui.text.input.KeyboardType.Companion.Uri import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost @@ -135,7 +134,6 @@ internal fun RootNavGraph( ) composable(MifosNavGraph.MAIN_GRAPH) { - LaunchedEffect(Unit) { consumePendingDeepLink(navHostController) } diff --git a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetDataProvider.kt b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetDataProvider.kt index 57ab23018..b671b1280 100644 --- a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetDataProvider.kt +++ b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetDataProvider.kt @@ -1,3 +1,12 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ package org.mifospay.shared.widget import kotlinx.coroutines.flow.Flow diff --git a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetDataProviderImpl.kt b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetDataProviderImpl.kt index 12aaa7bd5..065d3c62d 100644 --- a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetDataProviderImpl.kt +++ b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetDataProviderImpl.kt @@ -1,3 +1,12 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ package org.mifospay.shared.widget import kotlinx.coroutines.flow.Flow @@ -12,19 +21,17 @@ class WidgetDataProviderImpl( private val widgetRepository: WidgetRepository, ) : WidgetDataProvider { - // Emits Unit whenever invalidate() is called (e.g. after a transfer). private val refreshTrigger = MutableSharedFlow(extraBufferCapacity = 1) override fun invalidate() { refreshTrigger.tryEmit(Unit) } - // Re-fetches balance when token, clientId, defaultAccount, OR a manual refresh changes. override val widgetStateFlow: Flow = combine( userPreferencesRepository.token, userPreferencesRepository.clientId, userPreferencesRepository.defaultAccount, - refreshTrigger.onStart { emit(Unit) }, // seed so combine starts immediately + refreshTrigger.onStart { emit(Unit) }, ) { token, clientId, defaultAccount, _ -> if (token.isNullOrBlank() || clientId == null || defaultAccount == null) { WidgetState.Unauthenticated diff --git a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetState.kt b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetState.kt index 126fc3ea2..9e3127c58 100644 --- a/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetState.kt +++ b/cmp-shared/src/commonMain/kotlin/org/mifospay/shared/widget/WidgetState.kt @@ -1,13 +1,16 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ package org.mifospay.shared.widget import org.mifospay.core.model.widget.WidgetData -/** - * Sealed result returned by [WidgetDataProvider.getWidgetState]. - * - * [FinanceGlanceWidget] switches its entire UI based on this — - * no auth logic lives in the Glance composable itself. - */ sealed interface WidgetState { /** User is not logged in — widget shows a "Sign in" prompt. */ @@ -18,4 +21,4 @@ sealed interface WidgetState { /** Balance fetch failed — widget shows an error prompt. */ data object Error : WidgetState -} \ No newline at end of file +} diff --git a/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/MifosPayApp.ios.kt b/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/MifosPayApp.ios.kt deleted file mode 100644 index bb0d82cdd..000000000 --- a/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/MifosPayApp.ios.kt +++ /dev/null @@ -1,8 +0,0 @@ -package org.mifospay.shared - -import androidx.compose.runtime.Composable -import androidx.navigation.NavHostController - -@Composable -actual fun HandleDeepLinks(navController: NavHostController) { -} \ No newline at end of file diff --git a/cmp-shared/src/iosMain/kotlin/MifosViewController.kt b/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/MifosViewController.kt similarity index 96% rename from cmp-shared/src/iosMain/kotlin/MifosViewController.kt rename to cmp-shared/src/iosMain/kotlin/org/mifospay/shared/MifosViewController.kt index 721eec335..d034695f6 100644 --- a/cmp-shared/src/iosMain/kotlin/MifosViewController.kt +++ b/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/MifosViewController.kt @@ -7,8 +7,9 @@ * * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ +package org.mifospay.shared + import androidx.compose.ui.window.ComposeUIViewController -import org.mifospay.shared.MifosPaySharedApp import org.mifospay.shared.di.initKoin import platform.Foundation.NSUserDefaults diff --git a/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.ios.kt b/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.ios.kt deleted file mode 100644 index c248863ab..000000000 --- a/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.ios.kt +++ /dev/null @@ -1,13 +0,0 @@ -package org.mifospay.shared.navigation - -actual object PendingDeepLinkStore { - actual fun store(uri: String) { - } - - actual fun consume(): String? { - TODO("Not yet implemented") - } - - actual fun clear() { - } -} \ No newline at end of file diff --git a/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.ios.kt b/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.ios.kt deleted file mode 100644 index fa039ce11..000000000 --- a/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/navigation/consumePendingDeepLink.ios.kt +++ /dev/null @@ -1,7 +0,0 @@ -package org.mifospay.shared.navigation - -import androidx.navigation.NavHostController - -actual fun consumePendingDeepLink(navController: NavHostController) { - // TODO -} \ No newline at end of file diff --git a/cmp-shared/src/nonAndroidMain/kotlin/org/mifospay/shared/MifosPayApp.nonAndroid.kt b/cmp-shared/src/nonAndroidMain/kotlin/org/mifospay/shared/MifosPayApp.nonAndroid.kt new file mode 100644 index 000000000..21bd5689d --- /dev/null +++ b/cmp-shared/src/nonAndroidMain/kotlin/org/mifospay/shared/MifosPayApp.nonAndroid.kt @@ -0,0 +1,14 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ +package org.mifospay.shared + +@androidx.compose.runtime.Composable +actual fun HandleDeepLinks(navController: androidx.navigation.NavHostController) { +} diff --git a/cmp-shared/src/nonAndroidMain/kotlin/org/mifospay/shared/navigation/ConsumePendingDeepLink.nonAndroid.kt b/cmp-shared/src/nonAndroidMain/kotlin/org/mifospay/shared/navigation/ConsumePendingDeepLink.nonAndroid.kt new file mode 100644 index 000000000..88b6e2ed0 --- /dev/null +++ b/cmp-shared/src/nonAndroidMain/kotlin/org/mifospay/shared/navigation/ConsumePendingDeepLink.nonAndroid.kt @@ -0,0 +1,15 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ +package org.mifospay.shared.navigation + +import androidx.navigation.NavHostController + +actual fun consumePendingDeepLink(navController: NavHostController) { +} diff --git a/cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.android.kt b/cmp-shared/src/nonAndroidMain/kotlin/org/mifospay/shared/navigation/PendingDeepLinkStore.nonAndroid.kt similarity index 70% rename from cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.android.kt rename to cmp-shared/src/nonAndroidMain/kotlin/org/mifospay/shared/navigation/PendingDeepLinkStore.nonAndroid.kt index 296cb3a62..b353701b5 100644 --- a/cmp-shared/src/androidMain/kotlin/org/mifospay/shared/navigation/PendingDeeplinkStore.android.kt +++ b/cmp-shared/src/nonAndroidMain/kotlin/org/mifospay/shared/navigation/PendingDeepLinkStore.nonAndroid.kt @@ -1,7 +1,5 @@ -package org.mifospay.shared.navigation - /* - * Copyright 2024 Mifos Initiative + * Copyright 2026 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 @@ -9,22 +7,16 @@ package org.mifospay.shared.navigation * * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ +package org.mifospay.shared.navigation actual object PendingDeepLinkStore { - - private var pendingUri: String? = null - actual fun store(uri: String) { - pendingUri = uri } actual fun consume(): String? { - val uri = pendingUri - pendingUri = null - return uri + TODO("Not yet implemented") } actual fun clear() { - pendingUri = null } } diff --git a/core/data/src/commonMain/kotlin/org/mifospay/core/data/di/RepositoryModule.kt b/core/data/src/commonMain/kotlin/org/mifospay/core/data/di/RepositoryModule.kt index 20ef372b4..ee4f42417 100644 --- a/core/data/src/commonMain/kotlin/org/mifospay/core/data/di/RepositoryModule.kt +++ b/core/data/src/commonMain/kotlin/org/mifospay/core/data/di/RepositoryModule.kt @@ -160,16 +160,15 @@ val RepositoryModule = module { single { WidgetManagerRepositoryImpl( repository = get(), - widgetSyncService = get() + widgetSyncService = get(), ) } single { WidgetRepositoryImpl( accountRepository = get(), - widgetDataSource = get(), + widgetDataSource = get(), userPreferencesRepository = get(), - ioDispatcher = get(ioDispatcher), + ioDispatcher = get(ioDispatcher), ) } - } diff --git a/core/data/src/commonMain/kotlin/org/mifospay/core/data/mapper/WidgetMapper.kt b/core/data/src/commonMain/kotlin/org/mifospay/core/data/mapper/WidgetMapper.kt deleted file mode 100644 index d57f5f7ac..000000000 --- a/core/data/src/commonMain/kotlin/org/mifospay/core/data/mapper/WidgetMapper.kt +++ /dev/null @@ -1,49 +0,0 @@ -package org.mifospay.core.data.mapper - -import org.mifospay.core.model.widget.WidgetData -import kotlin.time.Clock -import kotlin.time.ExperimentalTime - -/** - * Mapper that converts your existing financial domain objects into [WidgetData]. - * - * Lives in :core:data/mapper — same home as other mappers in the project. - * - * Replace the field names below with your actual Account / Balance / Budget - * domain classes. The mapper keeps [WidgetData] decoupled from your financial - * domain — it only knows what the widget needs to render. - * - * Example call from a ViewModel or UseCase: - * - * val widgetData = WidgetDataMapper.from( - * balance = account.balance, - * currency = account.currency, - * budgetTotal = budget.totalAmount, - * budgetSpent = budget.spentAmount, - * lastIncome = lastTransaction.takeIf { it.isCredit }?.amount ?: 0.0, - * lastExpense = lastTransaction.takeIf { it.isDebit }?.amount ?: 0.0, - * userName = client.displayName, - * ) - */ -object WidgetDataMapper { - @OptIn(ExperimentalTime::class) - fun from( - balance: Double, - currency: String, - budgetTotal: Double, - budgetSpent: Double, - lastIncome: Double, - lastExpense: Double, - userName: String, - timestampMs: Long = Clock.System.now().toEpochMilliseconds(), - ): WidgetData = WidgetData( - currentBalance = balance, - currency = currency, - budgetTotal = budgetTotal, - budgetSpent = budgetSpent, - lastIncome = lastIncome, - lastExpense = lastExpense, - lastUpdatedMs = timestampMs, - userName = userName, - ) -} \ No newline at end of file diff --git a/core/data/src/commonMain/kotlin/org/mifospay/core/data/repository/WidgetManagerRepository.kt b/core/data/src/commonMain/kotlin/org/mifospay/core/data/repository/WidgetManagerRepository.kt index 3626170e7..7e516680d 100644 --- a/core/data/src/commonMain/kotlin/org/mifospay/core/data/repository/WidgetManagerRepository.kt +++ b/core/data/src/commonMain/kotlin/org/mifospay/core/data/repository/WidgetManagerRepository.kt @@ -1,3 +1,12 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ package org.mifospay.core.data.repository import org.mifospay.core.model.widget.WidgetData @@ -12,4 +21,4 @@ interface WidgetManagerRepository { fun schedule() fun cancel() -} \ No newline at end of file +} diff --git a/core/data/src/commonMain/kotlin/org/mifospay/core/data/repository/WidgetRepository.kt b/core/data/src/commonMain/kotlin/org/mifospay/core/data/repository/WidgetRepository.kt index 01cede451..145e1bb47 100644 --- a/core/data/src/commonMain/kotlin/org/mifospay/core/data/repository/WidgetRepository.kt +++ b/core/data/src/commonMain/kotlin/org/mifospay/core/data/repository/WidgetRepository.kt @@ -1,3 +1,12 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ package org.mifospay.core.data.repository import kotlinx.coroutines.flow.Flow diff --git a/core/data/src/commonMain/kotlin/org/mifospay/core/data/repositoryImpl/WidgetManagerRepositoryImpl.kt b/core/data/src/commonMain/kotlin/org/mifospay/core/data/repositoryImpl/WidgetManagerRepositoryImpl.kt index dd7b29ec1..d40705e6f 100644 --- a/core/data/src/commonMain/kotlin/org/mifospay/core/data/repositoryImpl/WidgetManagerRepositoryImpl.kt +++ b/core/data/src/commonMain/kotlin/org/mifospay/core/data/repositoryImpl/WidgetManagerRepositoryImpl.kt @@ -1,3 +1,12 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ package org.mifospay.core.data.repositoryImpl import org.mifospay.core.data.repository.WidgetManagerRepository @@ -15,7 +24,6 @@ class WidgetManagerRepositoryImpl( } override suspend fun update(data: WidgetData) { - repository.saveWidgetData(data) widgetSyncService.refreshWidget() } @@ -32,4 +40,4 @@ class WidgetManagerRepositoryImpl( override fun cancel() { widgetSyncService.cancelPeriodicSync() } -} \ No newline at end of file +} diff --git a/core/data/src/commonMain/kotlin/org/mifospay/core/data/repositoryImpl/WidgetRepositoryImpl.kt b/core/data/src/commonMain/kotlin/org/mifospay/core/data/repositoryImpl/WidgetRepositoryImpl.kt index 0f01496f1..52f14ea24 100644 --- a/core/data/src/commonMain/kotlin/org/mifospay/core/data/repositoryImpl/WidgetRepositoryImpl.kt +++ b/core/data/src/commonMain/kotlin/org/mifospay/core/data/repositoryImpl/WidgetRepositoryImpl.kt @@ -1,3 +1,12 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ package org.mifospay.core.data.repositoryImpl import kotlinx.coroutines.CoroutineDispatcher @@ -8,7 +17,7 @@ import org.mifospay.core.common.DataState import org.mifospay.core.data.repository.AccountRepository import org.mifospay.core.data.repository.WidgetRepository import org.mifospay.core.datastore.UserPreferencesRepository -import org.mifospay.core.datastore.WidgetPreferencesDataSource +import org.mifospay.core.datastore.WidgetPreferenceDataSource import org.mifospay.core.model.widget.WidgetData /** @@ -19,10 +28,10 @@ import org.mifospay.core.model.widget.WidgetData * - Flow methods apply [flowOn] at the end of the chain * - Suspend methods wrap the call body in [withContext] * - * Thin delegation layer — all real persistence is in [WidgetPreferencesDataSource]. + * Thin delegation layer — all real persistence is in [WidgetPreferenceDataSource]. */ class WidgetRepositoryImpl( - private val widgetDataSource: WidgetPreferencesDataSource, + private val widgetDataSource: WidgetPreferenceDataSource, private val userPreferencesRepository: UserPreferencesRepository, private val accountRepository: AccountRepository, private val ioDispatcher: CoroutineDispatcher, @@ -33,7 +42,6 @@ class WidgetRepositoryImpl( override suspend fun getWidgetData(): WidgetData = withContext(ioDispatcher) { - val widgetData = widgetDataSource.widgetData.value val defaultAccountId = userPreferencesRepository.defaultAccount.value?.accountId diff --git a/core/data/src/commonMain/kotlin/org/mifospay/core/data/util/WidgetSyncService.kt b/core/data/src/commonMain/kotlin/org/mifospay/core/data/util/WidgetSyncService.kt index 7eaf6b38b..a1122a3dc 100644 --- a/core/data/src/commonMain/kotlin/org/mifospay/core/data/util/WidgetSyncService.kt +++ b/core/data/src/commonMain/kotlin/org/mifospay/core/data/util/WidgetSyncService.kt @@ -1,3 +1,12 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ package org.mifospay.core.data.util import org.mifospay.core.model.widget.WidgetData @@ -29,4 +38,4 @@ interface WidgetSyncService { /** Cancel periodic background refresh (call when last widget instance is removed). */ fun cancelPeriodicSync() -} \ No newline at end of file +} diff --git a/core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/WidgetPrefernceDataSource.kt b/core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/WidgetPreferenceDataSource.kt similarity index 72% rename from core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/WidgetPrefernceDataSource.kt rename to core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/WidgetPreferenceDataSource.kt index edf8f9fbf..def7bf503 100644 --- a/core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/WidgetPrefernceDataSource.kt +++ b/core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/WidgetPreferenceDataSource.kt @@ -1,3 +1,12 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ @file:OptIn(ExperimentalSerializationApi::class, ExperimentalSettingsApi::class) package org.mifospay.core.datastore @@ -17,27 +26,16 @@ import org.mifospay.core.model.widget.WidgetData private const val WIDGET_DATA_KEY = "widget_data" -/** - * Persistence layer for home screen widget data. - * - * Follows the same pattern as [UserPreferencesDataSource]: - * - [encodeValue] / [decodeValue] for kotlinx.serialization integration - * - [MutableStateFlow] seeded from storage on construction - * - All writes run on [dispatcher] via [withContext] - * - Private [Settings] extension functions per stored type - * - * Lives in :core:datastore alongside [UserPreferencesDataSource]. - */ -class WidgetPreferencesDataSource( +class WidgetPreferenceDataSource( private val settings: Settings, private val dispatcher: CoroutineDispatcher, ) { private val _widgetData = MutableStateFlow( settings.decodeValue( key = WIDGET_DATA_KEY, - serializer = WidgetData.serializer(), + serializer = WidgetData.serializer(), defaultValue = settings.decodeValueOrNull( - key = WIDGET_DATA_KEY, + key = WIDGET_DATA_KEY, serializer = WidgetData.serializer(), ) ?: WidgetData.DEFAULT, ), @@ -62,8 +60,8 @@ class WidgetPreferencesDataSource( private fun Settings.putWidgetData(data: WidgetData) { encodeValue( - key = WIDGET_DATA_KEY, + key = WIDGET_DATA_KEY, serializer = WidgetData.serializer(), - value = data, + value = data, ) -} \ No newline at end of file +} diff --git a/core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/di/PreferenceModule.kt b/core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/di/PreferenceModule.kt index 12de283ea..56ab6d70b 100644 --- a/core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/di/PreferenceModule.kt +++ b/core/datastore/src/commonMain/kotlin/org/mifospay/core/datastore/di/PreferenceModule.kt @@ -25,7 +25,7 @@ import org.mifospay.core.datastore.BillerRepositoryImpl import org.mifospay.core.datastore.UserPreferencesDataSource import org.mifospay.core.datastore.UserPreferencesRepository import org.mifospay.core.datastore.UserPreferencesRepositoryImpl -import org.mifospay.core.datastore.WidgetPreferencesDataSource +import org.mifospay.core.datastore.WidgetPreferenceDataSource val PreferencesModule = module { factory { Settings() } @@ -64,10 +64,9 @@ val PreferencesModule = module { } factory { - WidgetPreferencesDataSource( + WidgetPreferenceDataSource( settings = get(), - dispatcher = get(named(MifosDispatchers.IO.name)) + dispatcher = get(named(MifosDispatchers.IO.name)), ) } - } diff --git a/core/model/src/commonMain/kotlin/org/mifospay/core/model/widget/WidgetData.kt b/core/model/src/commonMain/kotlin/org/mifospay/core/model/widget/WidgetData.kt index d28473ff7..e737dc3ed 100644 --- a/core/model/src/commonMain/kotlin/org/mifospay/core/model/widget/WidgetData.kt +++ b/core/model/src/commonMain/kotlin/org/mifospay/core/model/widget/WidgetData.kt @@ -1,3 +1,12 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ package org.mifospay.core.model.widget import kotlinx.serialization.Serializable @@ -27,12 +36,15 @@ data class WidgetData( get() = (budgetTotal - budgetSpent).coerceAtLeast(0.0) val budgetUsedFraction: Float - get() = if (budgetTotal <= 0.0) 0f - else (budgetSpent / budgetTotal).toFloat().coerceIn(0f, 1f) + get() = if (budgetTotal <= 0.0) { + 0f + } else { + (budgetSpent / budgetTotal).toFloat().coerceIn(0f, 1f) + } val isBudgetCritical: Boolean get() = budgetUsedFraction >= 0.85f - val isBudgetWarning: Boolean get() = budgetUsedFraction >= 0.65f - val hasBudget: Boolean get() = budgetTotal > 0.0 + val isBudgetWarning: Boolean get() = budgetUsedFraction >= 0.65f + val hasBudget: Boolean get() = budgetTotal > 0.0 companion object { val DEFAULT = WidgetData() diff --git a/feature/home/src/commonMain/kotlin/org/mifospay/feature/home/navigation/HomeNavigation.kt b/feature/home/src/commonMain/kotlin/org/mifospay/feature/home/navigation/HomeNavigation.kt index 3d4a16a48..d12212e8b 100644 --- a/feature/home/src/commonMain/kotlin/org/mifospay/feature/home/navigation/HomeNavigation.kt +++ b/feature/home/src/commonMain/kotlin/org/mifospay/feature/home/navigation/HomeNavigation.kt @@ -29,7 +29,8 @@ fun NavGraphBuilder.homeScreen( navigateToAccountDetail: (Long) -> Unit, navigateToHistory: () -> Unit, ) { - composable(route = HOME_ROUTE, + composable( + route = HOME_ROUTE, deepLinks = listOf( navDeepLink { uriPattern = "mifospay://dashboard" From 1d06df39a6c39215b00a82af4c9420a3ddc82901 Mon Sep 17 00:00:00 2001 From: nagarjuna Date: Tue, 16 Jun 2026 23:05:07 +0530 Subject: [PATCH 3/9] refactor: clean up --- cmp-android/build.gradle.kts | 1 - gradle/libs.versions.toml | 2 -- 2 files changed, 3 deletions(-) diff --git a/cmp-android/build.gradle.kts b/cmp-android/build.gradle.kts index e6892ebd0..77d772227 100644 --- a/cmp-android/build.gradle.kts +++ b/cmp-android/build.gradle.kts @@ -80,7 +80,6 @@ android { } dependencies { - implementation(libs.androidx.runtime) implementation(projects.cmpShared) implementation(projects.core.data) implementation(projects.core.ui) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ca65a153f..00a8daf5a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -137,7 +137,6 @@ packageVersion = "1.0.0" mifosAuthenticatorPasscode="2.3.0-beta" mifosAuthenticatorBiometrics="2.3.0-beta" -runtime = "1.11.2" [libraries] accompanist-pager = { group = "com.google.accompanist", name = "accompanist-pager", version.ref = "accompanist" } @@ -389,7 +388,6 @@ core-ktx = { group = "androidx.test", name = "core-ktx", version.ref = "coreKtx" mifos-authenticator-passcode = {group="io.github.openmf", name="mifos-authenticator-passcode", version.ref="mifosAuthenticatorPasscode"} mifos-authenticator-biometrics = {group="io.github.openmf", name="mifos-authenticator-biometrics", version.ref="mifosAuthenticatorBiometrics"} -androidx-runtime = { group = "androidx.compose.runtime", name = "runtime", version.ref = "runtime" } [bundles] androidx-compose-ui-test = [ From 736ed8206d3af5e200b602504c187d056ff13e8c Mon Sep 17 00:00:00 2001 From: nagarjuna Date: Tue, 16 Jun 2026 23:09:52 +0530 Subject: [PATCH 4/9] fix: checks --- .../prodReleaseRuntimeClasspath.tree.txt | 108 +++++++++++++++++- .../prodReleaseRuntimeClasspath.txt | 14 +++ 2 files changed, 120 insertions(+), 2 deletions(-) diff --git a/cmp-android/dependencies/prodReleaseRuntimeClasspath.tree.txt b/cmp-android/dependencies/prodReleaseRuntimeClasspath.tree.txt index 35bfb8979..7e71783f6 100644 --- a/cmp-android/dependencies/prodReleaseRuntimeClasspath.tree.txt +++ b/cmp-android/dependencies/prodReleaseRuntimeClasspath.tree.txt @@ -621,6 +621,8 @@ | +--- androidx.compose.ui:ui-tooling-preview:1.10.0 -> 1.10.2 (c) | +--- androidx.compose.runtime:runtime-saveable:1.10.0 -> 1.10.2 (c) | +--- androidx.compose.ui:ui:1.10.0 -> 1.10.2 (c) +| +--- androidx.compose.ui:ui-graphics:1.10.0 -> 1.10.2 (c) +| +--- androidx.compose.ui:ui-unit:1.10.0 -> 1.10.2 (c) | +--- androidx.compose.material3:material3-android:1.4.0 (c) | +--- androidx.compose.material3.adaptive:adaptive-android:1.2.0 (c) | +--- androidx.compose.material3.adaptive:adaptive-layout-android:1.2.0 (c) @@ -643,8 +645,6 @@ | +--- androidx.compose.material3:material3-adaptive-navigation-suite:1.4.0 (c) | +--- androidx.compose.runtime:runtime-android:1.10.0 -> 1.10.2 (c) | +--- androidx.compose.ui:ui-android:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.ui:ui-graphics:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.ui:ui-unit:1.10.0 -> 1.10.2 (c) | +--- androidx.compose.runtime:runtime-retain-android:1.10.0 -> 1.10.2 (c) | +--- androidx.compose.runtime:runtime-annotation:1.10.0 -> 1.10.2 (c) | +--- androidx.compose.material:material-android:1.10.0 (c) @@ -956,6 +956,7 @@ | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (c) | | +--- io.insert-koin:koin-android:4.1.1 (c) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (c) +| | +--- io.insert-koin:koin-androidx-workmanager:4.1.1 (c) | | +--- io.insert-koin:koin-compose:4.1.1 (c) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (c) | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (c) @@ -3518,4 +3519,107 @@ +--- io.insert-koin:koin-android:4.1.1 (*) +--- io.insert-koin:koin-compose:4.1.1 (*) +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) ++--- androidx.glance:glance-appwidget:1.1.0 +| +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| +--- androidx.compose.runtime:runtime:1.1.1 -> 1.10.2 (*) +| +--- androidx.compose.ui:ui-graphics:1.1.1 -> 1.10.2 (*) +| +--- androidx.compose.ui:ui-unit:1.1.1 -> 1.10.2 (*) +| +--- androidx.core:core-ktx:1.7.0 -> 1.17.0 (*) +| +--- androidx.core:core-remoteviews:1.1.0 +| | +--- androidx.annotation:annotation:1.2.0 -> 1.9.1 (*) +| | +--- androidx.core:core:1.8.0 -> 1.17.0 (*) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) +| +--- androidx.datastore:datastore:1.0.0 -> 1.1.7 (*) +| +--- androidx.datastore:datastore-core:1.0.0 -> 1.1.7 (*) +| +--- androidx.datastore:datastore-preferences:1.0.0 -> 1.1.7 (*) +| +--- androidx.datastore:datastore-preferences-core:1.0.0 -> 1.1.7 (*) +| +--- androidx.glance:glance:1.1.0 +| | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | +--- androidx.annotation:annotation:1.2.0 -> 1.9.1 (*) +| | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.5.1 (*) +| | +--- androidx.compose.runtime:runtime:1.2.1 -> 1.10.2 (*) +| | +--- androidx.compose.ui:ui-graphics:1.1.1 -> 1.10.2 (*) +| | +--- androidx.compose.ui:ui-unit:1.1.1 -> 1.10.2 (*) +| | +--- androidx.concurrent:concurrent-futures-ktx:1.1.0 (*) +| | +--- androidx.datastore:datastore-core:1.0.0 -> 1.1.7 (*) +| | +--- androidx.datastore:datastore-preferences:1.0.0 -> 1.1.7 (*) +| | +--- androidx.datastore:datastore-preferences-core:1.0.0 -> 1.1.7 (*) +| | +--- androidx.work:work-runtime:2.7.1 -> 2.10.3 +| | | +--- androidx.annotation:annotation-experimental:1.4.1 -> 1.5.1 (*) +| | | +--- androidx.concurrent:concurrent-futures-ktx:1.1.0 (*) +| | | +--- androidx.core:core:1.12.0 -> 1.17.0 (*) +| | | +--- androidx.lifecycle:lifecycle-livedata:2.6.2 -> 2.9.4 (*) +| | | +--- androidx.lifecycle:lifecycle-service:2.6.2 -> 2.9.4 (*) +| | | +--- androidx.room:room-ktx:2.6.1 +| | | | +--- androidx.room:room-common:2.6.1 +| | | | | +--- androidx.annotation:annotation:1.3.0 -> 1.9.1 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 (*) +| | | | | +--- androidx.room:room-ktx:2.6.1 (c) +| | | | | \--- androidx.room:room-runtime:2.6.1 (c) +| | | | +--- androidx.room:room-runtime:2.6.1 +| | | | | +--- androidx.annotation:annotation-experimental:1.1.0-rc01 -> 1.5.1 (*) +| | | | | +--- androidx.arch.core:core-runtime:2.2.0 (*) +| | | | | +--- androidx.room:room-common:2.6.1 (*) +| | | | | +--- androidx.sqlite:sqlite:2.4.0 +| | | | | | +--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) +| | | | | | \--- androidx.sqlite:sqlite-framework:2.4.0 (c) +| | | | | +--- androidx.sqlite:sqlite-framework:2.4.0 +| | | | | | +--- androidx.annotation:annotation:1.2.0 -> 1.9.1 (*) +| | | | | | +--- androidx.sqlite:sqlite:2.4.0 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) +| | | | | | \--- androidx.sqlite:sqlite:2.4.0 (c) +| | | | | +--- androidx.room:room-common:2.6.1 (c) +| | | | | \--- androidx.room:room-ktx:2.6.1 (c) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1 -> 1.10.2 (*) +| | | | +--- androidx.room:room-common:2.6.1 (c) +| | | | \--- androidx.room:room-runtime:2.6.1 (c) +| | | +--- androidx.startup:startup-runtime:1.1.1 -> 1.2.0 (*) +| | | +--- androidx.tracing:tracing-ktx:1.2.0 -> 1.3.0 (*) +| | | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava +| | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.10.2 (*) +| | | +--- androidx.work:work-runtime-ktx:2.10.3 (c) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (c) +| | +--- androidx.work:work-runtime-ktx:2.7.1 -> 2.10.3 +| | | +--- androidx.work:work-runtime:2.10.3 (*) +| | | \--- androidx.work:work-runtime:2.10.3 (c) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) +| | +--- androidx.glance:glance-appwidget:1.1.0 (c) +| | +--- androidx.glance:glance-appwidget-proto:1.1.0 (c) +| | +--- androidx.glance:glance-material3:1.1.0 (c) +| | \--- androidx.glance:glance-appwidget-external-protobuf:1.1.0 (c) +| +--- androidx.glance:glance-appwidget-proto:1.1.0 +| | +--- androidx.glance:glance-appwidget-external-protobuf:1.1.0 +| | | +--- androidx.glance:glance:1.1.0 (c) +| | | +--- androidx.glance:glance-appwidget:1.1.0 (c) +| | | +--- androidx.glance:glance-appwidget-proto:1.1.0 (c) +| | | \--- androidx.glance:glance-material3:1.1.0 (c) +| | +--- androidx.glance:glance:1.1.0 (c) +| | +--- androidx.glance:glance-appwidget:1.1.0 (c) +| | +--- androidx.glance:glance-appwidget-external-protobuf:1.1.0 (c) +| | \--- androidx.glance:glance-material3:1.1.0 (c) +| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) +| +--- androidx.glance:glance:1.1.0 (c) +| +--- androidx.glance:glance-appwidget-proto:1.1.0 (c) +| +--- androidx.glance:glance-material3:1.1.0 (c) +| \--- androidx.glance:glance-appwidget-external-protobuf:1.1.0 (c) ++--- androidx.glance:glance-material3:1.1.0 +| +--- androidx.annotation:annotation:1.4.0 -> 1.9.1 (*) +| +--- androidx.compose.material3:material3:1.0.0 -> 1.4.0 (*) +| +--- androidx.compose.runtime:runtime:1.1.1 -> 1.10.2 (*) +| +--- androidx.core:core:1.12.0 -> 1.17.0 (*) +| +--- androidx.glance:glance:1.1.0 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) +| +--- androidx.glance:glance:1.1.0 (c) +| +--- androidx.glance:glance-appwidget:1.1.0 (c) +| +--- androidx.glance:glance-appwidget-proto:1.1.0 (c) +| \--- androidx.glance:glance-appwidget-external-protobuf:1.1.0 (c) ++--- androidx.work:work-runtime-ktx:2.9.1 -> 2.10.3 (*) ++--- io.insert-koin:koin-android:3.5.6 -> 4.1.1 (*) ++--- io.insert-koin:koin-androidx-workmanager:3.5.6 -> 4.1.1 +| +--- io.insert-koin:koin-android:4.1.1 (*) +| +--- androidx.work:work-runtime-ktx:2.10.3 (*) +| \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.2.21 (*) \--- androidx.compose.runtime:runtime -> 1.10.2 (*) diff --git a/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt b/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt index 65f8d0fa7..145e3a43c 100644 --- a/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt +++ b/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt @@ -118,6 +118,7 @@ androidx.compose:compose-bom:2025.12.01 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 androidx.core:core-ktx:1.17.0 +androidx.core:core-remoteviews:1.1.0 androidx.core:core-splashscreen:1.2.0 androidx.core:core-viewtree:1.0.0 androidx.core:core:1.17.0 @@ -151,6 +152,11 @@ androidx.emoji2:emoji2:1.4.0 androidx.exifinterface:exifinterface:1.4.1 androidx.fragment:fragment-ktx:1.8.9 androidx.fragment:fragment:1.8.9 +androidx.glance:glance-appwidget-external-protobuf:1.1.0 +androidx.glance:glance-appwidget-proto:1.1.0 +androidx.glance:glance-appwidget:1.1.0 +androidx.glance:glance-material3:1.1.0 +androidx.glance:glance:1.1.0 androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 @@ -196,12 +202,17 @@ androidx.privacysandbox.ads:ads-adservices-java:1.1.0-beta11 androidx.privacysandbox.ads:ads-adservices:1.1.0-beta11 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-android:1.4.0 androidx.savedstate:savedstate-compose-android:1.4.0 androidx.savedstate:savedstate-compose:1.4.0 androidx.savedstate:savedstate-ktx:1.4.0 androidx.savedstate:savedstate:1.4.0 androidx.slidingpanelayout:slidingpanelayout:1.2.0 +androidx.sqlite:sqlite-framework:2.4.0 +androidx.sqlite:sqlite:2.4.0 androidx.startup:startup-runtime:1.2.0 androidx.tracing:tracing-android:1.3.0 androidx.tracing:tracing-ktx:1.3.0 @@ -215,6 +226,8 @@ androidx.viewpager:viewpager:1.0.0 androidx.window:window-core-android:1.5.0 androidx.window:window-core:1.5.0 androidx.window:window:1.5.0 +androidx.work:work-runtime-ktx:2.10.3 +androidx.work:work-runtime:2.10.3 co.touchlab:kermit-android:2.0.8 co.touchlab:kermit-core-android:2.0.8 co.touchlab:kermit-core:2.0.8 @@ -359,6 +372,7 @@ io.github.vinceglb:filekit-dialogs:0.12.0 io.insert-koin:koin-android:4.1.1 io.insert-koin:koin-androidx-compose:4.1.1 io.insert-koin:koin-androidx-navigation:4.1.1 +io.insert-koin:koin-androidx-workmanager:4.1.1 io.insert-koin:koin-annotations-jvm:2.1.0 io.insert-koin:koin-annotations:2.1.0 io.insert-koin:koin-bom:4.1.1 From d18fc525713ac7228a9e1807393747ef5b6563ea Mon Sep 17 00:00:00 2001 From: nagarjuna Date: Wed, 17 Jun 2026 10:16:10 +0530 Subject: [PATCH 5/9] fix: ios build --- .../{org/mifospay/shared => }/MifosViewController.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) rename cmp-shared/src/iosMain/kotlin/{org/mifospay/shared => }/MifosViewController.kt (82%) diff --git a/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/MifosViewController.kt b/cmp-shared/src/iosMain/kotlin/MifosViewController.kt similarity index 82% rename from cmp-shared/src/iosMain/kotlin/org/mifospay/shared/MifosViewController.kt rename to cmp-shared/src/iosMain/kotlin/MifosViewController.kt index d034695f6..972bf3e1f 100644 --- a/cmp-shared/src/iosMain/kotlin/org/mifospay/shared/MifosViewController.kt +++ b/cmp-shared/src/iosMain/kotlin/MifosViewController.kt @@ -7,9 +7,9 @@ * * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ -package org.mifospay.shared import androidx.compose.ui.window.ComposeUIViewController +import org.mifospay.shared.MifosPaySharedApp import org.mifospay.shared.di.initKoin import platform.Foundation.NSUserDefaults @@ -23,7 +23,10 @@ fun MifosViewController() = ComposeUIViewController( handleAppLocale = { languageTag -> if (languageTag != null) { // Set specific language - NSUserDefaults.standardUserDefaults.setObject(listOf(languageTag), forKey = "AppleLanguages") + NSUserDefaults.standardUserDefaults.setObject( + listOf(languageTag), + forKey = "AppleLanguages" + ) } else { // System Default: remove app-specific language setting NSUserDefaults.standardUserDefaults.removeObjectForKey("AppleLanguages") From 04746269167b6acbe2b70e7a5346632a24a76b5a Mon Sep 17 00:00:00 2001 From: nagarjuna Date: Wed, 17 Jun 2026 10:19:52 +0530 Subject: [PATCH 6/9] fix: checks --- cmp-shared/src/iosMain/kotlin/MifosViewController.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cmp-shared/src/iosMain/kotlin/MifosViewController.kt b/cmp-shared/src/iosMain/kotlin/MifosViewController.kt index 972bf3e1f..d57c47d56 100644 --- a/cmp-shared/src/iosMain/kotlin/MifosViewController.kt +++ b/cmp-shared/src/iosMain/kotlin/MifosViewController.kt @@ -7,7 +7,6 @@ * * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ - import androidx.compose.ui.window.ComposeUIViewController import org.mifospay.shared.MifosPaySharedApp import org.mifospay.shared.di.initKoin @@ -25,7 +24,7 @@ fun MifosViewController() = ComposeUIViewController( // Set specific language NSUserDefaults.standardUserDefaults.setObject( listOf(languageTag), - forKey = "AppleLanguages" + forKey = "AppleLanguages", ) } else { // System Default: remove app-specific language setting From 2526ac4bde61672d2044dd6b16a3371fdaef30be Mon Sep 17 00:00:00 2001 From: nagarjuna Date: Wed, 24 Jun 2026 00:42:46 +0530 Subject: [PATCH 7/9] feat: pie charts for income and expenses --- core/ui/build.gradle.kts | 23 ++++ .../ui/MifosIncomeExpenseVisual.android.kt | 116 ++++++++++++++++++ .../core/ui/MifosIncomeExpenseVisual.kt | 57 +++++++++ .../ui/MifosIncomeExpenseVisual.desktop.kt | 116 ++++++++++++++++++ .../core/ui/MifosIncomeExpenseVisual.js.kt | 116 ++++++++++++++++++ .../ui/MifosIncomeExpenseVisual.native.kt | 16 +++ .../ui/MifosIncomeExpenseVisual.wasmJs.kt | 116 ++++++++++++++++++ .../mifospay/feature/history/HistoryScreen.kt | 20 ++- .../feature/history/HistoryViewModel.kt | 22 ++++ gradle/libs.versions.toml | 6 + 10 files changed, 603 insertions(+), 5 deletions(-) create mode 100644 core/ui/src/androidMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.android.kt create mode 100644 core/ui/src/commonMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.kt create mode 100644 core/ui/src/desktopMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.desktop.kt create mode 100644 core/ui/src/jsMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.js.kt create mode 100644 core/ui/src/nativeMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.native.kt create mode 100644 core/ui/src/wasmJsMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.wasmJs.kt diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts index 3ce3b480a..af4bfdd15 100644 --- a/core/ui/build.gradle.kts +++ b/core/ui/build.gradle.kts @@ -24,6 +24,9 @@ kotlin { implementation(libs.androidx.browser) implementation(libs.androidx.compose.runtime) implementation(libs.accompanist.pager) + implementation(libs.vico.compose) + implementation(libs.vico.compose.m3) + } commonMain.dependencies { api(projects.core.analytics) @@ -50,6 +53,26 @@ kotlin { androidInstrumentedTest.dependencies { implementation(libs.bundles.androidx.compose.ui.test) } + + desktopMain.dependencies { + implementation(libs.vico.compose) + implementation(libs.vico.compose.m3) + } + + jsMain.dependencies { + implementation(libs.vico.compose) + implementation(libs.vico.compose.m3) + } + + wasmJsMain.dependencies { + implementation(libs.vico.compose) + implementation(libs.vico.compose.m3) + } + + nativeMain.dependencies { + implementation(libs.vico.compose) + implementation(libs.vico.compose.m3) + } } } dependencies { diff --git a/core/ui/src/androidMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.android.kt b/core/ui/src/androidMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.android.kt new file mode 100644 index 000000000..b0e062020 --- /dev/null +++ b/core/ui/src/androidMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.android.kt @@ -0,0 +1,116 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ +package org.mifospay.core.ui + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.patrykandpatrick.vico.compose.common.Fill +import com.patrykandpatrick.vico.compose.common.component.TextComponent +import com.patrykandpatrick.vico.compose.common.vicoTheme +import com.patrykandpatrick.vico.compose.pie.PieChart +import com.patrykandpatrick.vico.compose.pie.PieChartHost +import com.patrykandpatrick.vico.compose.pie.PieSize +import com.patrykandpatrick.vico.compose.pie.data.PieChartModelProducer +import com.patrykandpatrick.vico.compose.pie.data.PieValueFormatter +import com.patrykandpatrick.vico.compose.pie.data.pieSeries +import com.patrykandpatrick.vico.compose.pie.rememberPieChart +import template.core.base.designsystem.theme.KptTheme + +@Composable +actual fun MifosPieIncomeExpense( + totalCredit: Double, + totalDebit: Double, +) { + val modelProducer = remember { PieChartModelProducer() } + + val total = totalCredit + totalDebit + + val creditPercentage = + if (total > 0) (totalCredit / total) * 100 else 0.0 + + val debitPercentage = + if (total > 0) (totalDebit / total) * 100 else 0.0 + + LaunchedEffect(totalCredit, totalDebit) { + modelProducer.runTransaction { + pieSeries { + series( + creditPercentage, + debitPercentage, + ) + } + } + } + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceEvenly, + ) { + MifosLegendItem( + color = vicoTheme.pieChartColors[0], + label = "Credits", + value = totalCredit, + percentage = creditPercentage, + ) + + MifosLegendItem( + color = vicoTheme.pieChartColors[1], + label = "Debits", + value = totalDebit, + percentage = debitPercentage, + ) + } + + PieChartHost( + chart = rememberPieChart( + innerSize = PieSize.Inner.fixed(100.dp), + sliceProvider = PieChart.SliceProvider.series( + vicoTheme.pieChartColors.mapIndexed { index, color -> + PieChart.Slice( + fill = Fill(color), + label = PieChart.SliceLabel.Inside( + TextComponent( + TextStyle( + color = if (index == 0) { + KptTheme.colorScheme.onPrimary + } else { + KptTheme.colorScheme.onSecondary + }, + ), + ), + ), + ) + }, + ), + valueFormatter = PieValueFormatter { _, value, _ -> + "${value.toInt()}%" + }, + ), + modelProducer = modelProducer, + modifier = Modifier.height(240.dp), + ) +} + +@Composable +@Preview +fun ComposeBasicPieChartPreview() { + MifosPieIncomeExpense( + totalDebit = 1241.0, + totalCredit = 1231.0, + ) +} diff --git a/core/ui/src/commonMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.kt b/core/ui/src/commonMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.kt new file mode 100644 index 000000000..69a913d72 --- /dev/null +++ b/core/ui/src/commonMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.kt @@ -0,0 +1,57 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ +package org.mifospay.core.ui + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import org.mifospay.core.common.CurrencyFormatter +import template.core.base.designsystem.theme.KptTheme + +@Composable +expect fun MifosPieIncomeExpense( + totalCredit: Double, + totalDebit: Double, +) + +@Composable +fun MifosLegendItem( + color: Color, + label: String, + value: Double, + percentage: Double, +) { + Row( + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(KptTheme.spacing.md), + ) { + Box( + modifier = Modifier + .size(10.dp) + .clip(CircleShape) + .background(color), + ) + + Text( + text = "$label ₹${CurrencyFormatter.format(value, 2)} (${CurrencyFormatter.format(percentage, 2)}%)", + style = KptTheme.typography.bodySmall, + ) + } +} diff --git a/core/ui/src/desktopMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.desktop.kt b/core/ui/src/desktopMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.desktop.kt new file mode 100644 index 000000000..223a60ee0 --- /dev/null +++ b/core/ui/src/desktopMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.desktop.kt @@ -0,0 +1,116 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ +package org.mifospay.core.ui + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.dp +import com.patrykandpatrick.vico.compose.common.Fill +import com.patrykandpatrick.vico.compose.common.component.TextComponent +import com.patrykandpatrick.vico.compose.common.vicoTheme +import com.patrykandpatrick.vico.compose.pie.PieChart +import com.patrykandpatrick.vico.compose.pie.PieChartHost +import com.patrykandpatrick.vico.compose.pie.PieSize +import com.patrykandpatrick.vico.compose.pie.data.PieChartModelProducer +import com.patrykandpatrick.vico.compose.pie.data.PieValueFormatter +import com.patrykandpatrick.vico.compose.pie.data.pieSeries +import com.patrykandpatrick.vico.compose.pie.rememberPieChart +import org.jetbrains.compose.ui.tooling.preview.Preview +import template.core.base.designsystem.theme.KptTheme + +@Composable +actual fun MifosPieIncomeExpense( + totalCredit: Double, + totalDebit: Double, +) { + val modelProducer = remember { PieChartModelProducer() } + + val total = totalCredit + totalDebit + + val creditPercentage = + if (total > 0) (totalCredit / total) * 100 else 0.0 + + val debitPercentage = + if (total > 0) (totalDebit / total) * 100 else 0.0 + + LaunchedEffect(totalCredit, totalDebit) { + modelProducer.runTransaction { + pieSeries { + series( + creditPercentage, + debitPercentage, + ) + } + } + } + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceEvenly, + ) { + MifosLegendItem( + color = vicoTheme.pieChartColors[0], + label = "Credits", + value = totalCredit, + percentage = creditPercentage, + ) + + MifosLegendItem( + color = vicoTheme.pieChartColors[1], + label = "Debits", + value = totalDebit, + percentage = debitPercentage, + ) + } + + PieChartHost( + chart = rememberPieChart( + innerSize = PieSize.Inner.fixed(100.dp), + sliceProvider = PieChart.SliceProvider.series( + vicoTheme.pieChartColors.mapIndexed { index, color -> + PieChart.Slice( + fill = Fill(color), + label = PieChart.SliceLabel.Inside( + TextComponent( + TextStyle( + color = if (index == 0) { + KptTheme.colorScheme.onPrimary + } else { + KptTheme.colorScheme.onSecondary + }, + ), + ), + ), + ) + }, + ), + valueFormatter = PieValueFormatter { _, value, _ -> + "${value.toInt()}%" + }, + ), + modelProducer = modelProducer, + modifier = Modifier.height(240.dp), + ) +} + +@Composable +@Preview +fun ComposeBasicPieChartPreview() { + MifosPieIncomeExpense( + totalDebit = 1241.0, + totalCredit = 1231.0, + ) +} diff --git a/core/ui/src/jsMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.js.kt b/core/ui/src/jsMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.js.kt new file mode 100644 index 000000000..223a60ee0 --- /dev/null +++ b/core/ui/src/jsMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.js.kt @@ -0,0 +1,116 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ +package org.mifospay.core.ui + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.dp +import com.patrykandpatrick.vico.compose.common.Fill +import com.patrykandpatrick.vico.compose.common.component.TextComponent +import com.patrykandpatrick.vico.compose.common.vicoTheme +import com.patrykandpatrick.vico.compose.pie.PieChart +import com.patrykandpatrick.vico.compose.pie.PieChartHost +import com.patrykandpatrick.vico.compose.pie.PieSize +import com.patrykandpatrick.vico.compose.pie.data.PieChartModelProducer +import com.patrykandpatrick.vico.compose.pie.data.PieValueFormatter +import com.patrykandpatrick.vico.compose.pie.data.pieSeries +import com.patrykandpatrick.vico.compose.pie.rememberPieChart +import org.jetbrains.compose.ui.tooling.preview.Preview +import template.core.base.designsystem.theme.KptTheme + +@Composable +actual fun MifosPieIncomeExpense( + totalCredit: Double, + totalDebit: Double, +) { + val modelProducer = remember { PieChartModelProducer() } + + val total = totalCredit + totalDebit + + val creditPercentage = + if (total > 0) (totalCredit / total) * 100 else 0.0 + + val debitPercentage = + if (total > 0) (totalDebit / total) * 100 else 0.0 + + LaunchedEffect(totalCredit, totalDebit) { + modelProducer.runTransaction { + pieSeries { + series( + creditPercentage, + debitPercentage, + ) + } + } + } + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceEvenly, + ) { + MifosLegendItem( + color = vicoTheme.pieChartColors[0], + label = "Credits", + value = totalCredit, + percentage = creditPercentage, + ) + + MifosLegendItem( + color = vicoTheme.pieChartColors[1], + label = "Debits", + value = totalDebit, + percentage = debitPercentage, + ) + } + + PieChartHost( + chart = rememberPieChart( + innerSize = PieSize.Inner.fixed(100.dp), + sliceProvider = PieChart.SliceProvider.series( + vicoTheme.pieChartColors.mapIndexed { index, color -> + PieChart.Slice( + fill = Fill(color), + label = PieChart.SliceLabel.Inside( + TextComponent( + TextStyle( + color = if (index == 0) { + KptTheme.colorScheme.onPrimary + } else { + KptTheme.colorScheme.onSecondary + }, + ), + ), + ), + ) + }, + ), + valueFormatter = PieValueFormatter { _, value, _ -> + "${value.toInt()}%" + }, + ), + modelProducer = modelProducer, + modifier = Modifier.height(240.dp), + ) +} + +@Composable +@Preview +fun ComposeBasicPieChartPreview() { + MifosPieIncomeExpense( + totalDebit = 1241.0, + totalCredit = 1231.0, + ) +} diff --git a/core/ui/src/nativeMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.native.kt b/core/ui/src/nativeMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.native.kt new file mode 100644 index 000000000..f99360eff --- /dev/null +++ b/core/ui/src/nativeMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.native.kt @@ -0,0 +1,16 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ +package org.mifospay.core.ui + +import androidx.compose.runtime.Composable + +@Composable +actual fun MifosPieIncomeExpense(totalCredit: Double, totalDebit: Double) { +} diff --git a/core/ui/src/wasmJsMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.wasmJs.kt b/core/ui/src/wasmJsMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.wasmJs.kt new file mode 100644 index 000000000..223a60ee0 --- /dev/null +++ b/core/ui/src/wasmJsMain/kotlin/org/mifospay/core/ui/MifosIncomeExpenseVisual.wasmJs.kt @@ -0,0 +1,116 @@ +/* + * Copyright 2026 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-wallet/blob/master/LICENSE.md + */ +package org.mifospay.core.ui + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.dp +import com.patrykandpatrick.vico.compose.common.Fill +import com.patrykandpatrick.vico.compose.common.component.TextComponent +import com.patrykandpatrick.vico.compose.common.vicoTheme +import com.patrykandpatrick.vico.compose.pie.PieChart +import com.patrykandpatrick.vico.compose.pie.PieChartHost +import com.patrykandpatrick.vico.compose.pie.PieSize +import com.patrykandpatrick.vico.compose.pie.data.PieChartModelProducer +import com.patrykandpatrick.vico.compose.pie.data.PieValueFormatter +import com.patrykandpatrick.vico.compose.pie.data.pieSeries +import com.patrykandpatrick.vico.compose.pie.rememberPieChart +import org.jetbrains.compose.ui.tooling.preview.Preview +import template.core.base.designsystem.theme.KptTheme + +@Composable +actual fun MifosPieIncomeExpense( + totalCredit: Double, + totalDebit: Double, +) { + val modelProducer = remember { PieChartModelProducer() } + + val total = totalCredit + totalDebit + + val creditPercentage = + if (total > 0) (totalCredit / total) * 100 else 0.0 + + val debitPercentage = + if (total > 0) (totalDebit / total) * 100 else 0.0 + + LaunchedEffect(totalCredit, totalDebit) { + modelProducer.runTransaction { + pieSeries { + series( + creditPercentage, + debitPercentage, + ) + } + } + } + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceEvenly, + ) { + MifosLegendItem( + color = vicoTheme.pieChartColors[0], + label = "Credits", + value = totalCredit, + percentage = creditPercentage, + ) + + MifosLegendItem( + color = vicoTheme.pieChartColors[1], + label = "Debits", + value = totalDebit, + percentage = debitPercentage, + ) + } + + PieChartHost( + chart = rememberPieChart( + innerSize = PieSize.Inner.fixed(100.dp), + sliceProvider = PieChart.SliceProvider.series( + vicoTheme.pieChartColors.mapIndexed { index, color -> + PieChart.Slice( + fill = Fill(color), + label = PieChart.SliceLabel.Inside( + TextComponent( + TextStyle( + color = if (index == 0) { + KptTheme.colorScheme.onPrimary + } else { + KptTheme.colorScheme.onSecondary + }, + ), + ), + ), + ) + }, + ), + valueFormatter = PieValueFormatter { _, value, _ -> + "${value.toInt()}%" + }, + ), + modelProducer = modelProducer, + modifier = Modifier.height(240.dp), + ) +} + +@Composable +@Preview +fun ComposeBasicPieChartPreview() { + MifosPieIncomeExpense( + totalDebit = 1241.0, + totalCredit = 1231.0, + ) +} diff --git a/feature/history/src/commonMain/kotlin/org/mifospay/feature/history/HistoryScreen.kt b/feature/history/src/commonMain/kotlin/org/mifospay/feature/history/HistoryScreen.kt index 5ccf3f5e8..20e497c0e 100644 --- a/feature/history/src/commonMain/kotlin/org/mifospay/feature/history/HistoryScreen.kt +++ b/feature/history/src/commonMain/kotlin/org/mifospay/feature/history/HistoryScreen.kt @@ -11,6 +11,7 @@ package org.mifospay.feature.history import androidx.compose.foundation.background import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -48,6 +49,7 @@ import org.mifospay.core.designsystem.component.MifosScaffold import org.mifospay.core.designsystem.icon.MifosIcons import org.mifospay.core.model.savingsaccount.TransactionType import org.mifospay.core.ui.EmptyContentScreen +import org.mifospay.core.ui.MifosPieIncomeExpense import org.mifospay.core.ui.MifosProgressIndicator import org.mifospay.core.ui.TransactionFilterBottomSheet import org.mifospay.core.ui.utils.EventsEffect @@ -133,11 +135,19 @@ internal fun HistoryScreenContent( .fillMaxSize(), ) } else { - TransactionList( - transactions = state.viewState.list, - onAction = onAction, - modifier = modifier, - ) + Column( + verticalArrangement = Arrangement.spacedBy(KptTheme.spacing.md), + ) { + MifosPieIncomeExpense( + totalCredit = state.totalCredit ?: 0.0, + totalDebit = state.totalDebit ?: 0.0, + ) + TransactionList( + transactions = state.viewState.list, + onAction = onAction, + modifier = modifier, + ) + } } } if (state.showFilter) { diff --git a/feature/history/src/commonMain/kotlin/org/mifospay/feature/history/HistoryViewModel.kt b/feature/history/src/commonMain/kotlin/org/mifospay/feature/history/HistoryViewModel.kt index 259122e23..7f2a39fc8 100644 --- a/feature/history/src/commonMain/kotlin/org/mifospay/feature/history/HistoryViewModel.kt +++ b/feature/history/src/commonMain/kotlin/org/mifospay/feature/history/HistoryViewModel.kt @@ -75,6 +75,7 @@ class HistoryViewModel( is DataState.Success -> { val transactions = result.data + calculateSummary(transactions) if (transactions.isNotEmpty()) { mutableStateFlow.update { it.copy( @@ -197,6 +198,25 @@ class HistoryViewModel( ) } } + + fun calculateSummary( + transactions: List, + ) { + val totalCredit = transactions.sumOf { + if (it.transactionType == TransactionType.CREDIT) it.amount else 0.0 + } + + val totalDebit = transactions.sumOf { + if (it.transactionType == TransactionType.DEBIT) it.amount else 0.0 + } + + mutableStateFlow.update { + it.copy( + totalCredit = totalCredit, + totalDebit = totalDebit, + ) + } + } } data class HistoryState( @@ -207,6 +227,8 @@ data class HistoryState( val accounts: List = emptyList(), val selectedAccount: Account? = null, val showFilter: Boolean = false, + val totalCredit: Double? = null, + val totalDebit: Double? = null, ) { sealed interface ViewState { data object Loading : ViewState diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 00a8daf5a..8c488655a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -138,7 +138,13 @@ packageVersion = "1.0.0" mifosAuthenticatorPasscode="2.3.0-beta" mifosAuthenticatorBiometrics="2.3.0-beta" +vico = "3.2.2" + [libraries] + +vico-compose = { group = "com.patrykandpatrick.vico", name = "compose", version.ref = "vico" } +vico-compose-m3 = { group = "com.patrykandpatrick.vico", name = "compose-m3", version.ref = "vico" } + accompanist-pager = { group = "com.google.accompanist", name = "accompanist-pager", version.ref = "accompanist" } accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" } From 283e97ea8984596a9c16a2da122c48e60074dba5 Mon Sep 17 00:00:00 2001 From: nagarjuna Date: Wed, 24 Jun 2026 00:50:13 +0530 Subject: [PATCH 8/9] refactor: removed native deps --- core/ui/build.gradle.kts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts index af4bfdd15..968d9e1db 100644 --- a/core/ui/build.gradle.kts +++ b/core/ui/build.gradle.kts @@ -68,11 +68,6 @@ kotlin { implementation(libs.vico.compose) implementation(libs.vico.compose.m3) } - - nativeMain.dependencies { - implementation(libs.vico.compose) - implementation(libs.vico.compose.m3) - } } } dependencies { From 2a88c934c962cdb93fe0ddf0b860c238ffe3c46b Mon Sep 17 00:00:00 2001 From: nagarjuna Date: Wed, 24 Jun 2026 00:56:56 +0530 Subject: [PATCH 9/9] fix: checks --- .../prodReleaseRuntimeClasspath.tree.txt | 2144 +++++++++-------- .../prodReleaseRuntimeClasspath.txt | 122 +- 2 files changed, 1141 insertions(+), 1125 deletions(-) diff --git a/cmp-android/dependencies/prodReleaseRuntimeClasspath.tree.txt b/cmp-android/dependencies/prodReleaseRuntimeClasspath.tree.txt index 7e71783f6..1f9877934 100644 --- a/cmp-android/dependencies/prodReleaseRuntimeClasspath.tree.txt +++ b/cmp-android/dependencies/prodReleaseRuntimeClasspath.tree.txt @@ -2,43 +2,44 @@ +--- androidx.databinding:databinding-runtime:8.12.3 | +--- androidx.collection:collection:1.0.0 -> 1.5.0 | | \--- androidx.collection:collection-jvm:1.5.0 -| | +--- androidx.annotation:annotation:1.9.1 -| | | \--- androidx.annotation:annotation-jvm:1.9.1 -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.2.21 -| | | +--- org.jetbrains:annotations:13.0 -> 23.0.0 -| | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 1.8.22 (c) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0 -> 1.9.0 (c) -| | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 +| | | \--- androidx.annotation:annotation-jvm:1.10.0 +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 +| | | | +--- org.jetbrains:annotations:13.0 -> 23.0.0 +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0 -> 1.9.0 (c) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 1.8.22 (c) +| | | \--- org.jetbrains.compose.annotation-internal:annotation:1.8.0 -> 1.9.3 (c) +| | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | +--- androidx.collection:collection-ktx:1.5.0 (c) -| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.2.21 (c) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.3.21 (c) | +--- androidx.databinding:databinding-common:8.12.3 | +--- androidx.databinding:viewbinding:8.12.3 -| | \--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) +| | \--- androidx.annotation:annotation:1.0.0 -> 1.10.0 (*) | \--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.9.4 | \--- androidx.lifecycle:lifecycle-runtime-android:2.9.4 -| +--- androidx.annotation:annotation:1.9.1 (*) +| +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) | +--- androidx.arch.core:core-common:2.2.0 -| | \--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | \--- androidx.annotation:annotation:1.1.0 -> 1.10.0 (*) | +--- androidx.arch.core:core-runtime:2.2.0 -| | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | +--- androidx.annotation:annotation:1.1.0 -> 1.10.0 (*) | | \--- androidx.arch.core:core-common:2.2.0 (*) | +--- androidx.core:core-viewtree:1.0.0 -| | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (c) +| | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (c) | +--- androidx.lifecycle:lifecycle-common:2.9.4 | | \--- androidx.lifecycle:lifecycle-common-jvm:2.9.4 -| | +--- androidx.annotation:annotation:1.9.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.10.2 -| | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.2 +| | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.11.0 +| | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.11.0 | | | +--- org.jetbrains:annotations:23.0.0 -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.2 -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2 (c) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.2 (c) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (c) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.2 (c) -| | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.2 (c) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.2.21 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.11.0 +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.11.0 (c) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.11.0 (c) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0 (c) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.11.0 (c) +| | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.11.0 (c) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) | | +--- org.jspecify:jspecify:1.0.0 | | +--- androidx.lifecycle:lifecycle-common-java8:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-livedata:2.9.4 (c) @@ -52,27 +53,27 @@ | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.4 (c) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | \--- androidx.lifecycle:lifecycle-livedata-core:2.9.4 (c) | +--- androidx.profileinstaller:profileinstaller:1.4.0 -> 1.4.1 -| | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | +--- androidx.concurrent:concurrent-futures:1.1.0 -| | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | +--- androidx.annotation:annotation:1.1.0 -> 1.10.0 (*) | | | \--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava | | +--- androidx.startup:startup-runtime:1.1.1 -> 1.2.0 -| | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | \--- androidx.tracing:tracing:1.0.0 -> 1.3.0 | | | \--- androidx.tracing:tracing-android:1.3.0 -| | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | +--- androidx.tracing:tracing-ktx:1.3.0 (c) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | \--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava -| +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1 -> 1.10.2 -| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) -| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.2 (*) -| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.2.21 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1 -> 1.11.0 +| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0 (*) +| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.11.0 (*) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) | +--- org.jspecify:jspecify:1.0.0 | +--- androidx.lifecycle:lifecycle-common:2.9.4 (c) | +--- androidx.lifecycle:lifecycle-common-java8:2.9.4 (c) @@ -86,21 +87,21 @@ | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.9.4 (c) | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.4 (c) | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.4 (c) -| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | \--- androidx.lifecycle:lifecycle-livedata-core:2.9.4 (c) +--- androidx.databinding:databinding-adapters:8.12.3 | +--- androidx.databinding:databinding-runtime:8.12.3 (*) | \--- androidx.databinding:databinding-common:8.12.3 +--- androidx.databinding:databinding-ktx:8.12.3 | +--- androidx.databinding:databinding-runtime:8.12.3 (*) -| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.2.21 (*) -| +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1 -> 1.10.2 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1 -> 1.11.0 (*) | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.1 -> 2.9.4 | | \--- androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.4 -| | +--- androidx.annotation:annotation:1.9.1 (*) +| | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) | | +--- androidx.lifecycle:lifecycle-runtime:2.9.4 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1 -> 1.10.2 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1 -> 1.11.0 (*) | | +--- androidx.lifecycle:lifecycle-common:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-common-java8:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-livedata:2.9.4 (c) @@ -114,7 +115,7 @@ | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.4 (c) -| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | +--- androidx.lifecycle:lifecycle-livedata:2.6.1 -> 2.9.4 | | +--- androidx.arch.core:core-common:2.2.0 (*) | | +--- androidx.arch.core:core-runtime:2.2.0 (*) @@ -122,7 +123,7 @@ | | | +--- androidx.arch.core:core-common:2.2.0 (*) | | | +--- androidx.arch.core:core-runtime:2.2.0 (*) | | | +--- androidx.lifecycle:lifecycle-common:2.9.4 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | +--- org.jspecify:jspecify:1.0.0 | | | +--- androidx.lifecycle:lifecycle-common:2.9.4 (c) | | | +--- androidx.lifecycle:lifecycle-common-java8:2.9.4 (c) @@ -137,10 +138,10 @@ | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.9.4 (c) | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.4 (c) | | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.4 (c) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.4 | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.9.4 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | +--- androidx.lifecycle:lifecycle-common:2.9.4 (c) | | | +--- androidx.lifecycle:lifecycle-common-java8:2.9.4 (c) | | | +--- androidx.lifecycle:lifecycle-livedata:2.9.4 (c) @@ -154,9 +155,9 @@ | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.9.4 (c) | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.4 (c) | | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.4 (c) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) -| | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.10.2 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) +| | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.11.0 (*) | | +--- org.jspecify:jspecify:1.0.0 | | +--- androidx.lifecycle:lifecycle-common:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-common-java8:2.9.4 (c) @@ -171,12 +172,12 @@ | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.4 (c) -| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | +--- androidx.lifecycle:lifecycle-process:2.6.1 -> 2.9.4 -| | +--- androidx.annotation:annotation:1.9.1 (*) +| | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) | | +--- androidx.lifecycle:lifecycle-runtime:2.9.4 (*) | | +--- androidx.startup:startup-runtime:1.1.1 -> 1.2.0 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | +--- androidx.lifecycle:lifecycle-common:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-common-java8:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-livedata:2.9.4 (c) @@ -190,10 +191,10 @@ | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.4 (c) -| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | +--- androidx.lifecycle:lifecycle-service:2.6.1 -> 2.9.4 | | +--- androidx.lifecycle:lifecycle-runtime:2.9.4 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | +--- androidx.lifecycle:lifecycle-common:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-common-java8:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-livedata:2.9.4 (c) @@ -207,14 +208,14 @@ | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.4 (c) -| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | \--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.9.4 | \--- androidx.lifecycle:lifecycle-viewmodel-android:2.9.4 -| +--- androidx.annotation:annotation:1.9.1 (*) +| +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) | +--- androidx.core:core-viewtree:1.0.0 (*) -| +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1 -> 1.10.2 (*) -| +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.10.2 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1 -> 1.11.0 (*) +| +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.11.0 (*) | +--- androidx.lifecycle:lifecycle-common:2.9.4 (c) | +--- androidx.lifecycle:lifecycle-common-java8:2.9.4 (c) | +--- androidx.lifecycle:lifecycle-livedata:2.9.4 (c) @@ -227,9 +228,9 @@ | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.9.4 (c) | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.4 (c) | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.4 (c) -| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | \--- androidx.lifecycle:lifecycle-livedata-core:2.9.4 (c) -+--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) ++--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) +--- com.google.firebase:firebase-bom:34.7.0 | +--- com.google.firebase:firebase-analytics:23.0.0 (c) | +--- com.google.firebase:firebase-crashlytics:20.0.3 (c) @@ -240,76 +241,76 @@ | +--- com.google.android.gms:play-services-measurement:23.0.0 | | +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) | | +--- androidx.legacy:legacy-support-core-utils:1.0.0 -| | | +--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) +| | | +--- androidx.annotation:annotation:1.0.0 -> 1.10.0 (*) | | | +--- androidx.core:core:1.0.0 -> 1.17.0 -| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | +--- androidx.annotation:annotation-experimental:1.4.1 -> 1.5.1 -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | | | +--- androidx.collection:collection:1.4.2 -> 1.5.0 (*) | | | | +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*) | | | | +--- androidx.core:core-viewtree:1.0.0 (*) | | | | +--- androidx.interpolator:interpolator:1.0.0 -| | | | | \--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) +| | | | | \--- androidx.annotation:annotation:1.0.0 -> 1.10.0 (*) | | | | +--- androidx.lifecycle:lifecycle-common:2.6.2 -> 2.9.4 (*) | | | | +--- androidx.lifecycle:lifecycle-runtime:2.6.2 -> 2.9.4 (*) | | | | +--- androidx.tracing:tracing:1.2.0 -> 1.3.0 (*) | | | | +--- androidx.versionedparcelable:versionedparcelable:1.1.1 -| | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.10.0 (*) | | | | | \--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) | | | | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.10.2 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.11.0 (*) | | | | +--- org.jspecify:jspecify:1.0.0 | | | | +--- androidx.core:core-ktx:1.17.0 (c) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | | +--- androidx.documentfile:documentfile:1.0.0 -> 1.1.0 -| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | +--- androidx.core:core:1.7.0 -> 1.17.0 (*) | | | | \--- org.jspecify:jspecify:1.0.0 | | | +--- androidx.loader:loader:1.0.0 -> 1.1.0 -| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) +| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.10.0 (*) | | | | +--- androidx.core:core:1.0.0 -> 1.17.0 (*) | | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.0.0 -> 2.9.4 (*) | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.0.0 -> 2.9.4 (*) | | | | \--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) | | | +--- androidx.localbroadcastmanager:localbroadcastmanager:1.0.0 -| | | | \--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) +| | | | \--- androidx.annotation:annotation:1.0.0 -> 1.10.0 (*) | | | \--- androidx.print:print:1.0.0 -| | | \--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) +| | | \--- androidx.annotation:annotation:1.0.0 -> 1.10.0 (*) | | +--- com.google.android.gms:play-services-ads-identifier:18.0.0 | | | \--- com.google.android.gms:play-services-basement:18.0.0 -> 18.5.0 | | | +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) | | | +--- androidx.core:core:1.2.0 -> 1.17.0 (*) | | | \--- androidx.fragment:fragment:1.1.0 -> 1.8.9 | | | +--- androidx.activity:activity:1.8.1 -> 1.12.2 -| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | +--- androidx.core:core-ktx:1.16.0 -> 1.17.0 -| | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | | +--- androidx.core:core:1.17.0 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | | | +--- androidx.core:core:1.17.0 (c) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | | | +--- androidx.core:core-viewtree:1.0.0 (*) | | | | +--- androidx.lifecycle:lifecycle-common:2.6.1 -> 2.9.4 (*) | | | | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.9.4 (*) | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.9.4 (*) | | | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.1 -> 2.9.4 | | | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.4 -| | | | | +--- androidx.annotation:annotation:1.9.1 (*) +| | | | | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) | | | | | +--- androidx.core:core-ktx:1.2.0 -> 1.17.0 (*) | | | | | +--- androidx.lifecycle:lifecycle-common:2.9.4 (*) | | | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.9.4 (*) | | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.9.4 (*) | | | | | +--- androidx.savedstate:savedstate:1.3.1 -> 1.4.0 | | | | | | \--- androidx.savedstate:savedstate-android:1.4.0 -| | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) -| | | | | | +--- androidx.annotation:annotation:1.9.1 (*) +| | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) +| | | | | | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) | | | | | | +--- androidx.core:core-ktx:1.13.1 -> 1.17.0 (*) | | | | | | +--- androidx.core:core-viewtree:1.0.0 (*) | | | | | | +--- androidx.lifecycle:lifecycle-common:2.9.2 -> 2.9.4 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.10.2 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.11.0 (*) | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -> 1.9.0 | | | | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.9.0 | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.9.0 @@ -319,14 +320,14 @@ | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (c) | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.9.0 (c) | | | | | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.9.0 (c) -| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.2.21 (*) +| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.3.21 (*) | | | | | | +--- androidx.savedstate:savedstate-compose:1.4.0 (c) | | | | | | +--- androidx.savedstate:savedstate-ktx:1.4.0 (c) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | | | | | \--- org.jetbrains.androidx.savedstate:savedstate:1.3.2 -> 1.4.0 (c) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1 -> 1.10.2 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.10.2 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1 -> 1.11.0 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.11.0 (*) | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -> 1.9.0 (*) | | | | | +--- androidx.lifecycle:lifecycle-common:2.9.4 (c) | | | | | +--- androidx.lifecycle:lifecycle-common-java8:2.9.4 (c) @@ -341,31 +342,31 @@ | | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.9.4 (c) | | | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.9.4 (c) | | | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.4 (c) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | | | +--- androidx.navigationevent:navigationevent:1.0.1 -> 1.0.2 | | | | | \--- androidx.navigationevent:navigationevent-android:1.0.2 -| | | | | +--- androidx.annotation:annotation:1.9.1 (*) -| | | | | +--- androidx.compose.runtime:runtime-annotation:1.9.0 -> 1.10.2 -| | | | | | \--- androidx.compose.runtime:runtime-annotation-android:1.10.2 -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | | | | | +--- androidx.compose.runtime:runtime:1.10.2 (c) -| | | | | | +--- androidx.compose.runtime:runtime-retain:1.10.2 (c) -| | | | | | +--- androidx.compose.runtime:runtime-tracing:1.10.2 (c) -| | | | | | \--- androidx.compose.runtime:runtime-saveable:1.10.2 (c) +| | | | | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) +| | | | | +--- androidx.compose.runtime:runtime-annotation:1.9.0 -> 1.11.1 +| | | | | | \--- androidx.compose.runtime:runtime-annotation-android:1.11.1 +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | | | | | +--- androidx.compose.runtime:runtime:1.11.1 (c) +| | | | | | +--- androidx.compose.runtime:runtime-retain:1.11.1 (c) +| | | | | | +--- androidx.compose.runtime:runtime-tracing:1.11.1 (c) +| | | | | | \--- androidx.compose.runtime:runtime-saveable:1.11.1 (c) | | | | | +--- androidx.core:core-viewtree:1.0.0 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 -> 1.10.2 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.10.2 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 -> 1.11.0 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.11.0 (*) | | | | | +--- androidx.navigationevent:navigationevent-compose:1.0.2 (c) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | | | +--- androidx.profileinstaller:profileinstaller:1.4.0 -> 1.4.1 (*) | | | | +--- androidx.savedstate:savedstate:1.2.1 -> 1.4.0 (*) | | | | +--- androidx.tracing:tracing:1.0.0 -> 1.3.0 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.10.2 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.11.0 (*) | | | | +--- androidx.activity:activity-compose:1.12.2 (c) | | | | \--- androidx.activity:activity-ktx:1.12.2 (c) -| | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | +--- androidx.annotation:annotation:1.1.0 -> 1.10.0 (*) | | | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.5.1 (*) | | | +--- androidx.collection:collection:1.1.0 -> 1.5.0 (*) | | | +--- androidx.core:core-ktx:1.2.0 -> 1.17.0 (*) @@ -377,13 +378,13 @@ | | | +--- androidx.profileinstaller:profileinstaller:1.3.1 -> 1.4.1 (*) | | | +--- androidx.savedstate:savedstate:1.2.1 -> 1.4.0 (*) | | | +--- androidx.viewpager:viewpager:1.0.0 -| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) +| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.10.0 (*) | | | | +--- androidx.core:core:1.0.0 -> 1.17.0 (*) | | | | \--- androidx.customview:customview:1.0.0 -> 1.1.0 -| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.10.0 (*) | | | | +--- androidx.core:core:1.3.0 -> 1.17.0 (*) | | | | \--- androidx.collection:collection:1.1.0 -> 1.5.0 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) | | | \--- androidx.fragment:fragment-ktx:1.8.9 (c) | | +--- com.google.android.gms:play-services-basement:18.5.0 (*) | | +--- com.google.android.gms:play-services-measurement-base:23.0.0 @@ -392,19 +393,19 @@ | | | +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) | | | +--- androidx.core:core:1.9.0 -> 1.17.0 (*) | | | +--- androidx.privacysandbox.ads:ads-adservices:1.1.0-beta11 -| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | +--- androidx.core:core-ktx:1.8.0 -> 1.17.0 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.11.0 (*) | | | | \--- androidx.privacysandbox.ads:ads-adservices-java:1.1.0-beta11 (c) | | | +--- androidx.privacysandbox.ads:ads-adservices-java:1.1.0-beta11 -| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | +--- androidx.concurrent:concurrent-futures:1.1.0 (*) | | | | +--- androidx.core:core-ktx:1.8.0 -> 1.17.0 (*) | | | | +--- androidx.privacysandbox.ads:ads-adservices:1.1.0-beta11 (*) | | | | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.11.0 (*) | | | | \--- androidx.privacysandbox.ads:ads-adservices:1.1.0-beta11 (c) | | | +--- com.google.android.gms:play-services-ads-identifier:18.0.0 (*) | | | +--- com.google.android.gms:play-services-base:18.5.0 @@ -437,29 +438,29 @@ | | +--- com.google.android.gms:play-services-measurement-sdk-api:23.0.0 (*) | | +--- com.google.android.gms:play-services-tasks:18.2.0 (*) | | +--- com.google.firebase:firebase-common:21.0.0 -> 22.0.1 -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.9.0 -> 1.10.2 -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.2 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.9.0 -> 1.11.0 +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.11.0 (*) | | | | +--- com.google.android.gms:play-services-tasks:16.0.1 -> 18.2.0 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.2.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) | | | +--- com.google.firebase:firebase-components:19.0.0 | | | | +--- com.google.firebase:firebase-annotations:17.0.0 | | | | | \--- javax.inject:javax.inject:1 -| | | | +--- androidx.annotation:annotation:1.5.0 -> 1.9.1 (*) +| | | | +--- androidx.annotation:annotation:1.5.0 -> 1.10.0 (*) | | | | \--- com.google.errorprone:error_prone_annotations:2.26.0 -> 2.36.0 | | | +--- com.google.firebase:firebase-annotations:17.0.0 (*) | | | +--- androidx.datastore:datastore-preferences:1.1.7 | | | | \--- androidx.datastore:datastore-preferences-android:1.1.7 | | | | +--- androidx.datastore:datastore:1.1.7 | | | | | \--- androidx.datastore:datastore-android:1.1.7 -| | | | | +--- androidx.annotation:annotation:1.2.0 -> 1.9.1 (*) +| | | | | +--- androidx.annotation:annotation:1.2.0 -> 1.10.0 (*) | | | | | +--- androidx.datastore:datastore-core:1.1.7 | | | | | | \--- androidx.datastore:datastore-core-android:1.1.7 -| | | | | | +--- androidx.annotation:annotation:1.7.0 -> 1.9.1 (*) +| | | | | | +--- androidx.annotation:annotation:1.7.0 -> 1.10.0 (*) | | | | | | +--- org.jetbrains.kotlin:kotlin-parcelize-runtime:1.9.22 -> 2.2.21 -| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) +| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) +| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.11.0 (*) | | | | | | +--- androidx.datastore:datastore:1.1.7 (c) | | | | | | +--- androidx.datastore:datastore-core-okio:1.1.7 (c) | | | | | | +--- androidx.datastore:datastore-preferences:1.1.7 (c) @@ -471,9 +472,9 @@ | | | | | | +--- androidx.datastore:datastore-core:1.1.7 (*) | | | | | | +--- com.squareup.okio:okio:3.4.0 -> 3.16.4 | | | | | | | \--- com.squareup.okio:okio-jvm:3.16.4 -| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.2.21 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) +| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) +| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.11.0 (*) | | | | | | +--- androidx.datastore:datastore:1.1.7 (c) | | | | | | +--- androidx.datastore:datastore-core:1.1.7 (c) | | | | | | +--- androidx.datastore:datastore-preferences:1.1.7 (c) @@ -481,8 +482,8 @@ | | | | | | +--- androidx.datastore:datastore-preferences-proto:1.1.7 (c) | | | | | | \--- androidx.datastore:datastore-preferences-external-protobuf:1.1.7 (c) | | | | | +--- com.squareup.okio:okio:3.4.0 -> 3.16.4 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.11.0 (*) | | | | | +--- androidx.datastore:datastore-core:1.1.7 (c) | | | | | +--- androidx.datastore:datastore-core-okio:1.1.7 (c) | | | | | +--- androidx.datastore:datastore-preferences:1.1.7 (c) @@ -508,24 +509,24 @@ | | | | | | +--- androidx.datastore:datastore-preferences-core:1.1.7 (c) | | | | | | \--- androidx.datastore:datastore-preferences-external-protobuf:1.1.7 (c) | | | | | +--- com.squareup.okio:okio:3.4.0 -> 3.16.4 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) | | | | | +--- androidx.datastore:datastore:1.1.7 (c) | | | | | +--- androidx.datastore:datastore-core:1.1.7 (c) | | | | | +--- androidx.datastore:datastore-core-okio:1.1.7 (c) | | | | | +--- androidx.datastore:datastore-preferences:1.1.7 (c) | | | | | +--- androidx.datastore:datastore-preferences-proto:1.1.7 (c) | | | | | \--- androidx.datastore:datastore-preferences-external-protobuf:1.1.7 (c) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.11.0 (*) | | | | +--- androidx.datastore:datastore:1.1.7 (c) | | | | +--- androidx.datastore:datastore-core:1.1.7 (c) | | | | +--- androidx.datastore:datastore-core-okio:1.1.7 (c) | | | | +--- androidx.datastore:datastore-preferences-core:1.1.7 (c) | | | | +--- androidx.datastore:datastore-preferences-proto:1.1.7 (c) | | | | \--- androidx.datastore:datastore-preferences-external-protobuf:1.1.7 (c) -| | | +--- androidx.annotation:annotation:1.5.0 -> 1.9.1 (*) +| | | +--- androidx.annotation:annotation:1.5.0 -> 1.10.0 (*) | | | +--- androidx.concurrent:concurrent-futures:1.1.0 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (*) | | | +--- com.google.android.gms:play-services-basement:18.3.0 -> 18.5.0 (*) | | | \--- com.google.android.gms:play-services-tasks:18.1.0 -> 18.2.0 (*) | | +--- com.google.firebase:firebase-components:18.0.0 -> 19.0.0 (*) @@ -537,13 +538,13 @@ | | | +--- 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 -> 17.0.0 (*) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (*) | | +--- 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.5.0 (*) | | | \--- com.google.firebase:firebase-annotations:16.0.0 -> 17.0.0 (*) | | +--- com.google.guava:guava:31.1-android -> 33.4.8-android (*) -| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (*) | \--- com.google.android.gms:play-services-measurement-sdk:23.0.0 | +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) | +--- com.google.android.gms:play-services-basement:18.5.0 (*) @@ -556,43 +557,43 @@ | | +--- com.google.firebase:firebase-installations-interop:17.2.0 (*) | | +--- com.google.firebase:firebase-annotations:17.0.0 (*) | | +--- com.google.firebase:firebase-encoders:17.0.0 -| | | \--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | \--- androidx.annotation:annotation:1.1.0 -> 1.10.0 (*) | | +--- com.google.firebase:firebase-encoders-json:18.0.1 | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10 -> 1.8.22 -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) | | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22 -> 1.9.0 -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.0 -> 2.2.21 (*) -| | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.0 -> 2.3.21 (*) +| | | +--- androidx.annotation:annotation:1.1.0 -> 1.10.0 (*) | | | \--- com.google.firebase:firebase-encoders:17.0.0 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (*) | | +--- com.google.firebase:firebase-installations:18.0.0 -> 19.0.1 (*) | | +--- com.google.firebase:firebase-datatransport:19.0.0 -| | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | +--- androidx.annotation:annotation:1.1.0 -> 1.10.0 (*) | | | +--- com.google.android.datatransport:transport-api:3.1.0 -> 3.2.0 -| | | | \--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | | \--- androidx.annotation:annotation:1.1.0 -> 1.10.0 (*) | | | +--- com.google.android.datatransport:transport-backend-cct:3.2.0 -> 3.3.0 | | | | +--- com.google.android.datatransport:transport-api:3.2.0 (*) | | | | +--- com.google.android.datatransport:transport-runtime:3.3.0 | | | | | +--- com.google.android.datatransport:transport-api:3.2.0 (*) -| | | | | +--- androidx.annotation:annotation:1.3.0 -> 1.9.1 (*) +| | | | | +--- androidx.annotation:annotation:1.3.0 -> 1.10.0 (*) | | | | | +--- javax.inject:javax.inject:1 | | | | | +--- com.google.firebase:firebase-encoders:17.0.0 (*) | | | | | \--- com.google.firebase:firebase-encoders-proto:16.0.0 -| | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.10.0 (*) | | | | | \--- com.google.firebase:firebase-encoders:17.0.0 (*) | | | | +--- com.google.firebase:firebase-encoders:17.0.0 (*) | | | | +--- com.google.firebase:firebase-encoders-json:18.0.0 -> 18.0.1 (*) -| | | | \--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | | \--- androidx.annotation:annotation:1.1.0 -> 1.10.0 (*) | | | +--- com.google.android.datatransport:transport-runtime:3.2.0 -> 3.3.0 (*) | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 (*) | | +--- com.google.android.datatransport:transport-api:3.2.0 (*) | | +--- javax.inject:javax.inject:1 -| | +--- androidx.annotation:annotation:1.5.0 -> 1.9.1 (*) +| | +--- androidx.annotation:annotation:1.5.0 -> 1.10.0 (*) | | +--- androidx.datastore:datastore:1.1.7 (*) | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 -> 1.9.0 | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.9.0 | | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.9.0 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.3.21 (*) | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.9.0 (*) | +--- com.google.android.gms:play-services-tasks:18.1.0 -> 18.2.0 (*) | +--- com.google.firebase:firebase-annotations:17.0.0 (*) @@ -606,95 +607,95 @@ | +--- com.google.firebase:firebase-installations:18.0.0 -> 19.0.1 (*) | +--- com.google.firebase:firebase-installations-interop:17.2.0 (*) | +--- com.google.firebase:firebase-measurement-connector:20.0.1 (*) -| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (*) | +--- com.google.android.datatransport:transport-api:3.2.0 (*) | +--- com.google.android.datatransport:transport-backend-cct:3.3.0 (*) | +--- com.google.android.datatransport:transport-runtime:3.3.0 (*) -| \--- androidx.annotation:annotation:1.5.0 -> 1.9.1 (*) +| \--- androidx.annotation:annotation:1.5.0 -> 1.10.0 (*) +--- androidx.compose:compose-bom:2025.12.01 | +--- androidx.compose.material3:material3:1.4.0 (c) | +--- androidx.compose.material3.adaptive:adaptive:1.2.0 (c) | +--- androidx.compose.material3.adaptive:adaptive-layout:1.2.0 (c) | +--- androidx.compose.material3.adaptive:adaptive-navigation:1.2.0 (c) -| +--- androidx.compose.runtime:runtime:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.runtime:runtime-tracing:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.ui:ui-tooling-preview:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.runtime:runtime-saveable:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.ui:ui:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.ui:ui-graphics:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.ui:ui-unit:1.10.0 -> 1.10.2 (c) +| +--- androidx.compose.runtime:runtime:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.runtime:runtime-tracing:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.ui:ui-tooling-preview:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.runtime:runtime-saveable:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.ui:ui:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.ui:ui-graphics:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.ui:ui-unit:1.10.0 -> 1.11.1 (c) | +--- androidx.compose.material3:material3-android:1.4.0 (c) | +--- androidx.compose.material3.adaptive:adaptive-android:1.2.0 (c) | +--- androidx.compose.material3.adaptive:adaptive-layout-android:1.2.0 (c) | +--- androidx.compose.material3.adaptive:adaptive-navigation-android:1.2.0 (c) -| +--- androidx.compose.foundation:foundation:1.10.0 -> 1.10.2 (c) +| +--- androidx.compose.foundation:foundation:1.10.0 -> 1.11.1 (c) | +--- androidx.compose.material:material-icons-extended:1.7.8 (c) -| +--- androidx.compose.animation:animation-core:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.foundation:foundation-layout:1.10.0 -> 1.10.2 (c) +| +--- androidx.compose.animation:animation-core:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.foundation:foundation-layout:1.10.0 -> 1.11.1 (c) | +--- androidx.compose.material:material-ripple:1.10.0 (c) -| +--- androidx.compose.ui:ui-text:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.ui:ui-util:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.animation:animation:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.ui:ui-geometry:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.ui:ui-tooling:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.runtime:runtime-retain:1.10.0 -> 1.10.2 (c) +| +--- androidx.compose.ui:ui-text:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.ui:ui-util:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.animation:animation:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.ui:ui-geometry:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.ui:ui-tooling:1.10.0 -> 1.11.1 (c) | +--- androidx.compose.material:material:1.10.0 (c) | +--- androidx.compose.material:material-icons-core:1.7.8 (c) | +--- androidx.compose.material:material-icons-extended-android:1.7.8 (c) | +--- androidx.compose.material:material-ripple-android:1.10.0 (c) | +--- androidx.compose.material3:material3-adaptive-navigation-suite:1.4.0 (c) -| +--- androidx.compose.runtime:runtime-android:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.ui:ui-android:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.runtime:runtime-retain-android:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.runtime:runtime-annotation:1.10.0 -> 1.10.2 (c) +| +--- androidx.compose.runtime:runtime-annotation:1.10.0 -> 1.11.1 (c) | +--- androidx.compose.material:material-android:1.10.0 (c) +| +--- androidx.compose.runtime:runtime-retain:1.10.0 -> 1.11.1 (c) | +--- androidx.compose.material:material-icons-core-android:1.7.8 (c) | +--- androidx.compose.material3:material3-adaptive-navigation-suite-android:1.4.0 (c) -| +--- androidx.compose.runtime:runtime-saveable-android:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.ui:ui-graphics-android:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.ui:ui-text-android:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.ui:ui-util-android:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.ui:ui-geometry-android:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.ui:ui-unit-android:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.runtime:runtime-annotation-android:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.ui:ui-tooling-android:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.ui:ui-tooling-preview-android:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.ui:ui-tooling-data:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.animation:animation-android:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.ui:ui-tooling-data-android:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.animation:animation-core-android:1.10.0 -> 1.10.2 (c) -| +--- androidx.compose.foundation:foundation-layout-android:1.10.0 -> 1.10.2 (c) -| \--- androidx.compose.foundation:foundation-android:1.10.0 -> 1.10.2 (c) -+--- androidx.compose.ui:ui-tooling-preview -> 1.10.2 -| \--- androidx.compose.ui:ui-tooling-preview-android:1.10.2 -| +--- androidx.annotation:annotation:1.9.1 (*) -| +--- androidx.compose.runtime:runtime:1.10.2 -| | \--- androidx.compose.runtime:runtime-android:1.10.2 +| +--- androidx.compose.foundation:foundation-android:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.runtime:runtime-android:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.ui:ui-android:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.runtime:runtime-retain-android:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.animation:animation-android:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.foundation:foundation-layout-android:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.ui:ui-text-android:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.ui:ui-util-android:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.runtime:runtime-saveable-android:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.ui:ui-geometry-android:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.ui:ui-graphics-android:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.ui:ui-unit-android:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.animation:animation-core-android:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.runtime:runtime-annotation-android:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.ui:ui-tooling-android:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.ui:ui-tooling-preview-android:1.10.0 -> 1.11.1 (c) +| +--- androidx.compose.ui:ui-tooling-data:1.10.0 -> 1.11.1 (c) +| \--- androidx.compose.ui:ui-tooling-data-android:1.10.0 -> 1.11.1 (c) ++--- androidx.compose.ui:ui-tooling-preview -> 1.11.1 +| \--- androidx.compose.ui:ui-tooling-preview-android:1.11.1 +| +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) +| +--- androidx.compose.runtime:runtime:1.11.1 +| | \--- androidx.compose.runtime:runtime-android:1.11.1 | | +--- androidx.annotation:annotation-experimental:1.4.1 -> 1.5.1 (*) | | +--- androidx.collection:collection:1.5.0 (*) -| | +--- androidx.compose.runtime:runtime-annotation:1.10.2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 -> 1.10.2 (*) -| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.10.2 (*) -| | +--- androidx.compose.runtime:runtime-annotation:1.10.2 (c) -| | +--- androidx.compose.runtime:runtime-retain:1.10.2 (c) -| | +--- androidx.compose.runtime:runtime-tracing:1.10.2 (c) -| | +--- androidx.compose.runtime:runtime-saveable:1.10.2 (c) -| | \--- org.jetbrains.compose.runtime:runtime:1.9.0 -> 1.10.1 (c) -| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| +--- androidx.compose.ui:ui:1.10.2 (c) -| +--- androidx.compose.ui:ui-geometry:1.10.2 (c) -| +--- androidx.compose.ui:ui-graphics:1.10.2 (c) -| +--- androidx.compose.ui:ui-text:1.10.2 (c) -| +--- androidx.compose.ui:ui-tooling:1.10.2 (c) -| +--- androidx.compose.ui:ui-tooling-data:1.10.2 (c) -| +--- androidx.compose.ui:ui-unit:1.10.2 (c) -| \--- androidx.compose.ui:ui-util:1.10.2 (c) +| | +--- androidx.compose.runtime:runtime-annotation:1.11.1 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 -> 1.11.0 (*) +| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.11.0 (*) +| | +--- androidx.compose.runtime:runtime-annotation:1.11.1 (c) +| | +--- androidx.compose.runtime:runtime-retain:1.11.1 (c) +| | +--- androidx.compose.runtime:runtime-tracing:1.11.1 (c) +| | +--- androidx.compose.runtime:runtime-saveable:1.11.1 (c) +| | \--- org.jetbrains.compose.runtime:runtime:1.9.0 -> 1.11.0 (c) +| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| +--- androidx.compose.ui:ui:1.11.1 (c) +| +--- androidx.compose.ui:ui-geometry:1.11.1 (c) +| +--- androidx.compose.ui:ui-graphics:1.11.1 (c) +| +--- androidx.compose.ui:ui-text:1.11.1 (c) +| +--- androidx.compose.ui:ui-tooling:1.11.1 (c) +| +--- androidx.compose.ui:ui-tooling-data:1.11.1 (c) +| +--- androidx.compose.ui:ui-unit:1.11.1 (c) +| \--- androidx.compose.ui:ui-util:1.11.1 (c) +--- project :cmp-shared | +--- androidx.lifecycle:lifecycle-runtime-compose:2.9.4 | | \--- androidx.lifecycle:lifecycle-runtime-compose-android:2.9.4 -| | +--- androidx.annotation:annotation:1.9.1 (*) -| | +--- androidx.compose.runtime:runtime:1.9.0 -> 1.10.2 (*) +| | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) +| | +--- androidx.compose.runtime:runtime:1.9.0 -> 1.11.1 (*) | | +--- androidx.lifecycle:lifecycle-runtime:2.9.4 (*) | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.9.4 (*) | | +--- androidx.lifecycle:lifecycle-common:2.9.4 (c) @@ -712,17 +713,17 @@ | | \--- androidx.lifecycle:lifecycle-livedata-core:2.9.4 (c) | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.9.4 | | \--- androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.4 -| | +--- androidx.annotation:annotation:1.9.1 (*) -| | +--- androidx.compose.runtime:runtime:1.9.0 -> 1.10.2 (*) -| | +--- androidx.compose.ui:ui:1.9.0 -> 1.10.2 -| | | \--- androidx.compose.ui:ui-android:1.10.2 +| | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) +| | +--- androidx.compose.runtime:runtime:1.9.0 -> 1.11.1 (*) +| | +--- androidx.compose.ui:ui:1.9.0 -> 1.11.1 +| | | \--- androidx.compose.ui:ui-android:1.11.1 | | | +--- androidx.activity:activity-ktx:1.7.0 -> 1.12.2 | | | | +--- androidx.activity:activity:1.12.2 (*) | | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.1 -> 2.9.4 (*) | | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1 -> 2.9.4 | | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.9.4 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1 -> 1.10.2 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1 -> 1.11.0 (*) | | | | | +--- androidx.lifecycle:lifecycle-common:2.9.4 (c) | | | | | +--- androidx.lifecycle:lifecycle-common-java8:2.9.4 (c) | | | | | +--- androidx.lifecycle:lifecycle-livedata:2.9.4 (c) @@ -736,154 +737,154 @@ | | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.9.4 (c) | | | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.9.4 (c) | | | | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.4 (c) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | | | +--- androidx.savedstate:savedstate-ktx:1.2.1 -> 1.4.0 | | | | | +--- androidx.savedstate:savedstate:1.4.0 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | | | +--- androidx.savedstate:savedstate:1.4.0 (c) | | | | | +--- androidx.savedstate:savedstate-compose:1.4.0 (c) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (*) | | | | +--- androidx.activity:activity:1.12.2 (c) | | | | \--- androidx.activity:activity-compose:1.12.2 (c) -| | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | +--- androidx.annotation:annotation-experimental:1.4.1 -> 1.5.1 (*) | | | +--- androidx.autofill:autofill:1.0.0 | | | | \--- androidx.core:core:1.1.0 -> 1.17.0 (*) | | | +--- androidx.collection:collection:1.4.2 -> 1.5.0 (*) | | | +--- androidx.collection:collection:1.5.0 (*) -| | | +--- androidx.compose.runtime:runtime:1.10.2 (*) -| | | +--- androidx.compose.runtime:runtime-retain:1.10.2 -| | | | \--- androidx.compose.runtime:runtime-retain-android:1.10.2 +| | | +--- androidx.compose.runtime:runtime:1.11.1 (*) +| | | +--- androidx.compose.runtime:runtime-retain:1.11.1 +| | | | \--- androidx.compose.runtime:runtime-retain-android:1.11.1 | | | | +--- androidx.collection:collection:1.5.0 (*) -| | | | +--- androidx.compose.runtime:runtime:1.10.2 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.10.2 (*) -| | | | +--- androidx.compose.runtime:runtime:1.10.2 (c) -| | | | +--- androidx.compose.runtime:runtime-annotation:1.10.2 (c) -| | | | +--- androidx.compose.runtime:runtime-tracing:1.10.2 (c) -| | | | \--- androidx.compose.runtime:runtime-saveable:1.10.2 (c) -| | | +--- androidx.compose.runtime:runtime-saveable:1.10.2 -| | | | \--- androidx.compose.runtime:runtime-saveable-android:1.10.2 -| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | +--- androidx.compose.runtime:runtime:1.11.1 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.11.0 (*) +| | | | +--- androidx.compose.runtime:runtime:1.11.1 (c) +| | | | +--- androidx.compose.runtime:runtime-annotation:1.11.1 (c) +| | | | +--- androidx.compose.runtime:runtime-tracing:1.11.1 (c) +| | | | \--- androidx.compose.runtime:runtime-saveable:1.11.1 (c) +| | | +--- androidx.compose.runtime:runtime-saveable:1.11.1 +| | | | \--- androidx.compose.runtime:runtime-saveable-android:1.11.1 +| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | +--- androidx.collection:collection:1.5.0 (*) -| | | | +--- androidx.compose.runtime:runtime:1.10.2 (*) +| | | | +--- androidx.compose.runtime:runtime:1.11.1 (*) | | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.9.4 (*) | | | | +--- androidx.savedstate:savedstate-compose:1.3.2 -> 1.4.0 | | | | | \--- androidx.savedstate:savedstate-compose-android:1.4.0 -| | | | | +--- androidx.annotation:annotation:1.9.1 (*) -| | | | | +--- androidx.compose.runtime:runtime:1.9.0 -> 1.10.2 (*) +| | | | | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) +| | | | | +--- androidx.compose.runtime:runtime:1.9.0 -> 1.11.1 (*) | | | | | +--- androidx.core:core-ktx:1.13.1 -> 1.17.0 (*) | | | | | +--- androidx.savedstate:savedstate:1.4.0 (*) | | | | | +--- androidx.savedstate:savedstate:1.4.0 (c) | | | | | \--- androidx.savedstate:savedstate-ktx:1.4.0 (c) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | | | +--- androidx.compose.runtime:runtime:1.10.2 (c) -| | | | +--- androidx.compose.runtime:runtime-annotation:1.10.2 (c) -| | | | +--- androidx.compose.runtime:runtime-retain:1.10.2 (c) -| | | | +--- androidx.compose.runtime:runtime-tracing:1.10.2 (c) -| | | | \--- org.jetbrains.compose.runtime:runtime-saveable:1.9.2 -> 1.10.1 (c) -| | | +--- androidx.compose.ui:ui-geometry:1.10.2 -| | | | \--- androidx.compose.ui:ui-geometry-android:1.10.2 -| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) -| | | | +--- androidx.compose.runtime:runtime:1.10.2 (*) -| | | | +--- androidx.compose.ui:ui-util:1.10.2 -| | | | | \--- androidx.compose.ui:ui-util-android:1.10.2 +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | | | +--- androidx.compose.runtime:runtime:1.11.1 (c) +| | | | +--- androidx.compose.runtime:runtime-annotation:1.11.1 (c) +| | | | +--- androidx.compose.runtime:runtime-retain:1.11.1 (c) +| | | | +--- androidx.compose.runtime:runtime-tracing:1.11.1 (c) +| | | | \--- org.jetbrains.compose.runtime:runtime-saveable:1.9.2 -> 1.11.0 (c) +| | | +--- androidx.compose.ui:ui-geometry:1.11.1 +| | | | \--- androidx.compose.ui:ui-geometry-android:1.11.1 +| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) +| | | | +--- androidx.compose.runtime:runtime:1.11.1 (*) +| | | | +--- androidx.compose.ui:ui-util:1.11.1 +| | | | | \--- androidx.compose.ui:ui-util-android:1.11.1 | | | | | +--- androidx.annotation:annotation-experimental:1.4.1 -> 1.5.1 (*) | | | | | +--- androidx.collection:collection:1.4.3 -> 1.5.0 (*) -| | | | | +--- androidx.compose.runtime:runtime:1.10.2 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | | | | +--- androidx.compose.ui:ui:1.10.2 (c) -| | | | | +--- androidx.compose.ui:ui-geometry:1.10.2 (c) -| | | | | +--- androidx.compose.ui:ui-graphics:1.10.2 (c) -| | | | | +--- androidx.compose.ui:ui-text:1.10.2 (c) -| | | | | +--- androidx.compose.ui:ui-tooling:1.10.2 (c) -| | | | | +--- androidx.compose.ui:ui-tooling-preview:1.10.2 (c) -| | | | | +--- androidx.compose.ui:ui-unit:1.10.2 (c) -| | | | | \--- androidx.compose.ui:ui-tooling-data:1.10.2 (c) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | | | +--- androidx.compose.ui:ui:1.10.2 (c) -| | | | +--- androidx.compose.ui:ui-graphics:1.10.2 (c) -| | | | +--- androidx.compose.ui:ui-text:1.10.2 (c) -| | | | +--- androidx.compose.ui:ui-tooling:1.10.2 (c) -| | | | +--- androidx.compose.ui:ui-tooling-preview:1.10.2 (c) -| | | | +--- androidx.compose.ui:ui-unit:1.10.2 (c) -| | | | +--- androidx.compose.ui:ui-util:1.10.2 (c) -| | | | \--- androidx.compose.ui:ui-tooling-data:1.10.2 (c) -| | | +--- androidx.compose.ui:ui-graphics:1.10.2 -| | | | \--- androidx.compose.ui:ui-graphics-android:1.10.2 -| | | | +--- androidx.annotation:annotation:1.7.0 -> 1.9.1 (*) +| | | | | +--- androidx.compose.runtime:runtime:1.11.1 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | | | | +--- androidx.compose.ui:ui:1.11.1 (c) +| | | | | +--- androidx.compose.ui:ui-geometry:1.11.1 (c) +| | | | | +--- androidx.compose.ui:ui-graphics:1.11.1 (c) +| | | | | +--- androidx.compose.ui:ui-text:1.11.1 (c) +| | | | | +--- androidx.compose.ui:ui-tooling:1.11.1 (c) +| | | | | +--- androidx.compose.ui:ui-tooling-preview:1.11.1 (c) +| | | | | +--- androidx.compose.ui:ui-unit:1.11.1 (c) +| | | | | \--- androidx.compose.ui:ui-tooling-data:1.11.1 (c) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | | | +--- androidx.compose.ui:ui:1.11.1 (c) +| | | | +--- androidx.compose.ui:ui-graphics:1.11.1 (c) +| | | | +--- androidx.compose.ui:ui-text:1.11.1 (c) +| | | | +--- androidx.compose.ui:ui-tooling:1.11.1 (c) +| | | | +--- androidx.compose.ui:ui-tooling-preview:1.11.1 (c) +| | | | +--- androidx.compose.ui:ui-unit:1.11.1 (c) +| | | | +--- androidx.compose.ui:ui-util:1.11.1 (c) +| | | | \--- androidx.compose.ui:ui-tooling-data:1.11.1 (c) +| | | +--- androidx.compose.ui:ui-graphics:1.11.1 +| | | | \--- androidx.compose.ui:ui-graphics-android:1.11.1 +| | | | +--- androidx.annotation:annotation:1.7.0 -> 1.10.0 (*) | | | | +--- androidx.annotation:annotation-experimental:1.4.1 -> 1.5.1 (*) | | | | +--- androidx.collection:collection:1.4.2 -> 1.5.0 (*) -| | | | +--- androidx.compose.runtime:runtime:1.10.2 (*) -| | | | +--- androidx.compose.ui:ui-unit:1.10.2 -| | | | | \--- androidx.compose.ui:ui-unit-android:1.10.2 -| | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | +--- androidx.compose.runtime:runtime:1.11.1 (*) +| | | | +--- androidx.compose.ui:ui-unit:1.11.1 +| | | | | \--- androidx.compose.ui:ui-unit-android:1.11.1 +| | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | | +--- androidx.annotation:annotation-experimental:1.4.1 -> 1.5.1 (*) | | | | | +--- androidx.collection:collection:1.4.2 -> 1.5.0 (*) | | | | | +--- androidx.collection:collection-ktx:1.4.2 -> 1.5.0 | | | | | | +--- androidx.collection:collection:1.5.0 (*) | | | | | | \--- androidx.collection:collection:1.5.0 (c) -| | | | | +--- androidx.compose.runtime:runtime:1.10.2 (*) -| | | | | +--- androidx.compose.ui:ui-geometry:1.10.2 (*) -| | | | | +--- androidx.compose.ui:ui-util:1.10.2 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | | | | +--- androidx.compose.ui:ui:1.10.2 (c) -| | | | | +--- androidx.compose.ui:ui-geometry:1.10.2 (c) -| | | | | +--- androidx.compose.ui:ui-graphics:1.10.2 (c) -| | | | | +--- androidx.compose.ui:ui-text:1.10.2 (c) -| | | | | +--- androidx.compose.ui:ui-tooling:1.10.2 (c) -| | | | | +--- androidx.compose.ui:ui-tooling-preview:1.10.2 (c) -| | | | | +--- androidx.compose.ui:ui-util:1.10.2 (c) -| | | | | \--- androidx.compose.ui:ui-tooling-data:1.10.2 (c) -| | | | +--- androidx.compose.ui:ui-util:1.10.2 (*) +| | | | | +--- androidx.compose.runtime:runtime:1.11.1 (*) +| | | | | +--- androidx.compose.ui:ui-geometry:1.11.1 (*) +| | | | | +--- androidx.compose.ui:ui-util:1.11.1 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | | | | +--- androidx.compose.ui:ui:1.11.1 (c) +| | | | | +--- androidx.compose.ui:ui-geometry:1.11.1 (c) +| | | | | +--- androidx.compose.ui:ui-graphics:1.11.1 (c) +| | | | | +--- androidx.compose.ui:ui-text:1.11.1 (c) +| | | | | +--- androidx.compose.ui:ui-tooling:1.11.1 (c) +| | | | | +--- androidx.compose.ui:ui-tooling-preview:1.11.1 (c) +| | | | | +--- androidx.compose.ui:ui-util:1.11.1 (c) +| | | | | \--- androidx.compose.ui:ui-tooling-data:1.11.1 (c) +| | | | +--- androidx.compose.ui:ui-util:1.11.1 (*) | | | | +--- androidx.core:core:1.12.0 -> 1.17.0 (*) | | | | +--- androidx.graphics:graphics-path:1.0.1 | | | | | +--- androidx.core:core:1.12.0 -> 1.17.0 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | | | +--- androidx.compose.ui:ui:1.10.2 (c) -| | | | +--- androidx.compose.ui:ui-geometry:1.10.2 (c) -| | | | +--- androidx.compose.ui:ui-text:1.10.2 (c) -| | | | +--- androidx.compose.ui:ui-tooling:1.10.2 (c) -| | | | +--- androidx.compose.ui:ui-tooling-preview:1.10.2 (c) -| | | | +--- androidx.compose.ui:ui-unit:1.10.2 (c) -| | | | +--- androidx.compose.ui:ui-util:1.10.2 (c) -| | | | \--- androidx.compose.ui:ui-tooling-data:1.10.2 (c) -| | | +--- androidx.compose.ui:ui-text:1.10.2 -| | | | \--- androidx.compose.ui:ui-text-android:1.10.2 -| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | | | +--- androidx.compose.ui:ui:1.11.1 (c) +| | | | +--- androidx.compose.ui:ui-geometry:1.11.1 (c) +| | | | +--- androidx.compose.ui:ui-text:1.11.1 (c) +| | | | +--- androidx.compose.ui:ui-tooling:1.11.1 (c) +| | | | +--- androidx.compose.ui:ui-tooling-preview:1.11.1 (c) +| | | | +--- androidx.compose.ui:ui-unit:1.11.1 (c) +| | | | +--- androidx.compose.ui:ui-util:1.11.1 (c) +| | | | \--- androidx.compose.ui:ui-tooling-data:1.11.1 (c) +| | | +--- androidx.compose.ui:ui-text:1.11.1 +| | | | \--- androidx.compose.ui:ui-text-android:1.11.1 +| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | +--- androidx.annotation:annotation-experimental:1.4.1 -> 1.5.1 (*) | | | | +--- androidx.collection:collection:1.5.0 (*) -| | | | +--- androidx.compose.runtime:runtime:1.10.2 (*) -| | | | +--- androidx.compose.runtime:runtime-saveable:1.10.2 (*) -| | | | +--- androidx.compose.ui:ui-graphics:1.10.2 (*) -| | | | +--- androidx.compose.ui:ui-unit:1.10.2 (*) -| | | | +--- androidx.compose.ui:ui-util:1.10.2 (*) +| | | | +--- androidx.compose.runtime:runtime:1.11.1 (*) +| | | | +--- androidx.compose.runtime:runtime-saveable:1.11.1 (*) +| | | | +--- androidx.compose.ui:ui-graphics:1.11.1 (*) +| | | | +--- androidx.compose.ui:ui-unit:1.11.1 (*) +| | | | +--- androidx.compose.ui:ui-util:1.11.1 (*) | | | | +--- androidx.core:core:1.7.0 -> 1.17.0 (*) | | | | +--- androidx.emoji2:emoji2:1.4.0 -| | | | | +--- androidx.annotation:annotation:1.2.0 -> 1.9.1 (*) +| | | | | +--- androidx.annotation:annotation:1.2.0 -> 1.10.0 (*) | | | | | +--- androidx.collection:collection:1.1.0 -> 1.5.0 (*) | | | | | +--- androidx.core:core:1.3.0 -> 1.17.0 (*) | | | | | +--- androidx.lifecycle:lifecycle-process:2.4.1 -> 2.9.4 (*) | | | | | +--- androidx.startup:startup-runtime:1.0.0 -> 1.2.0 (*) | | | | | \--- androidx.emoji2:emoji2-views-helper:1.4.0 (c) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.10.2 (*) -| | | | +--- androidx.compose.ui:ui:1.10.2 (c) -| | | | +--- androidx.compose.ui:ui-geometry:1.10.2 (c) -| | | | +--- androidx.compose.ui:ui-graphics:1.10.2 (c) -| | | | +--- androidx.compose.ui:ui-tooling:1.10.2 (c) -| | | | +--- androidx.compose.ui:ui-tooling-preview:1.10.2 (c) -| | | | +--- androidx.compose.ui:ui-unit:1.10.2 (c) -| | | | +--- androidx.compose.ui:ui-util:1.10.2 (c) -| | | | \--- androidx.compose.ui:ui-tooling-data:1.10.2 (c) -| | | +--- androidx.compose.ui:ui-unit:1.10.2 (*) -| | | +--- androidx.compose.ui:ui-util:1.10.2 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.11.0 (*) +| | | | +--- androidx.compose.ui:ui:1.11.1 (c) +| | | | +--- androidx.compose.ui:ui-geometry:1.11.1 (c) +| | | | +--- androidx.compose.ui:ui-graphics:1.11.1 (c) +| | | | +--- androidx.compose.ui:ui-tooling:1.11.1 (c) +| | | | +--- androidx.compose.ui:ui-tooling-preview:1.11.1 (c) +| | | | +--- androidx.compose.ui:ui-unit:1.11.1 (c) +| | | | +--- androidx.compose.ui:ui-util:1.11.1 (c) +| | | | \--- androidx.compose.ui:ui-tooling-data:1.11.1 (c) +| | | +--- androidx.compose.ui:ui-unit:1.11.1 (*) +| | | +--- androidx.compose.ui:ui-util:1.11.1 (*) | | | +--- androidx.core:core:1.16.0 -> 1.17.0 (*) | | | +--- androidx.customview:customview-poolingcontainer:1.0.0 | | | | +--- androidx.core:core-ktx:1.5.0 -> 1.17.0 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 -> 2.2.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 -> 2.3.21 (*) | | | +--- androidx.emoji2:emoji2:1.2.0 -> 1.4.0 (*) | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 -> 2.9.4 (*) | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.9.2 -> 2.9.4 (*) @@ -892,7 +893,7 @@ | | | +--- androidx.savedstate:savedstate-compose:1.3.0 -> 1.4.0 (*) | | | +--- androidx.savedstate:savedstate-ktx:1.3.1 -> 1.4.0 (*) | | | +--- androidx.transition:transition:1.6.0 -| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | +--- androidx.collection:collection:1.4.2 -> 1.5.0 (*) | | | | +--- androidx.core:core:1.16.0 -> 1.17.0 (*) | | | | +--- androidx.dynamicanimation:dynamicanimation:1.0.0 @@ -901,37 +902,37 @@ | | | | | \--- androidx.legacy:legacy-support-core-utils:1.0.0 (*) | | | | \--- org.jspecify:jspecify:1.0.0 | | | +--- androidx.window:window:1.5.0 -| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | +--- androidx.collection:collection:1.4.2 -> 1.5.0 (*) | | | | +--- androidx.core:core:1.8.0 -> 1.17.0 (*) | | | | +--- androidx.window:window-core:1.5.0 | | | | | \--- androidx.window:window-core-android:1.5.0 -| | | | | +--- androidx.annotation:annotation:1.9.1 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | | | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | | | +--- androidx.window:window:1.5.0 (c) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1 -> 1.10.2 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1 -> 1.11.0 (*) | | | | +--- org.jspecify:jspecify:1.0.0 | | | | +--- androidx.window:window-core:1.5.0 (c) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 -> 1.10.2 (*) -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.10.2 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 -> 1.11.0 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.11.0 (*) | | | +--- org.jspecify:jspecify:1.0.0 -| | | +--- androidx.compose.ui:ui-geometry:1.10.2 (c) -| | | +--- androidx.compose.ui:ui-graphics:1.10.2 (c) -| | | +--- androidx.compose.ui:ui-text:1.10.2 (c) -| | | +--- androidx.compose.ui:ui-tooling:1.10.2 (c) -| | | +--- androidx.compose.ui:ui-tooling-preview:1.10.2 (c) -| | | +--- androidx.compose.ui:ui-unit:1.10.2 (c) -| | | +--- androidx.compose.ui:ui-util:1.10.2 (c) -| | | +--- androidx.compose.foundation:foundation:1.7.0 -> 1.10.2 (c) -| | | \--- androidx.compose.ui:ui-tooling-data:1.10.2 (c) +| | | +--- androidx.compose.ui:ui-geometry:1.11.1 (c) +| | | +--- androidx.compose.ui:ui-graphics:1.11.1 (c) +| | | +--- androidx.compose.ui:ui-text:1.11.1 (c) +| | | +--- androidx.compose.ui:ui-tooling:1.11.1 (c) +| | | +--- androidx.compose.ui:ui-tooling-preview:1.11.1 (c) +| | | +--- androidx.compose.ui:ui-unit:1.11.1 (c) +| | | +--- androidx.compose.ui:ui-util:1.11.1 (c) +| | | +--- androidx.compose.foundation:foundation:1.7.0 -> 1.11.1 (c) +| | | \--- androidx.compose.ui:ui-tooling-data:1.11.1 (c) | | +--- androidx.lifecycle:lifecycle-common:2.9.4 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel:2.9.4 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.4 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -> 1.9.0 (*) | | +--- androidx.lifecycle:lifecycle-common:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-livedata:2.9.4 (c) @@ -943,7 +944,7 @@ | | +--- androidx.lifecycle:lifecycle-viewmodel:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.4 (c) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.4 (c) | | +--- androidx.lifecycle:lifecycle-common-java8:2.9.4 (c) | | \--- androidx.lifecycle:lifecycle-livedata-core:2.9.4 (c) @@ -964,17 +965,17 @@ | +--- io.insert-koin:koin-android:4.1.1 | | +--- io.insert-koin:koin-core:4.1.1 | | | \--- io.insert-koin:koin-core-jvm:4.1.1 -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.2.21 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.3.21 (*) | | | +--- co.touchlab:stately-concurrency:2.1.0 | | | | \--- co.touchlab:stately-concurrency-jvm:2.1.0 -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.2.21 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.3.21 (*) | | | | \--- co.touchlab:stately-strict:2.1.0 | | | | \--- co.touchlab:stately-strict-jvm:2.1.0 -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.2.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.3.21 (*) | | | \--- 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.2.21 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 | | | \--- io.insert-koin:koin-core-viewmodel-android:4.1.1 | | | +--- io.insert-koin:koin-core:4.1.1 (*) @@ -985,16 +986,16 @@ | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) | | | | \--- org.jetbrains.androidx.savedstate:savedstate:1.3.6 -> 1.4.0 | | | | \--- androidx.savedstate:savedstate:1.4.0 (*) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.2.21 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.3.21 (*) | | +--- androidx.appcompat:appcompat:1.7.1 | | | +--- androidx.activity:activity:1.8.0 -> 1.12.2 (*) -| | | +--- androidx.annotation:annotation:1.3.0 -> 1.9.1 (*) +| | | +--- androidx.annotation:annotation:1.3.0 -> 1.10.0 (*) | | | +--- androidx.appcompat:appcompat-resources:1.7.1 -| | | | +--- androidx.annotation:annotation:1.2.0 -> 1.9.1 (*) +| | | | +--- androidx.annotation:annotation:1.2.0 -> 1.10.0 (*) | | | | +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) | | | | +--- androidx.core:core:1.6.0 -> 1.17.0 (*) | | | | +--- androidx.vectordrawable:vectordrawable:1.1.0 -| | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.10.0 (*) | | | | | +--- androidx.core:core:1.1.0 -> 1.17.0 (*) | | | | | \--- androidx.collection:collection:1.1.0 -> 1.5.0 (*) | | | | +--- androidx.vectordrawable:vectordrawable-animated:1.1.0 @@ -1006,9 +1007,9 @@ | | | +--- androidx.core:core:1.13.0 -> 1.17.0 (*) | | | +--- androidx.core:core-ktx:1.13.0 -> 1.17.0 (*) | | | +--- androidx.cursoradapter:cursoradapter:1.0.0 -| | | | \--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) +| | | | \--- androidx.annotation:annotation:1.0.0 -> 1.10.0 (*) | | | +--- androidx.drawerlayout:drawerlayout:1.0.0 -| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) +| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.10.0 (*) | | | | +--- androidx.core:core:1.0.0 -> 1.17.0 (*) | | | | \--- androidx.customview:customview:1.0.0 -> 1.1.0 (*) | | | +--- androidx.emoji2:emoji2:1.3.0 -> 1.4.0 (*) @@ -1022,9 +1023,9 @@ | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.9.4 (*) | | | +--- androidx.profileinstaller:profileinstaller:1.3.1 -> 1.4.1 (*) | | | +--- androidx.resourceinspection:resourceinspection-annotation:1.0.1 -| | | | \--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | | \--- androidx.annotation:annotation:1.1.0 -> 1.10.0 (*) | | | +--- androidx.savedstate:savedstate:1.2.1 -> 1.4.0 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) | | | \--- androidx.appcompat:appcompat-resources:1.7.1 (c) | | +--- androidx.activity:activity-ktx:1.10.1 -> 1.12.2 (*) | | +--- androidx.fragment:fragment-ktx:1.8.9 @@ -1035,177 +1036,175 @@ | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.6.1 -> 2.9.4 (*) | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1 -> 2.9.4 (*) | | | +--- androidx.savedstate:savedstate-ktx:1.2.1 -> 1.4.0 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) | | | \--- androidx.fragment:fragment:1.8.9 (c) | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.3 -> 2.9.4 (*) -| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.2.21 (*) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.3.21 (*) | +--- io.insert-koin:koin-androidx-compose:4.1.1 | | +--- io.insert-koin:koin-compose:4.1.1 | | | \--- io.insert-koin:koin-compose-android:4.1.1 | | | +--- io.insert-koin:koin-android:4.1.1 (*) | | | +--- io.insert-koin:koin-core:4.1.1 (*) -| | | +--- org.jetbrains.compose.runtime:runtime:1.8.2 -> 1.10.1 -| | | | \--- androidx.compose.runtime:runtime:1.10.2 (*) -| | | +--- org.jetbrains.compose.foundation:foundation:1.8.2 -> 1.10.0 -| | | | +--- androidx.compose.foundation:foundation:1.10.0 -> 1.10.2 -| | | | | \--- androidx.compose.foundation:foundation-android:1.10.2 -| | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | +--- org.jetbrains.compose.runtime:runtime:1.8.2 -> 1.11.0 +| | | | +--- androidx.compose.runtime:runtime:1.11.1 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) +| | | +--- org.jetbrains.compose.foundation:foundation:1.8.2 -> 1.11.0 +| | | | +--- androidx.collection:collection:1.5.0 (*) +| | | | +--- androidx.compose.foundation:foundation:1.11.1 +| | | | | \--- androidx.compose.foundation:foundation-android:1.11.1 +| | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | | +--- androidx.annotation:annotation-experimental:1.4.1 -> 1.5.1 (*) | | | | | +--- androidx.collection:collection:1.5.0 (*) -| | | | | +--- androidx.compose.animation:animation:1.10.2 -| | | | | | \--- androidx.compose.animation:animation-android:1.10.2 -| | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | | +--- androidx.compose.animation:animation:1.11.1 +| | | | | | \--- androidx.compose.animation:animation-android:1.11.1 +| | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | | | +--- androidx.annotation:annotation-experimental:1.4.1 -> 1.5.1 (*) | | | | | | +--- androidx.collection:collection:1.5.0 (*) -| | | | | | +--- androidx.compose.animation:animation-core:1.10.2 -| | | | | | | \--- androidx.compose.animation:animation-core-android:1.10.2 -| | | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | | | +--- androidx.compose.animation:animation-core:1.11.1 +| | | | | | | \--- androidx.compose.animation:animation-core-android:1.11.1 +| | | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | | | | +--- androidx.collection:collection:1.5.0 (*) -| | | | | | | +--- androidx.compose.runtime:runtime:1.10.2 (*) -| | | | | | | +--- androidx.compose.ui:ui:1.10.2 (*) -| | | | | | | +--- androidx.compose.ui:ui-graphics:1.10.2 (*) -| | | | | | | +--- androidx.compose.ui:ui-unit:1.10.2 (*) -| | | | | | | +--- androidx.compose.ui:ui-util:1.10.2 (*) -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.10.2 (*) -| | | | | | | \--- androidx.compose.animation:animation:1.10.2 (c) -| | | | | | +--- androidx.compose.foundation:foundation-layout:1.10.2 -| | | | | | | \--- androidx.compose.foundation:foundation-layout-android:1.10.2 -| | | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | | | | +--- androidx.compose.runtime:runtime:1.11.1 (*) +| | | | | | | +--- androidx.compose.ui:ui:1.10.0 -> 1.11.1 (*) +| | | | | | | +--- androidx.compose.ui:ui-graphics:1.10.0 -> 1.11.1 (*) +| | | | | | | +--- androidx.compose.ui:ui-unit:1.10.0 -> 1.11.1 (*) +| | | | | | | +--- androidx.compose.ui:ui-util:1.10.0 -> 1.11.1 (*) +| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.11.0 (*) +| | | | | | | \--- androidx.compose.animation:animation:1.11.1 (c) +| | | | | | +--- androidx.compose.foundation:foundation-layout:1.10.0 -> 1.11.1 +| | | | | | | \--- androidx.compose.foundation:foundation-layout-android:1.11.1 +| | | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | | | | +--- androidx.annotation:annotation-experimental:1.4.1 -> 1.5.1 (*) | | | | | | | +--- androidx.collection:collection:1.5.0 (*) -| | | | | | | +--- androidx.compose.animation:animation-core:1.2.1 -> 1.10.2 (*) -| | | | | | | +--- androidx.compose.runtime:runtime:1.10.2 (*) -| | | | | | | +--- androidx.compose.ui:ui:1.10.2 (*) -| | | | | | | +--- androidx.compose.ui:ui-unit:1.10.2 (*) -| | | | | | | +--- androidx.compose.ui:ui-util:1.10.2 (*) +| | | | | | | +--- androidx.compose.animation:animation-core:1.2.1 -> 1.11.1 (*) +| | | | | | | +--- androidx.compose.runtime:runtime:1.11.1 (*) +| | | | | | | +--- androidx.compose.ui:ui:1.11.1 (*) +| | | | | | | +--- androidx.compose.ui:ui-unit:1.10.0 -> 1.11.1 (*) +| | | | | | | +--- androidx.compose.ui:ui-util:1.10.0 -> 1.11.1 (*) | | | | | | | +--- androidx.core:core:1.16.0 -> 1.17.0 (*) -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | | | | | | \--- androidx.compose.foundation:foundation:1.10.2 (c) -| | | | | | +--- androidx.compose.runtime:runtime:1.10.2 (*) -| | | | | | +--- androidx.compose.ui:ui:1.10.2 (*) -| | | | | | +--- androidx.compose.ui:ui-geometry:1.10.2 (*) -| | | | | | +--- androidx.compose.ui:ui-graphics:1.10.2 (*) -| | | | | | +--- androidx.compose.ui:ui-util:1.10.2 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | | | | | \--- androidx.compose.animation:animation-core:1.10.2 (c) -| | | | | +--- androidx.compose.foundation:foundation-layout:1.10.2 (*) -| | | | | +--- androidx.compose.runtime:runtime:1.10.2 (*) -| | | | | +--- androidx.compose.ui:ui:1.10.2 (*) -| | | | | +--- androidx.compose.ui:ui-text:1.10.2 (*) -| | | | | +--- androidx.compose.ui:ui-util:1.10.2 (*) +| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | | | | | | \--- androidx.compose.foundation:foundation:1.11.1 (c) +| | | | | | +--- androidx.compose.runtime:runtime:1.11.1 (*) +| | | | | | +--- androidx.compose.ui:ui:1.10.0 -> 1.11.1 (*) +| | | | | | +--- androidx.compose.ui:ui-geometry:1.10.0 -> 1.11.1 (*) +| | | | | | +--- androidx.compose.ui:ui-graphics:1.10.0 -> 1.11.1 (*) +| | | | | | +--- androidx.compose.ui:ui-util:1.10.0 -> 1.11.1 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | | | | | \--- androidx.compose.animation:animation-core:1.11.1 (c) +| | | | | +--- androidx.compose.foundation:foundation-layout:1.11.1 (*) +| | | | | +--- androidx.compose.runtime:runtime:1.11.1 (*) +| | | | | +--- androidx.compose.ui:ui:1.10.0 -> 1.11.1 (*) +| | | | | +--- androidx.compose.ui:ui-text:1.10.0 -> 1.11.1 (*) +| | | | | +--- androidx.compose.ui:ui-util:1.10.0 -> 1.11.1 (*) | | | | | +--- androidx.core:core:1.13.1 -> 1.17.0 (*) | | | | | +--- androidx.emoji2:emoji2:1.3.0 -> 1.4.0 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | | | | \--- androidx.compose.foundation:foundation-layout:1.10.2 (c) -| | | | +--- org.jetbrains.compose.animation:animation:1.10.0 -| | | | | +--- androidx.compose.animation:animation:1.10.0 -> 1.10.2 (*) -| | | | | +--- org.jetbrains.compose.animation:animation-core:1.10.0 -| | | | | | +--- androidx.compose.animation:animation-core:1.10.0 -> 1.10.2 (*) -| | | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.10.0 -> 1.10.1 -| | | | | | | \--- androidx.annotation:annotation:1.9.1 (*) -| | | | | | +--- org.jetbrains.compose.collection-internal:collection:1.10.0 -> 1.10.1 -| | | | | | | \--- androidx.collection:collection:1.5.0 (*) -| | | | | | +--- org.jetbrains.compose.runtime:runtime:1.10.0 -> 1.10.1 (*) -| | | | | | +--- org.jetbrains.compose.ui:ui:1.10.0 -> 1.10.1 -| | | | | | | +--- androidx.compose.runtime:runtime-retain:1.10.2 (*) -| | | | | | | +--- androidx.compose.ui:ui:1.10.2 (*) -| | | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.6 -| | | | | | | | \--- androidx.lifecycle:lifecycle-common:2.9.4 (*) -| | | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.6 -| | | | | | | | +--- androidx.lifecycle:lifecycle-runtime:2.9.4 (*) -| | | | | | | | \--- org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.6 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | | | | \--- androidx.compose.foundation:foundation-layout:1.11.1 (c) +| | | | +--- org.jetbrains.compose.animation:animation:1.11.0 +| | | | | +--- androidx.collection:collection:1.5.0 (*) +| | | | | +--- androidx.compose.animation:animation:1.11.1 (*) +| | | | | +--- org.jetbrains.compose.animation:animation-core:1.11.0 +| | | | | | +--- androidx.collection:collection:1.5.0 (*) +| | | | | | +--- androidx.compose.animation:animation-core:1.11.1 (*) +| | | | | | +--- org.jetbrains.compose.runtime:runtime:1.11.0 (*) +| | | | | | +--- org.jetbrains.compose.ui:ui:1.11.0 +| | | | | | | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) +| | | | | | | +--- androidx.collection:collection:1.5.0 (*) +| | | | | | | +--- androidx.compose.runtime:runtime-retain:1.11.1 (*) +| | | | | | | +--- androidx.compose.ui:ui:1.11.1 (*) +| | | | | | | +--- androidx.savedstate:savedstate-compose:1.4.0 (*) | | | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 | | | | | | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.9.4 (*) -| | | | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.6 (*) -| | | | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.6 (*) -| | | | | | | | \--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | | | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.6 +| | | | | | | | | \--- androidx.lifecycle:lifecycle-common:2.9.4 (*) +| | | | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.6 +| | | | | | | | | +--- androidx.lifecycle:lifecycle-runtime:2.9.4 (*) +| | | | | | | | | \--- org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.6 (*) +| | | | | | | | \--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) | | | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.6 (*) -| | | | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.10.1 (*) -| | | | | | | +--- org.jetbrains.compose.collection-internal:collection:1.10.1 (*) -| | | | | | | +--- org.jetbrains.compose.runtime:runtime:1.10.1 (*) -| | | | | | | +--- org.jetbrains.compose.runtime:runtime-saveable:1.10.1 -| | | | | | | | +--- androidx.compose.runtime:runtime-saveable:1.10.2 (*) +| | | | | | | +--- org.jetbrains.compose.runtime:runtime:1.11.0 (*) +| | | | | | | +--- org.jetbrains.compose.runtime:runtime-saveable:1.11.0 +| | | | | | | | +--- androidx.compose.runtime:runtime-saveable:1.11.1 (*) | | | | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | | | | | | | +--- org.jetbrains.androidx.savedstate:savedstate-compose:1.3.6 | | | | | | | | | +--- androidx.savedstate:savedstate-compose:1.3.3 -> 1.4.0 (*) | | | | | | | | | +--- org.jetbrains.androidx.savedstate:savedstate:1.3.6 -> 1.4.0 (*) -| | | | | | | | | \--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) -| | | | | | | | \--- org.jetbrains.compose.runtime:runtime:1.10.1 (*) -| | | | | | | +--- org.jetbrains.compose.ui:ui-geometry:1.10.1 -| | | | | | | | +--- androidx.compose.ui:ui-geometry:1.10.2 (*) -| | | | | | | | +--- org.jetbrains.compose.runtime:runtime:1.10.1 (*) -| | | | | | | | +--- org.jetbrains.compose.ui:ui-util:1.10.1 -| | | | | | | | | +--- androidx.compose.ui:ui-util:1.10.2 (*) -| | | | | | | | | +--- org.jetbrains.compose.collection-internal:collection:1.10.1 (*) -| | | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | | | +--- org.jetbrains.compose.ui:ui-graphics:1.10.1 -| | | | | | | | +--- androidx.compose.ui:ui-graphics:1.10.2 (*) -| | | | | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.10.1 (*) -| | | | | | | | +--- org.jetbrains.compose.collection-internal:collection:1.10.1 (*) -| | | | | | | | +--- org.jetbrains.compose.runtime:runtime:1.10.1 (*) -| | | | | | | | +--- org.jetbrains.compose.ui:ui-geometry:1.10.1 (*) -| | | | | | | | +--- org.jetbrains.compose.ui:ui-unit:1.10.1 -| | | | | | | | | +--- androidx.compose.ui:ui-unit:1.10.2 (*) -| | | | | | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.10.1 (*) -| | | | | | | | | +--- org.jetbrains.compose.runtime:runtime:1.10.1 (*) -| | | | | | | | | +--- org.jetbrains.compose.ui:ui-geometry:1.10.1 (*) -| | | | | | | | | +--- org.jetbrains.compose.ui:ui-util:1.10.1 (*) -| | | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | | | | +--- org.jetbrains.compose.ui:ui-util:1.10.1 (*) -| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | | | +--- org.jetbrains.compose.ui:ui-text:1.10.1 -| | | | | | | | +--- androidx.compose.ui:ui-text:1.10.2 (*) -| | | | | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.10.1 (*) -| | | | | | | | +--- org.jetbrains.compose.collection-internal:collection:1.10.1 (*) -| | | | | | | | +--- org.jetbrains.compose.runtime:runtime:1.10.1 (*) -| | | | | | | | +--- org.jetbrains.compose.runtime:runtime-saveable:1.10.1 (*) -| | | | | | | | +--- org.jetbrains.compose.ui:ui-geometry:1.10.1 (*) -| | | | | | | | +--- org.jetbrains.compose.ui:ui-graphics:1.10.1 (*) -| | | | | | | | +--- org.jetbrains.compose.ui:ui-unit:1.10.1 (*) -| | | | | | | | +--- org.jetbrains.compose.ui:ui-util:1.10.1 (*) -| | | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.10.2 (*) -| | | | | | | +--- org.jetbrains.compose.ui:ui-unit:1.10.1 (*) -| | | | | | | +--- org.jetbrains.compose.ui:ui-util:1.10.1 (*) -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.10.2 (*) -| | | | | | +--- org.jetbrains.compose.ui:ui-unit:1.10.0 -> 1.10.1 (*) -| | | | | | +--- org.jetbrains.compose.ui:ui-util:1.10.0 -> 1.10.1 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.10.2 (*) -| | | | | +--- org.jetbrains.compose.collection-internal:collection:1.10.0 -> 1.10.1 (*) -| | | | | +--- org.jetbrains.compose.foundation:foundation-layout:1.10.0 -| | | | | | +--- androidx.compose.foundation:foundation-layout:1.10.0 -> 1.10.2 (*) -| | | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.10.0 -> 1.10.1 (*) -| | | | | | +--- org.jetbrains.compose.collection-internal:collection:1.10.0 -> 1.10.1 (*) -| | | | | | +--- org.jetbrains.compose.runtime:runtime:1.10.0 -> 1.10.1 (*) -| | | | | | +--- org.jetbrains.compose.ui:ui:1.10.0 -> 1.10.1 (*) -| | | | | | +--- org.jetbrains.compose.ui:ui-util:1.10.0 -> 1.10.1 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | +--- org.jetbrains.compose.runtime:runtime:1.10.0 -> 1.10.1 (*) -| | | | | +--- org.jetbrains.compose.ui:ui:1.10.0 -> 1.10.1 (*) -| | | | | +--- org.jetbrains.compose.ui:ui-geometry:1.10.0 -> 1.10.1 (*) -| | | | | +--- org.jetbrains.compose.ui:ui-util:1.10.0 -> 1.10.1 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.10.0 -> 1.10.1 (*) -| | | | +--- org.jetbrains.compose.collection-internal:collection:1.10.0 -> 1.10.1 (*) -| | | | +--- org.jetbrains.compose.foundation:foundation-layout:1.10.0 (*) -| | | | +--- org.jetbrains.compose.runtime:runtime:1.10.0 -> 1.10.1 (*) -| | | | +--- org.jetbrains.compose.ui:ui:1.10.0 -> 1.10.1 (*) -| | | | +--- org.jetbrains.compose.ui:ui-text:1.10.0 -> 1.10.1 (*) -| | | | +--- org.jetbrains.compose.ui:ui-util:1.10.0 -> 1.10.1 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.2.21 (*) +| | | | | | | | | \--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) +| | | | | | | | +--- org.jetbrains.compose.runtime:runtime:1.11.0 (*) +| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) +| | | | | | | +--- org.jetbrains.compose.ui:ui-geometry:1.11.0 +| | | | | | | | +--- androidx.compose.ui:ui-geometry:1.11.1 (*) +| | | | | | | | +--- org.jetbrains.compose.runtime:runtime:1.11.0 (*) +| | | | | | | | +--- org.jetbrains.compose.ui:ui-util:1.11.0 +| | | | | | | | | +--- androidx.collection:collection:1.5.0 (*) +| | | | | | | | | +--- androidx.compose.ui:ui-util:1.11.1 (*) +| | | | | | | | | +--- org.jetbrains.compose.runtime:runtime:1.11.0 (*) +| | | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) +| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) +| | | | | | | +--- org.jetbrains.compose.ui:ui-graphics:1.11.0 +| | | | | | | | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) +| | | | | | | | +--- androidx.collection:collection:1.5.0 (*) +| | | | | | | | +--- androidx.compose.ui:ui-graphics:1.11.1 (*) +| | | | | | | | +--- org.jetbrains.compose.runtime:runtime:1.11.0 (*) +| | | | | | | | +--- org.jetbrains.compose.ui:ui-unit:1.11.0 +| | | | | | | | | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) +| | | | | | | | | +--- androidx.collection:collection:1.5.0 (*) +| | | | | | | | | +--- androidx.compose.ui:ui-unit:1.11.1 (*) +| | | | | | | | | +--- org.jetbrains.compose.runtime:runtime:1.11.0 (*) +| | | | | | | | | +--- org.jetbrains.compose.ui:ui-geometry:1.11.0 (*) +| | | | | | | | | +--- org.jetbrains.compose.ui:ui-util:1.11.0 (*) +| | | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) +| | | | | | | | +--- org.jetbrains.compose.ui:ui-util:1.11.0 (*) +| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) +| | | | | | | +--- org.jetbrains.compose.ui:ui-text:1.11.0 +| | | | | | | | +--- androidx.collection:collection:1.5.0 (*) +| | | | | | | | +--- androidx.compose.ui:ui-text:1.11.1 (*) +| | | | | | | | +--- org.jetbrains.compose.runtime:runtime:1.11.0 (*) +| | | | | | | | +--- org.jetbrains.compose.runtime:runtime-saveable:1.11.0 (*) +| | | | | | | | +--- org.jetbrains.compose.ui:ui-graphics:1.11.0 (*) +| | | | | | | | +--- org.jetbrains.compose.ui:ui-unit:1.11.0 (*) +| | | | | | | | +--- org.jetbrains.compose.ui:ui-util:1.11.0 (*) +| | | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) +| | | | | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.11.0 (*) +| | | | | | | +--- org.jetbrains.compose.ui:ui-unit:1.11.0 (*) +| | | | | | | +--- org.jetbrains.compose.ui:ui-util:1.11.0 (*) +| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) +| | | | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.11.0 (*) +| | | | | | +--- org.jetbrains.compose.ui:ui-graphics:1.11.0 (*) +| | | | | | +--- org.jetbrains.compose.ui:ui-unit:1.11.0 (*) +| | | | | | +--- org.jetbrains.compose.ui:ui-util:1.11.0 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) +| | | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.11.0 (*) +| | | | | +--- org.jetbrains.compose.foundation:foundation-layout:1.11.0 +| | | | | | +--- androidx.collection:collection:1.5.0 (*) +| | | | | | +--- androidx.compose.foundation:foundation-layout:1.11.1 (*) +| | | | | | +--- org.jetbrains.compose.runtime:runtime:1.11.0 (*) +| | | | | | +--- org.jetbrains.compose.ui:ui:1.11.0 (*) +| | | | | | +--- org.jetbrains.compose.ui:ui-unit:1.11.0 (*) +| | | | | | +--- org.jetbrains.compose.ui:ui-util:1.11.0 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) +| | | | | +--- org.jetbrains.compose.runtime:runtime:1.11.0 (*) +| | | | | +--- org.jetbrains.compose.ui:ui:1.11.0 (*) +| | | | | +--- org.jetbrains.compose.ui:ui-geometry:1.11.0 (*) +| | | | | +--- org.jetbrains.compose.ui:ui-graphics:1.11.0 (*) +| | | | | +--- org.jetbrains.compose.ui:ui-util:1.11.0 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) +| | | | +--- org.jetbrains.compose.foundation:foundation-layout:1.11.0 (*) +| | | | +--- org.jetbrains.compose.runtime:runtime:1.11.0 (*) +| | | | +--- org.jetbrains.compose.ui:ui:1.11.0 (*) +| | | | +--- org.jetbrains.compose.ui:ui-text:1.11.0 (*) +| | | | +--- org.jetbrains.compose.ui:ui-util:1.11.0 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 | | | \--- io.insert-koin:koin-compose-viewmodel-android:4.1.1 | | | +--- androidx.activity:activity-compose:1.10.1 -> 1.12.2 | | | | +--- androidx.activity:activity:1.12.2 (*) -| | | | +--- androidx.compose.runtime:runtime:1.7.0 -> 1.10.2 (*) -| | | | +--- androidx.compose.runtime:runtime-saveable:1.7.0 -> 1.10.2 (*) -| | | | +--- androidx.compose.ui:ui:1.0.1 -> 1.10.2 (*) +| | | | +--- androidx.compose.runtime:runtime:1.7.0 -> 1.11.1 (*) +| | | | +--- androidx.compose.runtime:runtime-saveable:1.7.0 -> 1.11.1 (*) +| | | | +--- androidx.compose.ui:ui:1.0.1 -> 1.11.1 (*) | | | | +--- androidx.core:core-ktx:1.13.0 -> 1.17.0 (*) | | | | +--- androidx.lifecycle:lifecycle-common:2.9.4 (*) | | | | +--- androidx.lifecycle:lifecycle-runtime:2.9.4 (*) @@ -1213,32 +1212,32 @@ | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.9.4 (*) | | | | +--- androidx.navigationevent:navigationevent-compose:1.0.1 -> 1.0.2 | | | | | \--- androidx.navigationevent:navigationevent-compose-android:1.0.2 -| | | | | +--- androidx.compose.runtime:runtime:1.9.2 -> 1.10.2 (*) -| | | | | +--- androidx.compose.ui:ui:1.9.2 -> 1.10.2 (*) +| | | | | +--- androidx.compose.runtime:runtime:1.9.2 -> 1.11.1 (*) +| | | | | +--- androidx.compose.ui:ui:1.9.2 -> 1.11.1 (*) | | | | | +--- androidx.navigationevent:navigationevent:1.0.2 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.10.2 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.11.0 (*) | | | | | +--- androidx.navigationevent:navigationevent:1.0.2 (c) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | | | +--- androidx.savedstate:savedstate:1.2.1 -> 1.4.0 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.10.2 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.11.0 (*) | | | | +--- androidx.activity:activity:1.12.2 (c) | | | | \--- androidx.activity:activity-ktx:1.12.2 (c) | | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.3 -> 2.9.6 -| | | | +--- androidx.annotation:annotation:1.9.1 (*) +| | | | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) | | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.9.4 (*) | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.6 (*) | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.6 (*) -| | | | +--- org.jetbrains.compose.runtime:runtime:1.9.0 -> 1.10.1 (*) -| | | | +--- org.jetbrains.compose.ui:ui:1.8.2 -> 1.10.1 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | | +--- org.jetbrains.compose.runtime:runtime:1.9.0 -> 1.11.0 (*) +| | | | +--- org.jetbrains.compose.ui:ui:1.8.2 -> 1.11.0 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -> 1.9.0 (*) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.2.21 (*) -| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.2.21 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.3.21 (*) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.3.21 (*) | +--- io.insert-koin:koin-androidx-navigation:4.1.1 | | +--- io.insert-koin:koin-android:4.1.1 (*) | | +--- androidx.navigation:navigation-fragment-ktx:2.9.3 -> 2.9.4 @@ -1251,7 +1250,7 @@ | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.2 -> 2.9.4 (*) | | | | +--- androidx.navigation:navigation-common:2.9.4 | | | | | \--- androidx.navigation:navigation-common-android:2.9.4 -| | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | | +--- androidx.collection:collection:1.4.2 -> 1.5.0 (*) | | | | | +--- androidx.core:core-ktx:1.1.0 -> 1.17.0 (*) | | | | | +--- androidx.lifecycle:lifecycle-common:2.9.0 -> 2.9.4 (*) @@ -1260,13 +1259,13 @@ | | | | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0 -> 2.9.4 (*) | | | | | +--- androidx.profileinstaller:profileinstaller:1.4.0 -> 1.4.1 (*) | | | | | +--- androidx.savedstate:savedstate:1.3.0 -> 1.4.0 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -> 1.9.0 (*) | | | | | +--- androidx.navigation:navigation-compose:2.9.4 (c) | | | | | +--- androidx.navigation:navigation-fragment:2.9.4 (c) | | | | | +--- androidx.navigation:navigation-fragment-ktx:2.9.4 (c) | | | | | +--- androidx.navigation:navigation-runtime:2.9.4 (c) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | | | +--- androidx.navigation:navigation-runtime:2.9.4 | | | | | \--- androidx.navigation:navigation-runtime-android:2.9.4 | | | | | +--- androidx.activity:activity-ktx:1.7.1 -> 1.12.2 (*) @@ -1279,66 +1278,66 @@ | | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 -> 2.9.4 (*) | | | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7 -> 2.9.4 (*) | | | | | +--- androidx.navigation:navigation-common:2.9.4 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.11.0 (*) | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -> 1.9.0 (*) | | | | | +--- androidx.navigation:navigation-common:2.9.4 (c) | | | | | +--- androidx.navigation:navigation-compose:2.9.4 (c) | | | | | +--- androidx.navigation:navigation-fragment:2.9.4 (c) | | | | | +--- androidx.navigation:navigation-fragment-ktx:2.9.4 (c) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | | | +--- androidx.savedstate:savedstate:1.2.1 -> 1.4.0 (*) | | | | +--- androidx.slidingpanelayout:slidingpanelayout:1.2.0 -| | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.10.0 (*) | | | | | +--- androidx.customview:customview:1.1.0 (*) | | | | | +--- androidx.core:core:1.1.0 -> 1.17.0 (*) | | | | | +--- androidx.window:window:1.0.0 -> 1.5.0 (*) | | | | | \--- androidx.transition:transition:1.4.1 -> 1.6.0 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.11.0 (*) | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -> 1.9.0 (*) | | | | +--- androidx.navigation:navigation-common:2.9.4 (c) | | | | +--- androidx.navigation:navigation-compose:2.9.4 (c) | | | | +--- androidx.navigation:navigation-fragment-ktx:2.9.4 (c) | | | | +--- androidx.navigation:navigation-runtime:2.9.4 (c) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | | +--- androidx.navigation:navigation-common:2.9.4 (c) | | | +--- androidx.navigation:navigation-compose:2.9.4 (c) | | | +--- androidx.navigation:navigation-fragment:2.9.4 (c) | | | \--- androidx.navigation:navigation-runtime:2.9.4 (c) -| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.2.21 (*) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.3.21 (*) | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) | +--- project :core:data | | +--- androidx.core:core-ktx:1.17.0 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0 (*) | | +--- io.insert-koin:koin-android:4.1.1 (*) | | +--- project :core:common -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2 -> 1.11.0 (*) | | | +--- io.coil-kt.coil3:coil:3.3.0 | | | | \--- io.coil-kt.coil3:coil-android:3.3.0 | | | | +--- io.coil-kt.coil3:coil-core:3.3.0 | | | | | \--- io.coil-kt.coil3:coil-core-android:3.3.0 | | | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.7 -> 2.9.4 (*) -| | | | | +--- androidx.annotation:annotation:1.9.1 (*) +| | | | | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) | | | | | +--- androidx.appcompat:appcompat-resources:1.7.1 (*) | | | | | +--- androidx.core:core-ktx:1.15.0 -> 1.17.0 (*) | | | | | +--- androidx.exifinterface:exifinterface:1.4.1 -| | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | | | \--- org.jspecify:jspecify:1.0.0 | | | | | +--- androidx.profileinstaller:profileinstaller:1.4.1 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2 -> 1.11.0 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | | | +--- com.squareup.okio:okio:3.15.0 -> 3.16.4 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.2.21 (c) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.2.21 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.3.21 (c) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.3.21 (*) | | | +--- io.coil-kt.coil3:coil-core:3.3.0 (*) | | | +--- io.coil-kt.coil3:coil-svg:3.3.0 | | | | \--- io.coil-kt.coil3:coil-svg-android:3.3.0 | | | | +--- androidx.core:core-ktx:1.15.0 -> 1.17.0 (*) | | | | +--- com.caverock:androidsvg-aar:1.4 | | | | +--- io.coil-kt.coil3:coil-core:3.3.0 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.2.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.3.21 (*) | | | +--- io.coil-kt.coil3:coil-network-ktor3:3.3.0 | | | | \--- io.coil-kt.coil3:coil-network-ktor3-android:3.3.0 | | | | +--- io.coil-kt.coil3:coil-core:3.3.0 (*) @@ -1346,118 +1345,118 @@ | | | | | \--- io.coil-kt.coil3:coil-network-core-android:3.3.0 | | | | | +--- androidx.core:core-ktx:1.15.0 -> 1.17.0 (*) | | | | | +--- io.coil-kt.coil3:coil-core:3.3.0 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.2.21 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.3.21 (*) | | | | +--- io.ktor:ktor-client-core:3.1.0 -> 3.3.3 | | | | | \--- io.ktor:ktor-client-core-jvm:3.3.3 | | | | | +--- org.slf4j:slf4j-api:2.0.17 -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | | | +--- io.ktor:ktor-http:3.3.3 | | | | | | \--- io.ktor:ktor-http-jvm:3.3.3 | | | | | | +--- org.slf4j:slf4j-api:2.0.17 -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | | | | +--- io.ktor:ktor-utils:3.3.3 | | | | | | | \--- io.ktor:ktor-utils-jvm:3.3.3 | | | | | | | +--- org.slf4j:slf4j-api:2.0.17 -| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | | | | | +--- io.ktor:ktor-io:3.3.3 | | | | | | | | \--- io.ktor:ktor-io-jvm:3.3.3 | | | | | | | | +--- org.slf4j:slf4j-api:2.0.17 -| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-io-core:0.8.0 | | | | | | | | | \--- org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.8.0 | | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-io-bytestring:0.8.0 | | | | | | | | | | \--- org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.8.0 -| | | | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.2.21 (*) -| | | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.2.21 (*) -| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.3.21 (*) +| | | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.3.21 (*) +| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.9.0 (*) -| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.9.0 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | | | +--- io.ktor:ktor-http-cio:3.3.3 | | | | | | \--- io.ktor:ktor-http-cio-jvm:3.3.3 | | | | | | +--- org.slf4j:slf4j-api:2.0.17 | | | | | | +--- io.ktor:ktor-network:3.3.3 | | | | | | | \--- io.ktor:ktor-network-jvm:3.3.3 | | | | | | | +--- org.slf4j:slf4j-api:2.0.17 -| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | | | | | +--- io.ktor:ktor-utils:3.3.3 (*) -| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) +| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | | | | +--- io.ktor:ktor-http:3.3.3 (*) | | | | | | +--- io.ktor:ktor-io:3.3.3 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | | | +--- io.ktor:ktor-events:3.3.3 | | | | | | \--- io.ktor:ktor-events-jvm:3.3.3 | | | | | | +--- org.slf4j:slf4j-api:2.0.17 -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | | | | +--- io.ktor:ktor-utils:3.3.3 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | | | +--- io.ktor:ktor-websocket-serialization:3.3.3 | | | | | | \--- io.ktor:ktor-websocket-serialization-jvm:3.3.3 | | | | | | +--- org.slf4j:slf4j-api:2.0.17 -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | | | | +--- io.ktor:ktor-serialization:3.3.3 | | | | | | | \--- io.ktor:ktor-serialization-jvm:3.3.3 | | | | | | | +--- org.slf4j:slf4j-api:2.0.17 -| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | | | | | +--- io.ktor:ktor-websockets:3.3.3 | | | | | | | | \--- io.ktor:ktor-websockets-jvm:3.3.3 | | | | | | | | +--- org.slf4j:slf4j-api:2.0.17 -| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | | | | | | +--- io.ktor:ktor-utils:3.3.3 (*) | | | | | | | | +--- io.ktor:ktor-http:3.3.3 (*) -| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) -| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) +| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | | | +--- io.ktor:ktor-sse:3.3.3 | | | | | | \--- io.ktor:ktor-sse-jvm:3.3.3 | | | | | | +--- org.slf4j:slf4j-api:2.0.17 -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | | | | +--- io.ktor:ktor-utils:3.3.3 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) -| | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.2 +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) +| | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.2 -> 1.11.0 | | | | | +--- org.slf4j:slf4j-api:1.7.32 -> 2.0.17 -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.2 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.2.21 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.2.21 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.11.0 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.3.21 (*) | | | +--- co.touchlab:kermit:2.0.8 | | | | \--- co.touchlab:kermit-android:2.0.8 | | | | +--- co.touchlab:kermit-core:2.0.8 | | | | | \--- co.touchlab:kermit-core-android:2.0.8 -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.2.21 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.2.21 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.3.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.3.21 (*) | | | +--- com.squareup.okio:okio:3.16.4 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | +--- org.jetbrains.kotlinx:kotlinx-datetime:0.7.1 | | | | \--- org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1 -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.2.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) | | | +--- io.insert-koin:koin-bom:4.1.1 (*) | | | +--- io.insert-koin:koin-core:4.1.1 (*) | | | +--- io.insert-koin:koin-annotations:2.1.0 | | | | \--- io.insert-koin:koin-annotations-jvm:2.1.0 | | | | +--- io.insert-koin:koin-core-annotations:4.1.0 -> 4.1.1 | | | | | \--- io.insert-koin:koin-core-annotations-jvm:4.1.1 -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.2.21 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.2.21 (*) -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.3.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 | | | | \--- org.jetbrains.compose.components:components-resources-android:1.10.0 -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.2.21 (*) -| | | | +--- org.jetbrains.compose.runtime:runtime:1.10.0 -> 1.10.1 (*) -| | | | +--- org.jetbrains.compose.foundation:foundation:1.10.0 (*) -| | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.10.2 (*) -| | | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) +| | | | +--- org.jetbrains.compose.runtime:runtime:1.10.0 -> 1.11.0 (*) +| | | | +--- org.jetbrains.compose.foundation:foundation:1.10.0 -> 1.11.0 (*) +| | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.11.0 (*) +| | | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.6 (*) | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | | +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.4.0 | | | | \--- org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.4.0 -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.2.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) | | | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.2.21 (*) | | +--- project :core:datastore -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | +--- io.insert-koin:koin-bom:4.1.1 (*) | | | +--- io.insert-koin:koin-core:4.1.1 (*) | | | +--- io.insert-koin:koin-annotations:2.1.0 (*) @@ -1466,22 +1465,22 @@ | | | | +--- androidx.startup:startup-runtime:1.2.0 (*) | | | | +--- com.russhwolf:multiplatform-settings:1.3.0 | | | | | \--- com.russhwolf:multiplatform-settings-android:1.3.0 -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.2.21 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.2.21 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.3.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.3.21 (*) | | | +--- com.russhwolf:multiplatform-settings-serialization:1.3.0 | | | | \--- com.russhwolf:multiplatform-settings-serialization-android:1.3.0 -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.2.21 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.3.21 (*) | | | | +--- com.russhwolf:multiplatform-settings:1.3.0 (*) | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -> 1.9.0 (*) | | | +--- com.russhwolf:multiplatform-settings-coroutines:1.3.0 | | | | \--- com.russhwolf:multiplatform-settings-coroutines-android:1.3.0 -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.2.21 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.3.21 (*) | | | | +--- com.russhwolf:multiplatform-settings:1.3.0 (*) -| | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.10.2 (*) -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.11.0 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.9.0 (*) | | | +--- project :core:model -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | | +--- io.insert-koin:koin-bom:4.1.1 (*) | | | | +--- io.insert-koin:koin-core:4.1.1 (*) | | | | +--- io.insert-koin:koin-annotations:2.1.0 (*) @@ -1498,55 +1497,55 @@ | | | | | +--- io.ktor:ktor-client-core:3.3.3 (*) | | | | | +--- com.squareup.okhttp3:okhttp:5.2.1 | | | | | | \--- com.squareup.okhttp3:okhttp-android:5.2.1 -| | | | | | +--- androidx.annotation:annotation:1.9.1 (*) +| | | | | | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) | | | | | | +--- androidx.startup:startup-runtime:1.2.0 (*) | | | | | | +--- com.squareup.okio:okio:3.16.1 -> 3.16.4 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.2.21 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) | | | | | +--- com.squareup.okio:okio:3.16.2 -> 3.16.4 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | | +--- io.insert-koin:koin-android:4.1.1 (*) | | | | +--- io.ktor:ktor-client-core:3.3.3 (*) | | | | +--- io.ktor:ktor-client-logging:3.3.3 | | | | | \--- io.ktor:ktor-client-logging-jvm:3.3.3 | | | | | +--- org.slf4j:slf4j-api:2.0.17 -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.2 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.2 -> 1.11.0 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | | | +--- io.ktor:ktor-client-core:3.3.3 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | | +--- io.ktor:ktor-client-content-negotiation:3.3.3 | | | | | \--- io.ktor:ktor-client-content-negotiation-jvm:3.3.3 | | | | | +--- org.slf4j:slf4j-api:2.0.17 -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | | | +--- io.ktor:ktor-client-core:3.3.3 (*) | | | | | +--- io.ktor:ktor-serialization:3.3.3 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | | +--- io.ktor:ktor-serialization-kotlinx-json:3.3.3 | | | | | \--- io.ktor:ktor-serialization-kotlinx-json-jvm:3.3.3 | | | | | +--- org.slf4j:slf4j-api:2.0.17 -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | | | +--- io.ktor:ktor-serialization-kotlinx:3.3.3 | | | | | | \--- io.ktor:ktor-serialization-kotlinx-jvm:3.3.3 | | | | | | +--- org.slf4j:slf4j-api:2.0.17 -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | | | | +--- io.ktor:ktor-serialization:3.3.3 (*) | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.9.0 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.9.0 | | | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.9.0 | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.9.0 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.2.21 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.3.21 (*) | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.9.0 (*) | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | | | | | \--- org.jetbrains.kotlinx:kotlinx-io-core:0.6.0 -> 0.8.0 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | | +--- io.ktor:ktor-client-auth:3.3.3 | | | | | \--- io.ktor:ktor-client-auth-jvm:3.3.3 | | | | | +--- org.slf4j:slf4j-api:2.0.17 -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | | | +--- io.ktor:ktor-client-core:3.3.3 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | | +--- de.jensklingenberg.ktorfit:ktorfit-lib:2.7.1 | | | | | \--- de.jensklingenberg.ktorfit:ktorfit-lib-android:2.7.1 | | | | | +--- io.ktor:ktor-client-okhttp:3.3.3 (*) @@ -1554,10 +1553,10 @@ | | | | | | \--- de.jensklingenberg.ktorfit:ktorfit-lib-light-android:2.7.1 | | | | | | +--- de.jensklingenberg.ktorfit:ktorfit-annotations:2.7.1 | | | | | | | \--- de.jensklingenberg.ktorfit:ktorfit-annotations-android:2.7.1 -| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | | | | +--- io.ktor:ktor-client-core:3.3.3 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | | +--- co.touchlab:kermit:2.0.8 (*) | | | | +--- io.github.jan-tennert.supabase:postgrest-kt:3.1.1 | | | | | \--- io.github.jan-tennert.supabase:postgrest-kt-android:3.1.1 @@ -1566,7 +1565,7 @@ | | | | | | +--- androidx.startup:startup-runtime:1.2.0 (*) | | | | | | +--- androidx.browser:browser:1.8.0 -> 1.9.0 | | | | | | | +--- androidx.activity:activity:1.9.0 -> 1.12.2 (*) -| | | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | | | | +--- androidx.annotation:annotation-experimental:1.4.1 -> 1.5.1 (*) | | | | | | | +--- androidx.collection:collection:1.4.2 -> 1.5.0 (*) | | | | | | | +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*) @@ -1578,30 +1577,30 @@ | | | | | | | \--- io.github.jan-tennert.supabase:supabase-kt-android:3.1.1 | | | | | | | +--- androidx.lifecycle:lifecycle-process:2.8.7 -> 2.9.4 (*) | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-datetime:0.6.1 -> 0.7.1 (*) -| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 -> 1.10.2 (*) +| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 -> 1.11.0 (*) | | | | | | | +--- co.touchlab:kermit:2.0.5 -> 2.0.8 (*) | | | | | | | +--- io.ktor:ktor-client-core:3.0.3 -> 3.3.3 (*) | | | | | | | +--- io.ktor:ktor-client-content-negotiation:3.0.3 -> 3.3.3 (*) | | | | | | | +--- io.ktor:ktor-serialization-kotlinx-json:3.0.3 -> 3.3.3 (*) | | | | | | | +--- org.jetbrains.kotlinx:atomicfu:0.27.0 | | | | | | | | \--- org.jetbrains.kotlinx:atomicfu-jvm:0.27.0 -| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:{prefer 2.1.0} -> 2.2.21 (*) -| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 -> 2.2.21 (*) +| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:{prefer 2.1.0} -> 2.3.21 (*) +| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 -> 2.3.21 (*) | | | | | | +--- com.squareup.okio:okio:3.10.2 -> 3.16.4 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 -> 2.2.21 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 -> 2.3.21 (*) | | | | | | +--- com.russhwolf:multiplatform-settings-no-arg:1.3.0 (*) | | | | | | +--- com.russhwolf:multiplatform-settings-coroutines:1.3.0 (*) | | | | | | \--- org.kotlincrypto:secure-random:0.3.2 | | | | | | \--- org.kotlincrypto:secure-random-jvm:0.3.2 -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.2.21 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.3.21 (*) | | | | | +--- org.jetbrains.kotlin:kotlin-reflect:2.1.10 -> 2.2.21 -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 -> 2.2.21 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 -> 2.3.21 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | | +--- io.insert-koin:koin-bom:4.1.1 (*) | | | | +--- io.insert-koin:koin-core:4.1.1 (*) | | | | \--- io.insert-koin:koin-annotations:2.1.0 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | +--- io.insert-koin:koin-bom:4.1.1 (*) | | | +--- io.insert-koin:koin-core:4.1.1 (*) | | | +--- io.insert-koin:koin-annotations:2.1.0 (*) @@ -1612,21 +1611,21 @@ | | | +--- io.ktor:ktor-client-json:3.3.3 | | | | \--- io.ktor:ktor-client-json-jvm:3.3.3 | | | | +--- org.slf4j:slf4j-api:2.0.17 -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | | +--- io.ktor:ktor-client-core:3.3.3 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | +--- io.ktor:ktor-client-serialization:3.3.3 | | | | \--- io.ktor:ktor-client-serialization-jvm:3.3.3 | | | | +--- org.slf4j:slf4j-api:2.0.17 -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | | +--- io.ktor:ktor-client-core:3.3.3 (*) | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | | | +--- io.ktor:ktor-client-json:3.3.3 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | +--- com.squareup.okio:okio:3.16.4 (*) -| | | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | | \--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-bom:4.1.1 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) @@ -1634,23 +1633,23 @@ | | +--- project :core:analytics | | | +--- com.google.firebase:firebase-bom:34.7.0 (*) | | | +--- com.google.firebase:firebase-analytics -> 23.0.0 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | +--- io.insert-koin:koin-bom:4.1.1 (*) | | | +--- io.insert-koin:koin-core:4.1.1 (*) | | | +--- io.insert-koin:koin-annotations:2.1.0 (*) -| | | \--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | | \--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta | | | \--- io.github.openmf:mifos-authenticator-passcode-android:2.3.0-beta | | | +--- androidx.activity:activity-compose:1.12.2 (*) | | | +--- androidx.activity:activity-ktx:1.12.2 (*) -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2 -> 1.11.0 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | +--- io.insert-koin:koin-core:4.1.1 (*) -| | | +--- org.jetbrains.compose.runtime:runtime:1.10.0 -> 1.10.1 (*) +| | | +--- org.jetbrains.compose.runtime:runtime:1.10.0 -> 1.11.0 (*) | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -1659,22 +1658,22 @@ | | | +--- org.jetbrains.androidx.core:core-bundle:1.0.1 | | | | \--- org.jetbrains.androidx.core:core-bundle-android:1.0.1 | | | | +--- androidx.core:core-ktx:1.2.0 -> 1.17.0 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.2.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.3.21 (*) | | | +--- org.jetbrains.androidx.navigation:navigation-compose:2.9.1 -| | | | +--- androidx.annotation:annotation:1.9.1 (*) +| | | | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) | | | | +--- androidx.collection:collection:1.5.0 (*) | | | | +--- androidx.navigation:navigation-compose:2.9.4 | | | | | \--- androidx.navigation:navigation-compose-android:2.9.4 | | | | | +--- androidx.activity:activity:1.8.0 -> 1.12.2 (*) | | | | | +--- androidx.activity:activity-compose:1.8.0 -> 1.12.2 (*) -| | | | | +--- androidx.annotation:annotation:1.8.0 -> 1.9.1 (*) +| | | | | +--- androidx.annotation:annotation:1.8.0 -> 1.10.0 (*) | | | | | +--- androidx.collection:collection:1.4.5 -> 1.5.0 (*) -| | | | | +--- androidx.compose.animation:animation:1.7.2 -> 1.10.2 (*) -| | | | | +--- androidx.compose.animation:animation-core:1.7.2 -> 1.10.2 (*) -| | | | | +--- androidx.compose.foundation:foundation-layout:1.7.2 -> 1.10.2 (*) -| | | | | +--- androidx.compose.runtime:runtime:1.7.2 -> 1.10.2 (*) -| | | | | +--- androidx.compose.runtime:runtime-saveable:1.7.2 -> 1.10.2 (*) -| | | | | +--- androidx.compose.ui:ui:1.7.2 -> 1.10.2 (*) +| | | | | +--- androidx.compose.animation:animation:1.7.2 -> 1.11.1 (*) +| | | | | +--- androidx.compose.animation:animation-core:1.7.2 -> 1.11.1 (*) +| | | | | +--- androidx.compose.foundation:foundation-layout:1.7.2 -> 1.11.1 (*) +| | | | | +--- androidx.compose.runtime:runtime:1.7.2 -> 1.11.1 (*) +| | | | | +--- androidx.compose.runtime:runtime-saveable:1.7.2 -> 1.11.1 (*) +| | | | | +--- androidx.compose.ui:ui:1.7.2 -> 1.11.1 (*) | | | | | +--- androidx.lifecycle:lifecycle-common:2.9.0 -> 2.9.4 (*) | | | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.9.0 -> 2.9.4 (*) | | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.9.0 -> 2.9.4 (*) @@ -1685,13 +1684,13 @@ | | | | | +--- androidx.navigation:navigation-runtime:2.9.4 (*) | | | | | +--- androidx.savedstate:savedstate:1.3.0 -> 1.4.0 (*) | | | | | +--- androidx.savedstate:savedstate-compose:1.3.0 -> 1.4.0 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.11.0 (*) | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -> 1.9.0 (*) | | | | | +--- androidx.navigation:navigation-common:2.9.4 (c) | | | | | +--- androidx.navigation:navigation-fragment-ktx:2.9.4 (c) | | | | | +--- androidx.navigation:navigation-runtime:2.9.4 (c) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | | | | \--- androidx.navigation:navigation-fragment:2.9.4 (c) | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.5 -> 2.9.6 (*) | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.5 -> 2.9.6 (*) @@ -1699,7 +1698,7 @@ | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.5 -> 2.9.6 (*) | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.5 -> 2.9.6 (*) | | | | +--- org.jetbrains.androidx.navigation:navigation-common:2.9.1 -| | | | | +--- androidx.annotation:annotation:1.9.1 (*) +| | | | | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) | | | | | +--- androidx.collection:collection:1.5.0 (*) | | | | | +--- androidx.navigation:navigation-common:2.9.4 (*) | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.5 -> 2.9.6 (*) @@ -1707,10 +1706,10 @@ | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.5 -> 2.9.6 (*) | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.5 -> 2.9.6 (*) | | | | | +--- org.jetbrains.androidx.savedstate:savedstate:1.3.5 -> 1.4.0 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -> 1.9.0 (*) | | | | +--- org.jetbrains.androidx.navigation:navigation-runtime:2.9.1 -| | | | | +--- androidx.annotation:annotation:1.9.1 (*) +| | | | | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) | | | | | +--- androidx.collection:collection:1.5.0 (*) | | | | | +--- androidx.navigation:navigation-runtime:2.9.4 (*) | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.5 -> 2.9.6 (*) @@ -1719,48 +1718,48 @@ | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.5 -> 2.9.6 (*) | | | | | +--- org.jetbrains.androidx.navigation:navigation-common:2.9.1 (*) | | | | | +--- org.jetbrains.androidx.savedstate:savedstate:1.3.5 -> 1.4.0 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -> 1.9.0 (*) | | | | +--- org.jetbrains.androidx.savedstate:savedstate:1.3.5 -> 1.4.0 (*) | | | | +--- org.jetbrains.androidx.savedstate:savedstate-compose:1.3.5 -> 1.3.6 (*) -| | | | +--- org.jetbrains.compose.animation:animation:1.8.2 -> 1.10.0 (*) -| | | | +--- org.jetbrains.compose.animation:animation-core:1.8.2 -> 1.10.0 (*) -| | | | +--- org.jetbrains.compose.foundation:foundation-layout:1.8.2 -> 1.10.0 (*) -| | | | +--- org.jetbrains.compose.runtime:runtime:1.9.1 -> 1.10.1 (*) -| | | | +--- org.jetbrains.compose.runtime:runtime-saveable:1.9.1 -> 1.10.1 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | | +--- org.jetbrains.compose.animation:animation:1.8.2 -> 1.11.0 (*) +| | | | +--- org.jetbrains.compose.animation:animation-core:1.8.2 -> 1.11.0 (*) +| | | | +--- org.jetbrains.compose.foundation:foundation-layout:1.8.2 -> 1.11.0 (*) +| | | | +--- org.jetbrains.compose.runtime:runtime:1.9.1 -> 1.11.0 (*) +| | | | +--- org.jetbrains.compose.runtime:runtime-saveable:1.9.1 -> 1.11.0 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -> 1.9.0 (*) -| | | +--- org.jetbrains.compose.ui:ui:1.10.0 -> 1.10.1 (*) +| | | +--- org.jetbrains.compose.ui:ui:1.10.0 -> 1.11.0 (*) | | | +--- org.jetbrains.compose.ui:ui-tooling-preview:1.10.0 -| | | | +--- androidx.annotation:annotation:1.9.1 (*) -| | | | +--- androidx.compose.ui:ui-tooling-preview:1.10.0 -> 1.10.2 (*) -| | | | +--- org.jetbrains.compose.runtime:runtime:1.10.0 -> 1.10.1 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) +| | | | +--- androidx.compose.ui:ui-tooling-preview:1.10.0 -> 1.11.1 (*) +| | | | +--- org.jetbrains.compose.runtime:runtime:1.10.0 -> 1.11.0 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | +--- co.touchlab:kermit:2.0.8 (*) | | | +--- org.jetbrains.compose.material3:material3:1.9.0 | | | | +--- androidx.compose.material3:material3:1.4.0 | | | | | \--- androidx.compose.material3:material3-android:1.4.0 | | | | | +--- androidx.activity:activity-compose:1.8.2 -> 1.12.2 (*) -| | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | | +--- androidx.annotation:annotation-experimental:1.4.1 -> 1.5.1 (*) | | | | | +--- androidx.collection:collection:1.4.5 -> 1.5.0 (*) -| | | | | +--- androidx.compose.animation:animation-core:1.8.1 -> 1.10.2 (*) -| | | | | +--- androidx.compose.foundation:foundation:1.8.1 -> 1.10.2 (*) -| | | | | +--- androidx.compose.foundation:foundation-layout:1.8.1 -> 1.10.2 (*) +| | | | | +--- androidx.compose.animation:animation-core:1.8.1 -> 1.11.1 (*) +| | | | | +--- androidx.compose.foundation:foundation:1.8.1 -> 1.11.1 (*) +| | | | | +--- androidx.compose.foundation:foundation-layout:1.8.1 -> 1.11.1 (*) | | | | | +--- androidx.compose.material:material-ripple:1.8.1 -> 1.10.0 | | | | | | \--- androidx.compose.material:material-ripple-android:1.10.0 | | | | | | +--- androidx.collection:collection:1.5.0 (*) -| | | | | | +--- androidx.compose.animation:animation:1.7.1 -> 1.10.2 (*) -| | | | | | +--- androidx.compose.foundation:foundation:1.7.1 -> 1.10.2 (*) -| | | | | | +--- androidx.compose.runtime:runtime:1.10.0 -> 1.10.2 (*) -| | | | | | +--- androidx.compose.ui:ui-util:1.7.1 -> 1.10.2 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | | | | +--- androidx.compose.runtime:runtime:1.9.0 -> 1.10.2 (*) -| | | | | +--- androidx.compose.ui:ui:1.8.2 -> 1.10.2 (*) -| | | | | +--- androidx.compose.ui:ui-text:1.8.1 -> 1.10.2 (*) -| | | | | +--- androidx.compose.ui:ui-util:1.8.1 -> 1.10.2 (*) +| | | | | | +--- androidx.compose.animation:animation:1.7.1 -> 1.11.1 (*) +| | | | | | +--- androidx.compose.foundation:foundation:1.7.1 -> 1.11.1 (*) +| | | | | | +--- androidx.compose.runtime:runtime:1.10.0 -> 1.11.1 (*) +| | | | | | +--- androidx.compose.ui:ui-util:1.7.1 -> 1.11.1 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (*) +| | | | | +--- androidx.compose.runtime:runtime:1.9.0 -> 1.11.1 (*) +| | | | | +--- androidx.compose.ui:ui:1.8.2 -> 1.11.1 (*) +| | | | | +--- androidx.compose.ui:ui-text:1.8.1 -> 1.11.1 (*) +| | | | | +--- androidx.compose.ui:ui-util:1.8.1 -> 1.11.1 (*) | | | | | +--- androidx.lifecycle:lifecycle-common-java8:2.6.1 -> 2.9.4 -| | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | | | +--- androidx.lifecycle:lifecycle-common:2.9.4 (*) | | | | | | +--- androidx.lifecycle:lifecycle-common:2.9.4 (c) | | | | | | +--- androidx.lifecycle:lifecycle-livedata:2.9.4 (c) @@ -1775,71 +1774,73 @@ | | | | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.9.4 (c) | | | | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.4 (c) | | | | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.4 (c) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | | | | \--- androidx.compose.material3:material3-adaptive-navigation-suite:1.4.0 (c) -| | | | +--- org.jetbrains.compose.animation:animation-core:1.9.1 -> 1.10.0 (*) -| | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.9.1 -> 1.10.1 (*) -| | | | +--- org.jetbrains.compose.collection-internal:collection:1.9.1 -> 1.10.1 (*) -| | | | +--- org.jetbrains.compose.foundation:foundation:1.9.1 -> 1.10.0 (*) -| | | | +--- org.jetbrains.compose.foundation:foundation-layout:1.9.1 -> 1.10.0 (*) +| | | | +--- org.jetbrains.compose.animation:animation-core:1.9.1 -> 1.11.0 (*) +| | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.9.1 -> 1.9.3 +| | | | | \--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) +| | | | +--- org.jetbrains.compose.collection-internal:collection:1.9.1 -> 1.9.3 +| | | | | \--- androidx.collection:collection:1.5.0 (*) +| | | | +--- org.jetbrains.compose.foundation:foundation:1.9.1 -> 1.11.0 (*) +| | | | +--- org.jetbrains.compose.foundation:foundation-layout:1.9.1 -> 1.11.0 (*) | | | | +--- org.jetbrains.compose.material:material-ripple:1.9.1 -> 1.9.3 | | | | | +--- androidx.compose.material:material-ripple:1.9.4 -> 1.10.0 (*) -| | | | | +--- org.jetbrains.compose.animation:animation:1.9.3 -> 1.10.0 (*) -| | | | | +--- org.jetbrains.compose.collection-internal:collection:1.9.3 -> 1.10.1 (*) -| | | | | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) -| | | | | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) -| | | | | +--- org.jetbrains.compose.ui:ui-util:1.9.3 -> 1.10.1 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | +--- org.jetbrains.compose.runtime:runtime:1.9.1 -> 1.10.1 (*) +| | | | | +--- org.jetbrains.compose.animation:animation:1.9.3 -> 1.11.0 (*) +| | | | | +--- org.jetbrains.compose.collection-internal:collection:1.9.3 (*) +| | | | | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) +| | | | | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) +| | | | | +--- org.jetbrains.compose.ui:ui-util:1.9.3 -> 1.11.0 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | | +--- org.jetbrains.compose.runtime:runtime:1.9.1 -> 1.11.0 (*) | | | | +--- org.jetbrains.compose.ui:ui-backhandler:1.9.1 -> 1.9.3 | | | | | \--- org.jetbrains.compose.ui:ui-backhandler-android:1.9.3 | | | | | +--- androidx.activity:activity-compose:1.8.0 -> 1.12.2 (*) | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) -| | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.9.3 -> 1.10.1 (*) -| | | | | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) -| | | | | +--- org.jetbrains.compose.ui:ui-util:1.9.3 -> 1.10.1 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.10.2 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.2.21 (c) -| | | | +--- org.jetbrains.compose.ui:ui-graphics:1.9.1 -> 1.10.1 (*) -| | | | +--- org.jetbrains.compose.ui:ui-text:1.9.1 -> 1.10.1 (*) -| | | | +--- org.jetbrains.compose.ui:ui-util:1.9.1 -> 1.10.1 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | +--- org.jetbrains.compose.foundation:foundation:1.10.0 (*) +| | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.9.3 (*) +| | | | | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) +| | | | | +--- org.jetbrains.compose.ui:ui-util:1.9.3 -> 1.11.0 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.11.0 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.3.21 (c) +| | | | +--- org.jetbrains.compose.ui:ui-graphics:1.9.1 -> 1.11.0 (*) +| | | | +--- org.jetbrains.compose.ui:ui-text:1.9.1 -> 1.11.0 (*) +| | | | +--- org.jetbrains.compose.ui:ui-util:1.9.1 -> 1.11.0 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | +--- org.jetbrains.compose.foundation:foundation:1.10.0 -> 1.11.0 (*) | | | +--- org.jetbrains.compose.material:material-icons-extended:1.7.3 | | | | +--- androidx.compose.material:material-icons-extended:1.7.6 -> 1.7.8 | | | | | \--- androidx.compose.material:material-icons-extended-android:1.7.8 | | | | | \--- androidx.compose.material:material-icons-core:1.7.8 | | | | | \--- androidx.compose.material:material-icons-core-android:1.7.8 -| | | | | +--- androidx.compose.ui:ui:1.6.0 -> 1.10.2 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) +| | | | | +--- androidx.compose.ui:ui:1.6.0 -> 1.11.1 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) | | | | +--- org.jetbrains.compose.material:material-icons-core:1.7.3 | | | | | +--- androidx.compose.material:material-icons-core:1.7.6 -> 1.7.8 (*) -| | | | | +--- org.jetbrains.compose.ui:ui:1.7.3 -> 1.10.1 (*) -| | | | | +--- org.jetbrains.compose.ui:ui-graphics:1.7.3 -> 1.10.1 (*) -| | | | | \--- org.jetbrains.compose.ui:ui-unit:1.7.3 -> 1.10.1 (*) -| | | | +--- org.jetbrains.compose.ui:ui:1.7.3 -> 1.10.1 (*) -| | | | \--- org.jetbrains.compose.ui:ui-graphics:1.7.3 -> 1.10.1 (*) +| | | | | +--- org.jetbrains.compose.ui:ui:1.7.3 -> 1.11.0 (*) +| | | | | +--- org.jetbrains.compose.ui:ui-graphics:1.7.3 -> 1.11.0 (*) +| | | | | \--- org.jetbrains.compose.ui:ui-unit:1.7.3 -> 1.11.0 (*) +| | | | +--- org.jetbrains.compose.ui:ui:1.7.3 -> 1.11.0 (*) +| | | | \--- org.jetbrains.compose.ui:ui-graphics:1.7.3 -> 1.11.0 (*) | | | +--- org.jetbrains.compose.components:components-resources:1.10.0 (*) | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta | | | \--- io.github.openmf:mifos-authenticator-biometrics-android:2.3.0-beta | | | +--- androidx.activity:activity-compose:1.12.2 (*) | | | +--- androidx.activity:activity-ktx:1.12.2 (*) -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2 -> 1.11.0 (*) | | | +--- androidx.biometric:biometric:1.1.0 | | | | +--- androidx.activity:activity:1.1.0 -> 1.12.2 (*) | | | | +--- androidx.appcompat:appcompat:1.2.0 -> 1.7.1 (*) | | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.2.0 -> 2.9.4 (*) | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.2.0 -> 2.9.4 (*) -| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.10.0 (*) | | | | +--- androidx.core:core:1.3.2 -> 1.17.0 (*) | | | | \--- androidx.fragment:fragment:1.2.5 -> 1.8.9 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | +--- io.insert-koin:koin-core:4.1.1 (*) -| | | +--- org.jetbrains.compose.runtime:runtime:1.10.0 -> 1.10.1 (*) +| | | +--- org.jetbrains.compose.runtime:runtime:1.10.0 -> 1.11.0 (*) | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -1847,11 +1848,11 @@ | | | +--- org.jetbrains.androidx.savedstate:savedstate:1.4.0 (*) | | | +--- org.jetbrains.androidx.core:core-bundle:1.0.1 (*) | | | +--- org.jetbrains.androidx.navigation:navigation-compose:2.9.1 (*) -| | | +--- org.jetbrains.compose.ui:ui:1.10.0 -> 1.10.1 (*) +| | | +--- org.jetbrains.compose.ui:ui:1.10.0 -> 1.11.0 (*) | | | +--- org.jetbrains.compose.ui:ui-tooling-preview:1.10.0 (*) | | | +--- co.touchlab:kermit:2.0.8 (*) | | | +--- org.jetbrains.compose.material3:material3:1.9.0 (*) -| | | +--- org.jetbrains.compose.foundation:foundation:1.10.0 (*) +| | | +--- org.jetbrains.compose.foundation:foundation:1.10.0 -> 1.11.0 (*) | | | +--- org.jetbrains.compose.material:material-icons-extended:1.7.3 (*) | | | +--- org.jetbrains.compose.components:components-resources:1.10.0 (*) | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) @@ -1860,218 +1861,213 @@ | | | \--- com.russhwolf:multiplatform-settings-coroutines:1.3.0 (*) | | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.2.21 (*) | +--- project :core:network (*) -| +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | +--- io.insert-koin:koin-core:4.1.1 (*) | +--- io.insert-koin:koin-annotations:2.1.0 (*) | +--- project :core:ui | | +--- androidx.metrics:metrics-performance:1.0.0 | | | +--- androidx.collection:collection:1.4.2 -> 1.5.0 (*) | | | +--- androidx.core:core:1.5.0 -> 1.17.0 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | +--- androidx.browser:browser:1.9.0 (*) -| | +--- androidx.compose.runtime:runtime -> 1.10.2 (*) +| | +--- androidx.compose.runtime:runtime -> 1.11.1 (*) | | +--- com.google.accompanist:accompanist-pager:0.36.0 -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4 -> 1.10.2 (*) -| | | +--- androidx.compose.foundation:foundation:1.7.0 -> 1.10.2 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4 -> 1.11.0 (*) +| | | +--- androidx.compose.foundation:foundation:1.7.0 -> 1.11.1 (*) | | | +--- dev.chrisbanes.snapper:snapper:0.2.2 -| | | | +--- androidx.compose.foundation:foundation:1.1.1 -> 1.10.2 (*) +| | | | +--- androidx.compose.foundation:foundation:1.1.1 -> 1.11.1 (*) | | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10 -> 1.8.22 (*) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.2.21 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.3.21 (*) +| | +--- com.patrykandpatrick.vico:compose:3.2.2 +| | | \--- com.patrykandpatrick.vico:compose-android:3.2.2 +| | | +--- androidx.annotation:annotation:1.10.0 (*) +| | | +--- org.jetbrains.compose.foundation:foundation:1.11.0 (*) +| | | +--- org.jetbrains.compose.runtime:runtime:1.11.0 (*) +| | | +--- org.jetbrains.compose.ui:ui:1.11.0 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.3.21 (*) +| | +--- com.patrykandpatrick.vico:compose-m3:3.2.2 +| | | \--- com.patrykandpatrick.vico:compose-m3-android:3.2.2 +| | | +--- com.patrykandpatrick.vico:compose:3.2.2 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.3.21 (*) +| | | \--- org.jetbrains.compose.material3:material3:1.9.0 (*) | | +--- project :core:analytics (*) | | +--- project :core:designsystem -| | | +--- androidx.compose.ui:ui-tooling-preview -> 1.10.2 (*) +| | | +--- androidx.compose.ui:ui-tooling-preview -> 1.11.1 (*) | | | +--- androidx.activity:activity-compose:1.12.2 (*) | | | +--- com.arkivanov.essenty:back-handler:2.5.0 | | | | \--- com.arkivanov.essenty:back-handler-android:2.5.0 | | | | +--- androidx.activity:activity-ktx:1.8.1 -> 1.12.2 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | | +--- com.arkivanov.essenty:utils-internal:2.5.0 | | | | | \--- com.arkivanov.essenty:utils-internal-android:2.5.0 -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.2.21 (c) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.2.21 (c) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.3.21 (c) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.3.21 (c) | | | +--- dev.chrisbanes.material3:material3-window-size-class-multiplatform:0.5.0 | | | | \--- dev.chrisbanes.material3:material3-window-size-class-multiplatform-android:0.5.0 | | | | +--- androidx.window:window:1.2.0 -> 1.5.0 (*) -| | | | +--- org.jetbrains.compose.ui:ui:1.6.0 -> 1.10.1 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.2.21 (*) +| | | | +--- org.jetbrains.compose.ui:ui:1.6.0 -> 1.11.0 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.3.21 (*) | | | +--- project :core-base:designsystem -| | | | +--- androidx.compose.ui:ui-tooling -> 1.10.2 -| | | | | \--- androidx.compose.ui:ui-tooling-android:1.10.2 +| | | | +--- androidx.compose.ui:ui-tooling -> 1.11.1 +| | | | | \--- androidx.compose.ui:ui-tooling-android:1.11.1 | | | | | +--- androidx.activity:activity-compose:1.7.0 -> 1.12.2 (*) -| | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) -| | | | | +--- androidx.compose.animation:animation:1.10.2 (*) -| | | | | +--- androidx.compose.material:material:1.0.0 -> 1.10.0 -| | | | | | \--- androidx.compose.material:material-android:1.10.0 -| | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) -| | | | | | +--- androidx.annotation:annotation-experimental:1.4.1 -> 1.5.1 (*) -| | | | | | +--- androidx.compose.animation:animation:1.8.2 -> 1.10.2 (*) -| | | | | | +--- androidx.compose.animation:animation-core:1.8.2 -> 1.10.2 (*) -| | | | | | +--- androidx.compose.foundation:foundation:1.8.2 -> 1.10.2 (*) -| | | | | | +--- androidx.compose.foundation:foundation-layout:1.8.2 -> 1.10.2 (*) -| | | | | | +--- androidx.compose.material:material-ripple:1.8.2 -> 1.10.0 (*) -| | | | | | +--- androidx.compose.runtime:runtime:1.10.0 -> 1.10.2 (*) -| | | | | | +--- androidx.compose.ui:ui:1.8.2 -> 1.10.2 (*) -| | | | | | +--- androidx.compose.ui:ui-text:1.8.2 -> 1.10.2 (*) -| | | | | | +--- androidx.compose.ui:ui-util:1.8.2 -> 1.10.2 (*) -| | | | | | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.9.4 (*) -| | | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.9.4 (*) -| | | | | | +--- androidx.savedstate:savedstate:1.2.1 -> 1.4.0 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | | | | +--- androidx.compose.runtime:runtime:1.10.2 (*) -| | | | | +--- androidx.compose.ui:ui:1.10.2 (*) -| | | | | +--- androidx.compose.ui:ui-tooling-data:1.10.2 -| | | | | | \--- androidx.compose.ui:ui-tooling-data-android:1.10.2 -| | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) -| | | | | | +--- androidx.annotation:annotation-experimental:1.4.1 -> 1.5.1 (*) -| | | | | | +--- androidx.compose.runtime:runtime:1.10.2 (*) -| | | | | | +--- androidx.compose.ui:ui:1.10.2 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | | | | | +--- androidx.compose.ui:ui:1.10.2 (c) -| | | | | | +--- androidx.compose.ui:ui-geometry:1.10.2 (c) -| | | | | | +--- androidx.compose.ui:ui-graphics:1.10.2 (c) -| | | | | | +--- androidx.compose.ui:ui-text:1.10.2 (c) -| | | | | | +--- androidx.compose.ui:ui-tooling:1.10.2 (c) -| | | | | | +--- androidx.compose.ui:ui-tooling-preview:1.10.2 (c) -| | | | | | +--- androidx.compose.ui:ui-unit:1.10.2 (c) -| | | | | | \--- androidx.compose.ui:ui-util:1.10.2 (c) -| | | | | +--- androidx.compose.ui:ui-tooling-preview:1.10.2 (*) +| | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) +| | | | | +--- androidx.compose.animation:animation:1.10.0 -> 1.11.1 (*) +| | | | | +--- androidx.compose.material3:material3:1.3.1 -> 1.4.0 (*) +| | | | | +--- androidx.compose.runtime:runtime:1.11.1 (*) +| | | | | +--- androidx.compose.ui:ui:1.11.1 (*) +| | | | | +--- androidx.compose.ui:ui-tooling-data:1.11.1 +| | | | | | \--- androidx.compose.ui:ui-tooling-data-android:1.11.1 +| | | | | | +--- androidx.compose.runtime:runtime:1.11.1 (*) +| | | | | | +--- androidx.compose.ui:ui:1.11.1 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | | | | | +--- androidx.compose.ui:ui:1.11.1 (c) +| | | | | | +--- androidx.compose.ui:ui-geometry:1.11.1 (c) +| | | | | | +--- androidx.compose.ui:ui-graphics:1.11.1 (c) +| | | | | | +--- androidx.compose.ui:ui-text:1.11.1 (c) +| | | | | | +--- androidx.compose.ui:ui-tooling:1.11.1 (c) +| | | | | | +--- androidx.compose.ui:ui-tooling-preview:1.11.1 (c) +| | | | | | +--- androidx.compose.ui:ui-unit:1.11.1 (c) +| | | | | | \--- androidx.compose.ui:ui-util:1.11.1 (c) +| | | | | +--- androidx.compose.ui:ui-tooling-preview:1.11.1 (*) | | | | | +--- androidx.lifecycle:lifecycle-common:2.6.1 -> 2.9.4 (*) | | | | | +--- androidx.savedstate:savedstate-ktx:1.2.1 -> 1.4.0 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| | | | | +--- androidx.compose.ui:ui:1.10.2 (c) -| | | | | +--- androidx.compose.ui:ui-geometry:1.10.2 (c) -| | | | | +--- androidx.compose.ui:ui-graphics:1.10.2 (c) -| | | | | +--- androidx.compose.ui:ui-text:1.10.2 (c) -| | | | | +--- androidx.compose.ui:ui-tooling-data:1.10.2 (c) -| | | | | +--- androidx.compose.ui:ui-tooling-preview:1.10.2 (c) -| | | | | +--- androidx.compose.ui:ui-unit:1.10.2 (c) -| | | | | \--- androidx.compose.ui:ui-util:1.10.2 (c) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | | | | +--- androidx.compose.ui:ui:1.11.1 (c) +| | | | | +--- androidx.compose.ui:ui-geometry:1.11.1 (c) +| | | | | +--- androidx.compose.ui:ui-graphics:1.11.1 (c) +| | | | | +--- androidx.compose.ui:ui-text:1.11.1 (c) +| | | | | +--- androidx.compose.ui:ui-tooling-data:1.11.1 (c) +| | | | | +--- androidx.compose.ui:ui-tooling-preview:1.11.1 (c) +| | | | | +--- androidx.compose.ui:ui-unit:1.11.1 (c) +| | | | | \--- androidx.compose.ui:ui-util:1.11.1 (c) | | | | +--- org.jetbrains.compose.material3:material3-adaptive-navigation-suite:1.9.0-beta03 | | | | | +--- androidx.compose.material3:material3-adaptive-navigation-suite:1.4.0-beta01 -> 1.4.0 | | | | | | \--- androidx.compose.material3:material3-adaptive-navigation-suite-android:1.4.0 -| | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | | | | +--- androidx.annotation:annotation-experimental:1.4.1 -> 1.5.1 (*) | | | | | | +--- androidx.compose.material3:material3:1.4.0 (*) | | | | | | +--- androidx.compose.material3.adaptive:adaptive:1.1.0 -> 1.2.0 | | | | | | | \--- androidx.compose.material3.adaptive:adaptive-android:1.2.0 -| | | | | | | +--- androidx.annotation:annotation:1.9.1 (*) +| | | | | | | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) | | | | | | | +--- androidx.annotation:annotation-experimental:1.5.1 (*) -| | | | | | | +--- androidx.compose.foundation:foundation:1.9.0 -> 1.10.2 (*) -| | | | | | | +--- androidx.compose.ui:ui:1.9.0 -> 1.10.2 (*) +| | | | | | | +--- androidx.compose.foundation:foundation:1.9.0 -> 1.11.1 (*) +| | | | | | | +--- androidx.compose.ui:ui:1.9.0 -> 1.11.1 (*) | | | | | | | +--- androidx.window:window:1.4.0 -> 1.5.0 (*) | | | | | | | +--- androidx.window:window-core:1.4.0 -> 1.5.0 (*) -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | | | | | +--- androidx.compose.material3.adaptive:adaptive-layout:1.2.0 (c) | | | | | | | +--- androidx.compose.material3.adaptive:adaptive-navigation:1.2.0 (c) -| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | | | | | +--- androidx.window:window-core:1.4.0 -> 1.5.0 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | | | | +--- androidx.compose.material3:material3:1.4.0 (c) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | | | | +--- org.jetbrains.androidx.window:window-core:1.4.0-beta01 | | | | | | +--- androidx.window:window-core:1.4.0 -> 1.5.0 (*) -| | | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.9.0-beta03 -> 1.10.1 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.9.0-beta03 -> 1.10.1 (*) +| | | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.9.0-beta03 -> 1.9.3 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.9.0-beta03 -> 1.9.3 (*) | | | | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | | | | +--- org.jetbrains.compose.material3.adaptive:adaptive:1.2.0-alpha05 | | | | | | +--- androidx.compose.material3.adaptive:adaptive:1.2.0-alpha10 -> 1.2.0 (*) | | | | | | +--- org.jetbrains.androidx.window:window-core:1.4.0-beta01 (*) -| | | | | | +--- org.jetbrains.compose.foundation:foundation:1.9.0-beta03 -> 1.10.0 (*) -| | | | | | +--- org.jetbrains.compose.ui:ui-geometry:1.9.0-beta03 -> 1.10.1 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | | +--- org.jetbrains.compose.ui:ui:1.9.0-beta03 -> 1.10.1 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | | | | +--- org.jetbrains.compose.foundation:foundation:1.9.0-beta03 -> 1.11.0 (*) +| | | | | | +--- org.jetbrains.compose.ui:ui-geometry:1.9.0-beta03 -> 1.11.0 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | | | +--- org.jetbrains.compose.ui:ui:1.9.0-beta03 -> 1.11.0 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | | +--- org.jetbrains.compose.material3.adaptive:adaptive:1.1.2 -> 1.2.0-alpha05 (*) | | | | +--- org.jetbrains.compose.material3.adaptive:adaptive-layout:1.1.2 | | | | | +--- androidx.compose.material3.adaptive:adaptive-layout:1.1.0 -> 1.2.0 | | | | | | \--- androidx.compose.material3.adaptive:adaptive-layout-android:1.2.0 -| | | | | | +--- androidx.annotation:annotation:1.9.1 (*) +| | | | | | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) | | | | | | +--- androidx.annotation:annotation-experimental:1.5.1 (*) -| | | | | | +--- androidx.compose.animation:animation:1.9.0 -> 1.10.2 (*) -| | | | | | +--- androidx.compose.animation:animation-core:1.9.0 -> 1.10.2 (*) -| | | | | | +--- androidx.compose.foundation:foundation:1.9.0 -> 1.10.2 (*) -| | | | | | +--- androidx.compose.foundation:foundation-layout:1.9.0 -> 1.10.2 (*) +| | | | | | +--- androidx.compose.animation:animation:1.9.0 -> 1.11.1 (*) +| | | | | | +--- androidx.compose.animation:animation-core:1.9.0 -> 1.11.1 (*) +| | | | | | +--- androidx.compose.foundation:foundation:1.9.0 -> 1.11.1 (*) +| | | | | | +--- androidx.compose.foundation:foundation-layout:1.9.0 -> 1.11.1 (*) | | | | | | +--- androidx.compose.material3.adaptive:adaptive:1.2.0 (*) -| | | | | | +--- androidx.compose.runtime:runtime:1.9.0 -> 1.10.2 (*) -| | | | | | +--- androidx.compose.ui:ui:1.9.0 -> 1.10.2 (*) -| | | | | | +--- androidx.compose.ui:ui-geometry:1.9.0 -> 1.10.2 (*) +| | | | | | +--- androidx.compose.runtime:runtime:1.9.0 -> 1.11.1 (*) +| | | | | | +--- androidx.compose.ui:ui:1.9.0 -> 1.11.1 (*) +| | | | | | +--- androidx.compose.ui:ui-geometry:1.9.0 -> 1.11.1 (*) | | | | | | +--- androidx.core:core:1.15.0 -> 1.17.0 (*) | | | | | | +--- androidx.window:window-core:1.4.0 -> 1.5.0 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | | | | +--- androidx.compose.material3.adaptive:adaptive:1.2.0 (c) | | | | | | +--- androidx.compose.material3.adaptive:adaptive-navigation:1.2.0 (c) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) | | | | | +--- org.jetbrains.androidx.window:window-core:1.3.1 -> 1.4.0-beta01 (*) -| | | | | +--- org.jetbrains.compose.animation:animation:1.8.2 -> 1.10.0 (*) -| | | | | +--- org.jetbrains.compose.animation:animation-core:1.8.2 -> 1.10.0 (*) -| | | | | +--- org.jetbrains.compose.collection-internal:collection:1.8.2 -> 1.10.1 (*) -| | | | | +--- org.jetbrains.compose.foundation:foundation:1.8.2 -> 1.10.0 (*) -| | | | | +--- org.jetbrains.compose.foundation:foundation-layout:1.8.2 -> 1.10.0 (*) +| | | | | +--- org.jetbrains.compose.animation:animation:1.8.2 -> 1.11.0 (*) +| | | | | +--- org.jetbrains.compose.animation:animation-core:1.8.2 -> 1.11.0 (*) +| | | | | +--- org.jetbrains.compose.collection-internal:collection:1.8.2 -> 1.9.3 (*) +| | | | | +--- org.jetbrains.compose.foundation:foundation:1.8.2 -> 1.11.0 (*) +| | | | | +--- org.jetbrains.compose.foundation:foundation-layout:1.8.2 -> 1.11.0 (*) | | | | | +--- org.jetbrains.compose.material3.adaptive:adaptive:1.1.2 -> 1.2.0-alpha05 (*) -| | | | | +--- org.jetbrains.compose.ui:ui:1.8.2 -> 1.10.1 (*) -| | | | | +--- org.jetbrains.compose.ui:ui-geometry:1.8.2 -> 1.10.1 (*) -| | | | | +--- org.jetbrains.compose.ui:ui-util:1.8.2 -> 1.10.1 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | | | +--- org.jetbrains.compose.ui:ui:1.8.2 -> 1.11.0 (*) +| | | | | +--- org.jetbrains.compose.ui:ui-geometry:1.8.2 -> 1.11.0 (*) +| | | | | +--- org.jetbrains.compose.ui:ui-util:1.8.2 -> 1.11.0 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | | +--- org.jetbrains.compose.material3.adaptive:adaptive-navigation:1.1.2 | | | | | +--- androidx.compose.material3.adaptive:adaptive-navigation:1.1.0 -> 1.2.0 | | | | | | \--- androidx.compose.material3.adaptive:adaptive-navigation-android:1.2.0 | | | | | | +--- androidx.activity:activity-compose:1.10.1 -> 1.12.2 (*) -| | | | | | +--- androidx.annotation:annotation:1.9.1 (*) +| | | | | | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) | | | | | | +--- androidx.annotation:annotation-experimental:1.5.1 (*) -| | | | | | +--- androidx.compose.foundation:foundation:1.9.0 -> 1.10.2 (*) +| | | | | | +--- androidx.compose.foundation:foundation:1.9.0 -> 1.11.1 (*) | | | | | | +--- androidx.compose.material3.adaptive:adaptive-layout:1.2.0 (*) -| | | | | | +--- androidx.compose.ui:ui-util:1.9.0 -> 1.10.2 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | | | | +--- androidx.compose.ui:ui-util:1.9.0 -> 1.11.1 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | | | | +--- androidx.compose.material3.adaptive:adaptive:1.2.0 (c) | | | | | | +--- androidx.compose.material3.adaptive:adaptive-layout:1.2.0 (c) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) -| | | | | +--- org.jetbrains.compose.foundation:foundation:1.8.2 -> 1.10.0 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) +| | | | | +--- org.jetbrains.compose.foundation:foundation:1.8.2 -> 1.11.0 (*) | | | | | +--- org.jetbrains.compose.material3.adaptive:adaptive-layout:1.1.2 (*) -| | | | | +--- org.jetbrains.compose.ui:ui-util:1.8.2 -> 1.10.1 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | | | +--- org.jetbrains.compose.ui:ui-util:1.8.2 -> 1.11.0 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | | +--- io.insert-koin:koin-bom:4.1.1 (*) | | | | +--- io.insert-koin:koin-core:4.1.1 (*) | | | | +--- io.insert-koin:koin-annotations:2.1.0 (*) -| | | | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) +| | | | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) | | | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) -| | | | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | | | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 | | | | | \--- org.jetbrains.compose.components:components-ui-tooling-preview-android:1.9.3 -| | | | | +--- androidx.compose.ui:ui-tooling-preview:1.6.1 -> 1.10.2 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.2.21 (*) +| | | | | +--- androidx.compose.ui:ui-tooling-preview:1.6.1 -> 1.11.1 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.3.21 (*) | | | | +--- org.jetbrains.compose.material:material-icons-extended:1.7.3 (*) | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) | | | | +--- dev.chrisbanes.material3:material3-window-size-class-multiplatform:0.5.0 (*) | | | | \--- org.jetbrains.compose.ui:ui-backhandler:1.9.3 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | +--- io.insert-koin:koin-bom:4.1.1 (*) | | | +--- io.insert-koin:koin-core:4.1.1 (*) | | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | | +--- io.coil-kt.coil3:coil-compose-core:3.3.0 | | | | \--- io.coil-kt.coil3:coil-compose-core-android:3.3.0 | | | | +--- com.google.accompanist:accompanist-drawablepainter:0.37.3 -| | | | | +--- androidx.compose.ui:ui:1.7.0 -> 1.10.2 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4 -> 1.10.2 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.2.21 (*) +| | | | | +--- androidx.compose.ui:ui:1.7.0 -> 1.11.1 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4 -> 1.11.0 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.3.21 (*) | | | | +--- io.coil-kt.coil3:coil-core:3.3.0 (*) -| | | | +--- org.jetbrains.compose.foundation:foundation:1.8.2 -> 1.10.0 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.2.21 (*) -| | | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) -| | | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | | | +--- org.jetbrains.compose.foundation:foundation:1.8.2 -> 1.11.0 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.3.21 (*) +| | | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) +| | | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | | +--- org.jetbrains.compose.material:material-icons-extended:1.7.3 (*) -| | | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | | +--- org.jetbrains.compose.ui:ui-util:1.9.3 -> 1.10.1 (*) +| | | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | | +--- org.jetbrains.compose.ui:ui-util:1.9.3 -> 1.11.0 (*) | | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | | \--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) | | +--- project :core:model (*) | | +--- project :core:common (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-bom:4.1.1 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) @@ -2092,9 +2088,9 @@ | | | +--- androidx.startup:startup-runtime:1.2.0 (*) | | | +--- androidx.exifinterface:exifinterface:1.4.1 (*) | | | +--- org.jetbrains.kotlinx:kotlinx-io-core:0.8.0 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.2.21 (*) -| | | +--- androidx.annotation:annotation:1.9.1 (*) -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) +| | | +--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.9.0 (*) | | +--- io.github.vinceglb:filekit-dialogs-compose:0.12.0 | | | \--- io.github.vinceglb:filekit-dialogs-compose-android:0.12.0 @@ -2104,40 +2100,40 @@ | | | | \--- io.github.vinceglb:filekit-dialogs-android:0.12.0 | | | | +--- androidx.activity:activity-ktx:1.11.0 -> 1.12.2 (*) | | | | +--- io.github.vinceglb:filekit-core:0.12.0 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.2.21 (*) -| | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.2.21 (*) -| | | +--- org.jetbrains.compose.runtime:runtime:1.9.0 -> 1.10.1 (*) -| | | +--- org.jetbrains.compose.ui:ui:1.9.0 -> 1.10.1 (*) -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) -| | | \--- androidx.annotation:annotation:1.9.1 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) +| | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) +| | | +--- org.jetbrains.compose.runtime:runtime:1.9.0 -> 1.11.0 (*) +| | | +--- org.jetbrains.compose.ui:ui:1.9.0 -> 1.11.0 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) +| | | \--- androidx.annotation:annotation:1.9.1 -> 1.10.0 (*) | | +--- io.github.alexzhirkevich:compottie-resources:2.0.0-rc05 | | | \--- io.github.alexzhirkevich:compottie-resources-android:2.0.0-rc05 | | | +--- io.github.alexzhirkevich:compottie-core:2.0.0-rc05 | | | | \--- io.github.alexzhirkevich:compottie-core-android:2.0.0-rc05 | | | | +--- io.github.alexzhirkevich:keight-core:0.0.02 | | | | | \--- io.github.alexzhirkevich:keight-core-android:0.0.02 -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.10.2 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.11.0 (*) | | | | | +--- org.jetbrains.kotlinx:kotlinx-datetime:0.7.1 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.2.21 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.2.21 (*) -| | | | +--- org.jetbrains.compose.foundation:foundation:1.8.2 -> 1.10.0 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | | | +--- org.jetbrains.compose.foundation:foundation:1.8.2 -> 1.11.0 (*) | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3 -> 1.9.0 (*) | | | | +--- com.squareup.okio:okio:3.15.0 -> 3.16.4 (*) | | | | \--- org.jetbrains.kotlinx:atomicfu:0.23.2 -> 0.27.0 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.2.21 (*) -| | | +--- org.jetbrains.compose.ui:ui:1.8.2 -> 1.10.1 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | | +--- org.jetbrains.compose.ui:ui:1.8.2 -> 1.11.0 (*) | | | +--- org.jetbrains.compose.components:components-resources:1.8.2 -> 1.10.0 (*) -| | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | \--- io.github.alexzhirkevich:compottie-lite:2.0.0-rc05 | | \--- io.github.alexzhirkevich:compottie-lite-android:2.0.0-rc05 | | +--- io.github.alexzhirkevich:compottie-core:2.0.0-rc05 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.2.21 (*) -| | \--- org.jetbrains.compose.foundation:foundation:1.8.2 -> 1.10.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| | \--- org.jetbrains.compose.foundation:foundation:1.8.2 -> 1.11.0 (*) | +--- project :core:designsystem (*) | +--- io.insert-koin:koin-compose:4.1.1 (*) | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -2148,16 +2144,16 @@ | +--- org.jetbrains.androidx.navigationevent:navigationevent-compose:1.0.1 | | +--- androidx.navigationevent:navigationevent:1.0.2 (*) | | +--- androidx.navigationevent:navigationevent-compose:1.0.2 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.10.1 (*) -| | +--- org.jetbrains.compose.ui:ui:1.10.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.10.2 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.10.1 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.10.1 -> 1.11.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.11.0 (*) | +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.4.0 (*) | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) | +--- project :core:domain -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-bom:4.1.1 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) @@ -2167,27 +2163,43 @@ | +--- project :core-base:ui | | +--- androidx.metrics:metrics-performance:1.0.0 (*) | | +--- androidx.browser:browser:1.9.0 (*) -| | +--- androidx.compose.runtime:runtime -> 1.10.2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- androidx.compose.runtime:runtime -> 1.11.1 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-bom:4.1.1 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material:material:1.9.3 -| | | +--- androidx.compose.material:material:1.9.4 -> 1.10.0 (*) -| | | +--- org.jetbrains.compose.animation:animation:1.9.3 -> 1.10.0 (*) -| | | +--- org.jetbrains.compose.animation:animation-core:1.9.3 -> 1.10.0 (*) -| | | +--- org.jetbrains.compose.annotation-internal:annotation:1.9.3 -> 1.10.1 (*) -| | | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) -| | | +--- org.jetbrains.compose.foundation:foundation-layout:1.9.3 -> 1.10.0 (*) +| | | +--- androidx.compose.material:material:1.9.4 -> 1.10.0 +| | | | \--- androidx.compose.material:material-android:1.10.0 +| | | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) +| | | | +--- androidx.annotation:annotation-experimental:1.4.1 -> 1.5.1 (*) +| | | | +--- androidx.compose.animation:animation:1.8.2 -> 1.11.1 (*) +| | | | +--- androidx.compose.animation:animation-core:1.8.2 -> 1.11.1 (*) +| | | | +--- androidx.compose.foundation:foundation:1.8.2 -> 1.11.1 (*) +| | | | +--- androidx.compose.foundation:foundation-layout:1.8.2 -> 1.11.1 (*) +| | | | +--- androidx.compose.material:material-ripple:1.8.2 -> 1.10.0 (*) +| | | | +--- androidx.compose.runtime:runtime:1.10.0 -> 1.11.1 (*) +| | | | +--- androidx.compose.ui:ui:1.8.2 -> 1.11.1 (*) +| | | | +--- androidx.compose.ui:ui-text:1.8.2 -> 1.11.1 (*) +| | | | +--- androidx.compose.ui:ui-util:1.8.2 -> 1.11.1 (*) +| | | | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.9.4 (*) +| | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.9.4 (*) +| | | | +--- androidx.savedstate:savedstate:1.2.1 -> 1.4.0 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (*) +| | | +--- org.jetbrains.compose.animation:animation:1.9.3 -> 1.11.0 (*) +| | | +--- org.jetbrains.compose.animation:animation-core:1.9.3 -> 1.11.0 (*) +| | | +--- org.jetbrains.compose.annotation-internal:annotation:1.9.3 (*) +| | | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) +| | | +--- org.jetbrains.compose.foundation:foundation-layout:1.9.3 -> 1.11.0 (*) | | | +--- org.jetbrains.compose.material:material-ripple:1.9.3 (*) -| | | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) -| | | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | | +--- org.jetbrains.compose.ui:ui-text:1.9.3 -> 1.10.1 (*) -| | | +--- org.jetbrains.compose.ui:ui-util:1.9.3 -> 1.10.1 (*) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) +| | | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | | +--- org.jetbrains.compose.ui:ui-text:1.9.3 -> 1.11.0 (*) +| | | +--- org.jetbrains.compose.ui:ui-util:1.9.3 -> 1.11.0 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | +--- org.jetbrains.compose.material:material-icons-extended:1.7.3 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -2206,13 +2218,13 @@ | | | \--- io.coil-kt.coil3:coil-compose-android:3.3.0 | | | +--- io.coil-kt.coil3:coil:3.3.0 (*) | | | +--- io.coil-kt.coil3:coil-compose-core:3.3.0 (*) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.2.21 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0 -> 2.3.21 (*) | | +--- io.github.vinceglb:filekit-core:0.12.0 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.2.21 (*) -| | \--- org.jetbrains.compose.runtime:runtime:1.9.0 -> 1.10.1 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.20 -> 2.3.21 (*) +| | \--- org.jetbrains.compose.runtime:runtime:1.9.0 -> 1.11.0 (*) | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) -| +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) -| +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) +| +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) +| +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | +--- dev.chrisbanes.material3:material3-window-size-class-multiplatform:0.5.0 (*) @@ -2226,13 +2238,13 @@ | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) | | +--- androidx.credentials:credentials:1.5.0 -| | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | | +--- androidx.biometric:biometric:1.1.0 (*) | | | +--- androidx.core:core:1.15.0 -> 1.17.0 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.11.0 (*) | | | +--- androidx.credentials:credentials-play-services-auth:1.5.0 (c) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (c) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (c) | | +--- androidx.credentials:credentials-play-services-auth:1.5.0 | | | +--- androidx.credentials:credentials:1.5.0 (*) | | | +--- com.google.android.gms:play-services-auth:21.1.1 -> 21.3.0 @@ -2254,26 +2266,26 @@ | | | | | +--- com.google.android.gms:play-services-basement:18.3.0 -> 18.5.0 (*) | | | | | +--- com.google.android.gms:play-services-tasks:18.1.0 -> 18.2.0 (*) | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.0 (*) -| | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) +| | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.11.0 (*) | | | | \--- com.google.android.gms:play-services-tasks:18.2.0 (*) | | | +--- com.google.android.gms:play-services-auth-blockstore:16.4.0 | | | | +--- com.google.android.gms:play-services-base:18.5.0 (*) | | | | +--- com.google.android.gms:play-services-basement:18.4.0 -> 18.5.0 (*) | | | | +--- com.google.android.gms:play-services-tasks:18.2.0 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.0 -> 2.2.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.0 -> 2.3.21 (*) | | | +--- com.google.android.gms:play-services-fido:21.0.0 (*) | | | +--- com.google.android.gms:play-services-identity-credentials:16.0.0-alpha02 | | | | +--- com.google.android.gms:play-services-base:18.5.0 (*) | | | | +--- com.google.android.gms:play-services-basement:18.4.0 -> 18.5.0 (*) | | | | +--- com.google.android.gms:play-services-tasks:18.2.0 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.0 -> 2.2.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.0 -> 2.3.21 (*) | | | +--- com.google.android.libraries.identity.googleid:googleid:1.1.0 -> 1.1.1 | | | | +--- androidx.credentials:credentials:1.3.0-beta01 -> 1.5.0 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.0 -> 2.2.21 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.0 -> 2.3.21 (*) | | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 1.8.22 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) | | | +--- androidx.credentials:credentials:1.5.0 (c) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.2.21 (c) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.3.21 (c) | | +--- com.google.android.libraries.identity.googleid:googleid:1.1.1 (*) | | +--- com.google.android.gms:play-services-auth:21.3.0 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) @@ -2283,7 +2295,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -2303,7 +2315,7 @@ | | | +--- androidx.activity:activity-compose:1.12.2 (*) | | | +--- androidx.metrics:metrics-performance:1.0.0 (*) | | | +--- androidx.browser:browser:1.9.0 (*) -| | | +--- androidx.compose.runtime:runtime -> 1.10.2 (*) +| | | +--- androidx.compose.runtime:runtime -> 1.11.1 (*) | | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | | +--- com.google.android.play:review:2.0.2 | | | | +--- com.google.android.gms:play-services-basement:18.4.0 -> 18.5.0 (*) @@ -2316,8 +2328,8 @@ | | | | +--- com.google.android.gms:play-services-tasks:18.2.0 (*) | | | | +--- com.google.android.play:review:2.0.2 (*) | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72 -> 1.9.0 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0 -> 1.10.2 (*) -| | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0 -> 1.10.2 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0 -> 1.11.0 (*) +| | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0 -> 1.11.0 (*) | | | +--- com.google.android.play:app-update-ktx:2.1.0 | | | | +--- androidx.core:core:1.1.0 -> 1.17.0 (*) | | | | +--- androidx.fragment:fragment:1.1.0 -> 1.8.9 (*) @@ -2329,30 +2341,30 @@ | | | | | \--- com.google.android.play:core-common:2.0.3 -> 2.0.4 | | | | +--- com.google.android.play:core-common:2.0.3 -> 2.0.4 | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72 -> 1.9.0 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0 -> 1.10.2 (*) -| | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0 -> 1.10.2 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0 -> 1.11.0 (*) +| | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0 -> 1.11.0 (*) | | | +--- com.google.android.play:app-update:2.1.0 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | +--- io.insert-koin:koin-bom:4.1.1 (*) | | | +--- io.insert-koin:koin-core:4.1.1 (*) | | | +--- io.insert-koin:koin-annotations:2.1.0 (*) -| | | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | | +--- com.mohamedrejeb.calf:calf-permissions:0.8.0 | | | | \--- com.mohamedrejeb.calf:calf-permissions-android:0.8.0 | | | | +--- androidx.activity:activity-compose:1.10.1 -> 1.12.2 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.2.21 (*) -| | | | +--- org.jetbrains.compose.runtime:runtime:1.8.0 -> 1.10.1 (*) -| | | | +--- org.jetbrains.compose.foundation:foundation:1.8.0 -> 1.10.0 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.3.21 (*) +| | | | +--- org.jetbrains.compose.runtime:runtime:1.8.0 -> 1.11.0 (*) +| | | | +--- org.jetbrains.compose.foundation:foundation:1.8.0 -> 1.11.0 (*) | | | | \--- org.jetbrains.compose.material:material:1.8.0 -> 1.9.3 (*) | | | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.2.21 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.material:material-icons-extended:1.7.3 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | \--- org.jetbrains.kotlin:kotlin-reflect:2.2.21 (*) | +--- project :feature:home | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.9.4 (*) @@ -2363,7 +2375,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -2371,7 +2383,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -2384,8 +2396,8 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.material:material-icons-extended:1.7.3 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) @@ -2399,7 +2411,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -2407,7 +2419,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -2420,8 +2432,8 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -2434,7 +2446,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -2442,7 +2454,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -2457,20 +2469,20 @@ | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) | | +--- project :core-base:ui (*) | | +--- project :core-base:datastore -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | +--- io.insert-koin:koin-bom:4.1.1 (*) | | | +--- io.insert-koin:koin-core:4.1.1 (*) | | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | | +--- com.russhwolf:multiplatform-settings-no-arg:1.3.0 (*) | | | +--- com.russhwolf:multiplatform-settings-serialization:1.3.0 (*) | | | +--- com.russhwolf:multiplatform-settings-coroutines:1.3.0 (*) -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | | \--- org.jetbrains.kotlinx:kotlinx-datetime:0.7.1 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.material:material-icons-extended:1.7.3 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | \--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) | +--- project :feature:faq @@ -2482,7 +2494,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -2490,7 +2502,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -2503,8 +2515,8 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | \--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -2517,7 +2529,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -2525,7 +2537,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -2538,8 +2550,8 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | \--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -2552,7 +2564,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -2560,7 +2572,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -2573,8 +2585,8 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -2591,7 +2603,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -2599,7 +2611,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -2612,8 +2624,8 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | \--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -2626,7 +2638,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -2634,7 +2646,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -2647,8 +2659,8 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | \--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -2661,7 +2673,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -2669,7 +2681,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -2682,8 +2694,8 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | \--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -2696,7 +2708,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -2704,7 +2716,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -2726,7 +2738,7 @@ | | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | | +--- io.insert-koin:koin-core:4.1.1 (*) | | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | | +--- project :core:ui (*) @@ -2734,7 +2746,7 @@ | | | +--- project :core:data (*) | | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -2747,14 +2759,14 @@ | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | | +--- org.jetbrains.compose.material:material-icons-extended:1.7.3 (*) | | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | | \--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.material:material-icons-extended:1.7.3 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) @@ -2769,7 +2781,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -2777,7 +2789,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -2790,8 +2802,8 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | \--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -2804,7 +2816,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -2812,7 +2824,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -2825,8 +2837,8 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -2843,7 +2855,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -2851,7 +2863,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -2864,8 +2876,8 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | \--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -2878,7 +2890,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -2886,7 +2898,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -2899,18 +2911,18 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) | | \--- tech.annexflow.compose:constraintlayout-compose-multiplatform:0.6.0 | | \--- tech.annexflow.compose:constraintlayout-compose-multiplatform-android:0.6.0 -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.2.21 (*) -| | +--- org.jetbrains.compose.ui:ui:1.8.1 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.ui:ui-util:1.8.1 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.8.1 -> 1.10.0 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.8.1 -> 1.10.1 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.3.21 (*) +| | +--- org.jetbrains.compose.ui:ui:1.8.1 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.ui:ui-util:1.8.1 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.8.1 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.8.1 -> 1.11.0 (*) | | +--- org.jetbrains.kotlin:kotlin-reflect -> 2.2.21 (*) | | \--- org.jetbrains.kotlin:kotlin-reflect:2.1.21 -> 2.2.21 (c) | +--- project :feature:receipt @@ -2922,7 +2934,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -2930,7 +2942,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -2943,8 +2955,8 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -2958,7 +2970,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -2966,7 +2978,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -2979,8 +2991,8 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | \--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -3033,10 +3045,10 @@ | | | \--- com.google.mlkit:common:18.9.0 -> 18.11.0 (*) | | +--- com.google.accompanist:accompanist-permissions:0.36.0 | | | +--- androidx.activity:activity-compose:1.9.0 -> 1.12.2 (*) -| | | +--- androidx.compose.foundation:foundation:1.7.0 -> 1.10.2 (*) -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4 -> 1.10.2 (*) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.2.21 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | | +--- androidx.compose.foundation:foundation:1.7.0 -> 1.11.1 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4 -> 1.11.0 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.3.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -3044,7 +3056,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -3058,8 +3070,8 @@ | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) | | +--- project :core-base:ui (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.material:material-icons-extended:1.7.3 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) @@ -3075,7 +3087,7 @@ | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) | | +--- com.google.android.gms:play-services-code-scanner:16.1.0 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -3083,7 +3095,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -3096,8 +3108,8 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.material:material-icons-extended:1.7.3 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) @@ -3112,7 +3124,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -3120,7 +3132,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -3133,8 +3145,8 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -3143,10 +3155,10 @@ | | | \--- io.github.alexzhirkevich:qrose-android:1.0.1 | | | +--- io.github.alexzhirkevich:qrose-core:1.0.1 | | | | \--- io.github.alexzhirkevich:qrose-core-android:1.0.1 -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.2.21 (*) -| | | | \--- org.jetbrains.compose.ui:ui:1.6.0 -> 1.10.1 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.2.21 (*) -| | | \--- org.jetbrains.compose.ui:ui:1.6.0 -> 1.10.1 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.3.21 (*) +| | | | \--- org.jetbrains.compose.ui:ui:1.6.0 -> 1.11.0 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.3.21 (*) +| | | \--- org.jetbrains.compose.ui:ui:1.6.0 -> 1.11.0 (*) | | \--- com.google.zxing:core:3.5.3 | +--- project :feature:mpay-qr-scan | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.9.4 (*) @@ -3158,17 +3170,17 @@ | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) | | +--- androidx.camera:camera-view:1.4.2 -| | | +--- androidx.annotation:annotation:1.2.0 -> 1.9.1 (*) +| | | +--- androidx.annotation:annotation:1.2.0 -> 1.10.0 (*) | | | +--- androidx.annotation:annotation-experimental:1.4.1 -> 1.5.1 (*) | | | +--- androidx.appcompat:appcompat:1.1.0 -> 1.7.1 (*) | | | +--- androidx.camera:camera-core:1.4.2 -| | | | +--- androidx.annotation:annotation:1.2.0 -> 1.9.1 (*) +| | | | +--- androidx.annotation:annotation:1.2.0 -> 1.10.0 (*) | | | | +--- androidx.annotation:annotation-experimental:1.4.1 -> 1.5.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.2.21 (*) -| | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.4 -> 1.10.2 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.71 -> 2.3.21 (*) +| | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.4 -> 1.11.0 (*) | | | | +--- androidx.core:core:1.1.0 -> 1.17.0 (*) | | | | +--- androidx.exifinterface:exifinterface:1.3.2 -> 1.4.1 (*) | | | | +--- androidx.lifecycle:lifecycle-common:2.1.0 -> 2.9.4 (*) @@ -3176,8 +3188,8 @@ | | | | +--- androidx.tracing:tracing:1.2.0 -> 1.3.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.2.21 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.10.2 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.11.0 (*) | | | | +--- androidx.camera:camera-camera2:1.4.2 (c) | | | | +--- androidx.camera:camera-lifecycle:1.4.2 (c) | | | | +--- androidx.camera:camera-video:1.4.2 (c) @@ -3191,13 +3203,13 @@ | | | | +--- androidx.tracing:tracing-ktx:1.2.0 -> 1.3.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.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.10.2 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.11.0 (*) | | | | +--- androidx.camera:camera-camera2:1.4.2 (c) | | | | +--- androidx.camera:camera-core:1.4.2 (c) | | | | +--- androidx.camera:camera-video:1.4.2 (c) | | | | \--- androidx.camera:camera-view:1.4.2 (c) | | | +--- androidx.camera:camera-video:1.4.2 -| | | | +--- androidx.annotation:annotation:1.2.0 -> 1.9.1 (*) +| | | | +--- androidx.annotation:annotation:1.2.0 -> 1.10.0 (*) | | | | +--- androidx.camera:camera-core:1.4.2 (*) | | | | +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*) | | | | +--- androidx.core:core:1.1.0 -> 1.17.0 (*) @@ -3216,7 +3228,7 @@ | | | +--- androidx.camera:camera-lifecycle:1.4.2 (c) | | | \--- androidx.camera:camera-video:1.4.2 (c) | | +--- androidx.camera:camera-camera2:1.4.2 -| | | +--- androidx.annotation:annotation:1.2.0 -> 1.9.1 (*) +| | | +--- androidx.annotation:annotation:1.2.0 -> 1.10.0 (*) | | | +--- androidx.camera:camera-core:1.4.2 (*) | | | +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*) | | | +--- androidx.core:core:1.1.0 -> 1.17.0 (*) @@ -3252,8 +3264,8 @@ | | | +--- com.google.mlkit:common:18.11.0 (*) | | | \--- com.google.mlkit:vision-common:17.3.0 (*) | | +--- com.google.guava:guava:33.4.8-android (*) -| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.2 -> 1.11.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -3261,7 +3273,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -3275,8 +3287,8 @@ | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) | | +--- project :core-base:platform (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -3292,7 +3304,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -3300,7 +3312,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -3314,8 +3326,8 @@ | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) | | +--- project :core-base:ui (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | \--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -3328,7 +3340,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -3336,7 +3348,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -3349,8 +3361,8 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | \--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -3363,7 +3375,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -3371,7 +3383,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -3384,8 +3396,8 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | \--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -3399,7 +3411,7 @@ | | +--- io.insert-koin:koin-androidx-compose:4.1.1 (*) | | +--- io.insert-koin:koin-androidx-navigation:4.1.1 (*) | | +--- io.insert-koin:koin-core-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -3407,7 +3419,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -3420,8 +3432,8 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -3440,7 +3452,7 @@ | | +--- androidx.profileinstaller:profileinstaller:1.4.1 (*) | | +--- co.touchlab:kermit:2.0.8 (*) | | +--- com.google.accompanist:accompanist-permissions:0.36.0 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.2.21 -> 2.3.21 (*) | | +--- io.insert-koin:koin-core:4.1.1 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:ui (*) @@ -3448,7 +3460,7 @@ | | +--- project :core:data (*) | | +--- io.insert-koin:koin-compose:4.1.1 (*) | | +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) -| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.10.1 (*) +| | +--- org.jetbrains.compose.runtime:runtime:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.6 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6 (*) @@ -3461,8 +3473,8 @@ | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0 (*) | | +--- io.github.openmf:mifos-authenticator-passcode:2.3.0-beta (*) | | +--- io.github.openmf:mifos-authenticator-biometrics:2.3.0-beta (*) -| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.10.1 (*) -| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.10.0 (*) +| | +--- org.jetbrains.compose.ui:ui:1.9.3 -> 1.11.0 (*) +| | +--- org.jetbrains.compose.foundation:foundation:1.9.3 -> 1.11.0 (*) | | +--- org.jetbrains.compose.material3:material3:1.9.0-beta03 -> 1.9.0 (*) | | +--- org.jetbrains.compose.components:components-resources:1.9.3 -> 1.10.0 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 (*) @@ -3476,29 +3488,29 @@ +--- androidx.activity:activity-compose:1.12.2 (*) +--- androidx.activity:activity-ktx:1.12.2 (*) +--- androidx.core:core-splashscreen:1.2.0 -| +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | +--- androidx.appcompat:appcompat-resources:1.7.0 -> 1.7.1 (*) -| +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (c) +| +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (c) +--- androidx.compose.material3:material3 -> 1.4.0 (*) +--- androidx.compose.material3.adaptive:adaptive:1.1.0 -> 1.2.0 (*) +--- androidx.compose.material3.adaptive:adaptive-layout:1.1.0 -> 1.2.0 (*) +--- androidx.compose.material3.adaptive:adaptive-navigation:1.1.0 -> 1.2.0 (*) -+--- androidx.compose.runtime:runtime-tracing:1.10.0 -> 1.10.2 -| +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) -| +--- androidx.compose.runtime:runtime:1.3.3 -> 1.10.2 (*) ++--- androidx.compose.runtime:runtime-tracing:1.10.0 -> 1.11.1 +| +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) +| +--- androidx.compose.runtime:runtime:1.3.3 -> 1.11.1 (*) | +--- androidx.startup:startup-runtime:1.1.1 -> 1.2.0 (*) -| +--- androidx.tracing:tracing-perfetto:1.0.0 -| | +--- androidx.annotation:annotation:1.3.0 -> 1.9.1 (*) +| +--- androidx.tracing:tracing-perfetto:1.0.1 +| | +--- androidx.annotation:annotation:1.8.1 -> 1.10.0 (*) | | +--- androidx.startup:startup-runtime:1.1.1 -> 1.2.0 (*) -| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) -| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.2.21 (*) -| +--- androidx.compose.runtime:runtime:1.10.2 (c) -| +--- androidx.compose.runtime:runtime-annotation:1.10.2 (c) -| +--- androidx.compose.runtime:runtime-retain:1.10.2 (c) -| \--- androidx.compose.runtime:runtime-saveable:1.10.2 (c) -+--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) -+--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2 (*) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.21 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.3.21 (*) +| +--- androidx.compose.runtime:runtime:1.11.1 (c) +| +--- androidx.compose.runtime:runtime-annotation:1.11.1 (c) +| +--- androidx.compose.runtime:runtime-retain:1.11.1 (c) +| \--- androidx.compose.runtime:runtime-saveable:1.11.1 (c) ++--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -> 1.11.0 (*) ++--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2 -> 1.11.0 (*) +--- androidx.lifecycle:lifecycle-runtime-compose:2.9.4 (*) +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.9.4 (*) +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.2 -> 2.9.4 (*) @@ -3520,26 +3532,26 @@ +--- io.insert-koin:koin-compose:4.1.1 (*) +--- io.insert-koin:koin-compose-viewmodel:4.1.1 (*) +--- androidx.glance:glance-appwidget:1.1.0 -| +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) -| +--- androidx.compose.runtime:runtime:1.1.1 -> 1.10.2 (*) -| +--- androidx.compose.ui:ui-graphics:1.1.1 -> 1.10.2 (*) -| +--- androidx.compose.ui:ui-unit:1.1.1 -> 1.10.2 (*) +| +--- androidx.annotation:annotation:1.1.0 -> 1.10.0 (*) +| +--- androidx.compose.runtime:runtime:1.1.1 -> 1.11.1 (*) +| +--- androidx.compose.ui:ui-graphics:1.1.1 -> 1.11.1 (*) +| +--- androidx.compose.ui:ui-unit:1.1.1 -> 1.11.1 (*) | +--- androidx.core:core-ktx:1.7.0 -> 1.17.0 (*) | +--- androidx.core:core-remoteviews:1.1.0 -| | +--- androidx.annotation:annotation:1.2.0 -> 1.9.1 (*) +| | +--- androidx.annotation:annotation:1.2.0 -> 1.10.0 (*) | | +--- androidx.core:core:1.8.0 -> 1.17.0 (*) -| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) | +--- androidx.datastore:datastore:1.0.0 -> 1.1.7 (*) | +--- androidx.datastore:datastore-core:1.0.0 -> 1.1.7 (*) | +--- androidx.datastore:datastore-preferences:1.0.0 -> 1.1.7 (*) | +--- androidx.datastore:datastore-preferences-core:1.0.0 -> 1.1.7 (*) | +--- androidx.glance:glance:1.1.0 -| | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) -| | +--- androidx.annotation:annotation:1.2.0 -> 1.9.1 (*) +| | +--- androidx.annotation:annotation:1.1.0 -> 1.10.0 (*) +| | +--- androidx.annotation:annotation:1.2.0 -> 1.10.0 (*) | | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.5.1 (*) -| | +--- androidx.compose.runtime:runtime:1.2.1 -> 1.10.2 (*) -| | +--- androidx.compose.ui:ui-graphics:1.1.1 -> 1.10.2 (*) -| | +--- androidx.compose.ui:ui-unit:1.1.1 -> 1.10.2 (*) +| | +--- androidx.compose.runtime:runtime:1.2.1 -> 1.11.1 (*) +| | +--- androidx.compose.ui:ui-graphics:1.1.1 -> 1.11.1 (*) +| | +--- androidx.compose.ui:ui-unit:1.1.1 -> 1.11.1 (*) | | +--- androidx.concurrent:concurrent-futures-ktx:1.1.0 (*) | | +--- androidx.datastore:datastore-core:1.0.0 -> 1.1.7 (*) | | +--- androidx.datastore:datastore-preferences:1.0.0 -> 1.1.7 (*) @@ -3552,7 +3564,7 @@ | | | +--- androidx.lifecycle:lifecycle-service:2.6.2 -> 2.9.4 (*) | | | +--- androidx.room:room-ktx:2.6.1 | | | | +--- androidx.room:room-common:2.6.1 -| | | | | +--- androidx.annotation:annotation:1.3.0 -> 1.9.1 (*) +| | | | | +--- androidx.annotation:annotation:1.3.0 -> 1.10.0 (*) | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 (*) | | | | | +--- androidx.room:room-ktx:2.6.1 (c) | | | | | \--- androidx.room:room-runtime:2.6.1 (c) @@ -3561,31 +3573,31 @@ | | | | | +--- androidx.arch.core:core-runtime:2.2.0 (*) | | | | | +--- androidx.room:room-common:2.6.1 (*) | | | | | +--- androidx.sqlite:sqlite:2.4.0 -| | | | | | +--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) +| | | | | | +--- androidx.annotation:annotation:1.0.0 -> 1.10.0 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) | | | | | | \--- androidx.sqlite:sqlite-framework:2.4.0 (c) | | | | | +--- androidx.sqlite:sqlite-framework:2.4.0 -| | | | | | +--- androidx.annotation:annotation:1.2.0 -> 1.9.1 (*) +| | | | | | +--- androidx.annotation:annotation:1.2.0 -> 1.10.0 (*) | | | | | | +--- androidx.sqlite:sqlite:2.4.0 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) | | | | | | \--- androidx.sqlite:sqlite:2.4.0 (c) | | | | | +--- androidx.room:room-common:2.6.1 (c) | | | | | \--- androidx.room:room-ktx:2.6.1 (c) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1 -> 1.10.2 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1 -> 1.11.0 (*) | | | | +--- androidx.room:room-common:2.6.1 (c) | | | | \--- androidx.room:room-runtime:2.6.1 (c) | | | +--- androidx.startup:startup-runtime:1.1.1 -> 1.2.0 (*) | | | +--- androidx.tracing:tracing-ktx:1.2.0 -> 1.3.0 (*) | | | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava -| | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.2.21 (*) -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.10.2 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.3.21 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.11.0 (*) | | | +--- androidx.work:work-runtime-ktx:2.10.3 (c) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (c) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (c) | | +--- androidx.work:work-runtime-ktx:2.7.1 -> 2.10.3 | | | +--- androidx.work:work-runtime:2.10.3 (*) | | | \--- androidx.work:work-runtime:2.10.3 (c) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) | | +--- androidx.glance:glance-appwidget:1.1.0 (c) | | +--- androidx.glance:glance-appwidget-proto:1.1.0 (c) | | +--- androidx.glance:glance-material3:1.1.0 (c) @@ -3600,18 +3612,18 @@ | | +--- androidx.glance:glance-appwidget:1.1.0 (c) | | +--- androidx.glance:glance-appwidget-external-protobuf:1.1.0 (c) | | \--- androidx.glance:glance-material3:1.1.0 (c) -| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) | +--- androidx.glance:glance:1.1.0 (c) | +--- androidx.glance:glance-appwidget-proto:1.1.0 (c) | +--- androidx.glance:glance-material3:1.1.0 (c) | \--- androidx.glance:glance-appwidget-external-protobuf:1.1.0 (c) +--- androidx.glance:glance-material3:1.1.0 -| +--- androidx.annotation:annotation:1.4.0 -> 1.9.1 (*) +| +--- androidx.annotation:annotation:1.4.0 -> 1.10.0 (*) | +--- androidx.compose.material3:material3:1.0.0 -> 1.4.0 (*) -| +--- androidx.compose.runtime:runtime:1.1.1 -> 1.10.2 (*) +| +--- androidx.compose.runtime:runtime:1.1.1 -> 1.11.1 (*) | +--- androidx.core:core:1.12.0 -> 1.17.0 (*) | +--- androidx.glance:glance:1.1.0 (*) -| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.2.21 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.21 (*) | +--- androidx.glance:glance:1.1.0 (c) | +--- androidx.glance:glance-appwidget:1.1.0 (c) | +--- androidx.glance:glance-appwidget-proto:1.1.0 (c) @@ -3621,5 +3633,5 @@ +--- io.insert-koin:koin-androidx-workmanager:3.5.6 -> 4.1.1 | +--- io.insert-koin:koin-android:4.1.1 (*) | +--- androidx.work:work-runtime-ktx:2.10.3 (*) -| \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.2.21 (*) -\--- androidx.compose.runtime:runtime -> 1.10.2 (*) +| \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 -> 2.3.21 (*) +\--- androidx.compose.runtime:runtime -> 1.11.1 (*) diff --git a/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt b/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt index 145e3a43c..7f2212f1d 100644 --- a/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt +++ b/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt @@ -44,8 +44,8 @@ androidx.activity:activity-compose:1.12.2 androidx.activity:activity-ktx:1.12.2 androidx.activity:activity:1.12.2 androidx.annotation:annotation-experimental:1.5.1 -androidx.annotation:annotation-jvm:1.9.1 -androidx.annotation:annotation:1.9.1 +androidx.annotation:annotation-jvm:1.10.0 +androidx.annotation:annotation:1.10.0 androidx.appcompat:appcompat-resources:1.7.1 androidx.appcompat:appcompat:1.7.1 androidx.arch.core:core-common:2.2.0 @@ -61,14 +61,14 @@ androidx.camera:camera-view:1.4.2 androidx.collection:collection-jvm:1.5.0 androidx.collection:collection-ktx:1.5.0 androidx.collection:collection:1.5.0 -androidx.compose.animation:animation-android:1.10.2 -androidx.compose.animation:animation-core-android:1.10.2 -androidx.compose.animation:animation-core:1.10.2 -androidx.compose.animation:animation:1.10.2 -androidx.compose.foundation:foundation-android:1.10.2 -androidx.compose.foundation:foundation-layout-android:1.10.2 -androidx.compose.foundation:foundation-layout:1.10.2 -androidx.compose.foundation:foundation:1.10.2 +androidx.compose.animation:animation-android:1.11.1 +androidx.compose.animation:animation-core-android:1.11.1 +androidx.compose.animation:animation-core:1.11.1 +androidx.compose.animation:animation:1.11.1 +androidx.compose.foundation:foundation-android:1.11.1 +androidx.compose.foundation:foundation-layout-android:1.11.1 +androidx.compose.foundation:foundation-layout:1.11.1 +androidx.compose.foundation:foundation:1.11.1 androidx.compose.material3.adaptive:adaptive-android:1.2.0 androidx.compose.material3.adaptive:adaptive-layout-android:1.2.0 androidx.compose.material3.adaptive:adaptive-layout:1.2.0 @@ -87,33 +87,33 @@ androidx.compose.material:material-icons-extended:1.7.8 androidx.compose.material:material-ripple-android:1.10.0 androidx.compose.material:material-ripple:1.10.0 androidx.compose.material:material:1.10.0 -androidx.compose.runtime:runtime-android:1.10.2 -androidx.compose.runtime:runtime-annotation-android:1.10.2 -androidx.compose.runtime:runtime-annotation:1.10.2 -androidx.compose.runtime:runtime-retain-android:1.10.2 -androidx.compose.runtime:runtime-retain:1.10.2 -androidx.compose.runtime:runtime-saveable-android:1.10.2 -androidx.compose.runtime:runtime-saveable:1.10.2 -androidx.compose.runtime:runtime-tracing:1.10.2 -androidx.compose.runtime:runtime:1.10.2 -androidx.compose.ui:ui-android:1.10.2 -androidx.compose.ui:ui-geometry-android:1.10.2 -androidx.compose.ui:ui-geometry:1.10.2 -androidx.compose.ui:ui-graphics-android:1.10.2 -androidx.compose.ui:ui-graphics:1.10.2 -androidx.compose.ui:ui-text-android:1.10.2 -androidx.compose.ui:ui-text:1.10.2 -androidx.compose.ui:ui-tooling-android:1.10.2 -androidx.compose.ui:ui-tooling-data-android:1.10.2 -androidx.compose.ui:ui-tooling-data:1.10.2 -androidx.compose.ui:ui-tooling-preview-android:1.10.2 -androidx.compose.ui:ui-tooling-preview:1.10.2 -androidx.compose.ui:ui-tooling:1.10.2 -androidx.compose.ui:ui-unit-android:1.10.2 -androidx.compose.ui:ui-unit:1.10.2 -androidx.compose.ui:ui-util-android:1.10.2 -androidx.compose.ui:ui-util:1.10.2 -androidx.compose.ui:ui:1.10.2 +androidx.compose.runtime:runtime-android:1.11.1 +androidx.compose.runtime:runtime-annotation-android:1.11.1 +androidx.compose.runtime:runtime-annotation:1.11.1 +androidx.compose.runtime:runtime-retain-android:1.11.1 +androidx.compose.runtime:runtime-retain:1.11.1 +androidx.compose.runtime:runtime-saveable-android:1.11.1 +androidx.compose.runtime:runtime-saveable:1.11.1 +androidx.compose.runtime:runtime-tracing:1.11.1 +androidx.compose.runtime:runtime:1.11.1 +androidx.compose.ui:ui-android:1.11.1 +androidx.compose.ui:ui-geometry-android:1.11.1 +androidx.compose.ui:ui-geometry:1.11.1 +androidx.compose.ui:ui-graphics-android:1.11.1 +androidx.compose.ui:ui-graphics:1.11.1 +androidx.compose.ui:ui-text-android:1.11.1 +androidx.compose.ui:ui-text:1.11.1 +androidx.compose.ui:ui-tooling-android:1.11.1 +androidx.compose.ui:ui-tooling-data-android:1.11.1 +androidx.compose.ui:ui-tooling-data:1.11.1 +androidx.compose.ui:ui-tooling-preview-android:1.11.1 +androidx.compose.ui:ui-tooling-preview:1.11.1 +androidx.compose.ui:ui-tooling:1.11.1 +androidx.compose.ui:ui-unit-android:1.11.1 +androidx.compose.ui:ui-unit:1.11.1 +androidx.compose.ui:ui-util-android:1.11.1 +androidx.compose.ui:ui-util:1.11.1 +androidx.compose.ui:ui:1.11.1 androidx.compose:compose-bom:2025.12.01 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 @@ -216,7 +216,7 @@ androidx.sqlite:sqlite:2.4.0 androidx.startup:startup-runtime:1.2.0 androidx.tracing:tracing-android:1.3.0 androidx.tracing:tracing-ktx:1.3.0 -androidx.tracing:tracing-perfetto:1.0.0 +androidx.tracing:tracing-perfetto:1.0.1 androidx.tracing:tracing:1.3.0 androidx.transition:transition:1.6.0 androidx.vectordrawable:vectordrawable-animated:1.1.0 @@ -304,6 +304,10 @@ com.google.mlkit:vision-interfaces:16.3.0 com.google.zxing:core:3.5.3 com.mohamedrejeb.calf:calf-permissions-android:0.8.0 com.mohamedrejeb.calf:calf-permissions:0.8.0 +com.patrykandpatrick.vico:compose-android:3.2.2 +com.patrykandpatrick.vico:compose-m3-android:3.2.2 +com.patrykandpatrick.vico:compose-m3:3.2.2 +com.patrykandpatrick.vico:compose:3.2.2 com.russhwolf:multiplatform-settings-android:1.3.0 com.russhwolf:multiplatform-settings-coroutines-android:1.3.0 com.russhwolf:multiplatform-settings-coroutines:1.3.0 @@ -440,16 +444,16 @@ org.jetbrains.androidx.navigationevent:navigationevent-compose:1.0.1 org.jetbrains.androidx.savedstate:savedstate-compose:1.3.6 org.jetbrains.androidx.savedstate:savedstate:1.4.0 org.jetbrains.androidx.window:window-core:1.4.0-beta01 -org.jetbrains.compose.animation:animation-core:1.10.0 -org.jetbrains.compose.animation:animation:1.10.0 -org.jetbrains.compose.annotation-internal:annotation:1.10.1 -org.jetbrains.compose.collection-internal:collection:1.10.1 +org.jetbrains.compose.animation:animation-core:1.11.0 +org.jetbrains.compose.animation:animation:1.11.0 +org.jetbrains.compose.annotation-internal:annotation:1.9.3 +org.jetbrains.compose.collection-internal:collection:1.9.3 org.jetbrains.compose.components:components-resources-android:1.10.0 org.jetbrains.compose.components:components-resources:1.10.0 org.jetbrains.compose.components:components-ui-tooling-preview-android:1.9.3 org.jetbrains.compose.components:components-ui-tooling-preview:1.9.3 -org.jetbrains.compose.foundation:foundation-layout:1.10.0 -org.jetbrains.compose.foundation:foundation:1.10.0 +org.jetbrains.compose.foundation:foundation-layout:1.11.0 +org.jetbrains.compose.foundation:foundation:1.11.0 org.jetbrains.compose.material3.adaptive:adaptive-layout:1.1.2 org.jetbrains.compose.material3.adaptive:adaptive-navigation:1.1.2 org.jetbrains.compose.material3.adaptive:adaptive:1.2.0-alpha05 @@ -459,32 +463,32 @@ org.jetbrains.compose.material:material-icons-core:1.7.3 org.jetbrains.compose.material:material-icons-extended:1.7.3 org.jetbrains.compose.material:material-ripple:1.9.3 org.jetbrains.compose.material:material:1.9.3 -org.jetbrains.compose.runtime:runtime-saveable:1.10.1 -org.jetbrains.compose.runtime:runtime:1.10.1 +org.jetbrains.compose.runtime:runtime-saveable:1.11.0 +org.jetbrains.compose.runtime:runtime:1.11.0 org.jetbrains.compose.ui:ui-backhandler-android:1.9.3 org.jetbrains.compose.ui:ui-backhandler:1.9.3 -org.jetbrains.compose.ui:ui-geometry:1.10.1 -org.jetbrains.compose.ui:ui-graphics:1.10.1 -org.jetbrains.compose.ui:ui-text:1.10.1 +org.jetbrains.compose.ui:ui-geometry:1.11.0 +org.jetbrains.compose.ui:ui-graphics:1.11.0 +org.jetbrains.compose.ui:ui-text:1.11.0 org.jetbrains.compose.ui:ui-tooling-preview:1.10.0 -org.jetbrains.compose.ui:ui-unit:1.10.1 -org.jetbrains.compose.ui:ui-util:1.10.1 -org.jetbrains.compose.ui:ui:1.10.1 +org.jetbrains.compose.ui:ui-unit:1.11.0 +org.jetbrains.compose.ui:ui-util:1.11.0 +org.jetbrains.compose.ui:ui:1.11.0 org.jetbrains.kotlin:kotlin-parcelize-runtime:2.2.21 org.jetbrains.kotlin:kotlin-reflect:2.2.21 org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.0 org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 -org.jetbrains.kotlin:kotlin-stdlib:2.2.21 +org.jetbrains.kotlin:kotlin-stdlib:2.3.21 org.jetbrains.kotlinx:atomicfu-jvm:0.27.0 org.jetbrains.kotlinx:atomicfu:0.27.0 org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.4.0 org.jetbrains.kotlinx:kotlinx-collections-immutable:0.4.0 -org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2 -org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.2 -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.2 -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 -org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.2 -org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.2 +org.jetbrains.kotlinx:kotlinx-coroutines-android:1.11.0 +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.11.0 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.11.0 +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0 +org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.11.0 +org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.11.0 org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1 org.jetbrains.kotlinx:kotlinx-datetime:0.7.1 org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.8.0