-
Notifications
You must be signed in to change notification settings - Fork 566
feat: chart for income expense #2052
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
Changes from all commits
d98b71f
c67c6e8
1d06df3
736ed82
d18fc52
0474626
2526ac4
283e97e
2a88c93
09909ef
6707d7b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -45,8 +45,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 | ||
|
|
@@ -62,14 +62,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 | ||
|
|
@@ -88,37 +88,38 @@ 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 | ||
| androidx.core:core-ktx:1.17.0 | ||
| androidx.core:core-remoteviews:1.1.0 | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🌐 Web query:
💡 Result: Security vulnerabilities for these exact versions (evidence-backed from the sources I found): A) androidx.glance 1.1.0 The official Glance release notes indicate that version 1.1.0 has a vulnerability risk related to CVE-2024-7254: Glance “compiles against protobuf 4.28.2 in order to address CVE-2024-7254,” and the notes instruct upgrading from version 1.1.0 to 1.1.1 “to address the vulnerability risk.” [1][2] B) androidx.work 2.10.3 In the sources retrieved for the WorkManager 2.10.3 release notes, I did not find an explicit CVE/security vulnerability associated with version 2.10.3 (only bug-fix text appeared in the retrieved snippet). [3] C) androidx.room 2.6.1 In the sources retrieved for the Room 2.6.1 release notes, I did not find an explicit CVE/security vulnerability associated with version 2.6.1 (only bug-fix text appeared in the retrieved snippet). [4] D) androidx.sqlite 2.4.0 In the sources retrieved for the SQLite 2.4.0 release notes, I did not find an explicit CVE/security vulnerability associated with version 2.4.0 (the retrieved snippet discussed bug fixes and a change-log, without mentioning CVEs). [5][6] Recommendation (based on the explicit evidence found): - For androidx.glance, upgrade to 1.1.1+ to address the protobuf vulnerability risk referenced as CVE-2024-7254 in the official release notes. [1][2] Note: To produce a fully complete “all CVEs that affect these artifacts/versions” list, I would normally also cross-check AndroidX/security advisory databases and/or dependency-advisory feeds for each specific artifact (and its sub-artifacts). If you share your exact Gradle coordinates for each library (some artifacts—especially Room/SQLite—have multiple modules), I can narrow the search to the correct components and try again. Citations:
Upgrade The resolved dependency lock file includes The remaining dependencies align with PR objectives:
All other versions are stable and compatible with the existing Compose BOM (2025.12.01) and Koin BOM (4.1.1). 🤖 Prompt for AI Agents |
||
| androidx.core:core-splashscreen:1.2.0 | ||
| androidx.core:core-viewtree:1.0.0 | ||
| androidx.core:core:1.17.0 | ||
|
|
@@ -152,6 +153,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 | ||
|
|
@@ -197,16 +203,21 @@ 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 | ||
| 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 | ||
|
|
@@ -216,6 +227,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 | ||
|
|
@@ -292,6 +305,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 | ||
|
|
@@ -362,6 +379,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 | ||
|
|
@@ -429,16 +447,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 | ||
|
|
@@ -448,32 +466,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 | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -51,6 +51,14 @@ | |
|
|
||
| <category android:name="android.intent.category.LAUNCHER" /> | ||
| </intent-filter> | ||
| <intent-filter> | ||
| <action android:name="android.intent.action.VIEW" /> | ||
|
|
||
| <category android:name="android.intent.category.DEFAULT" /> | ||
| <category android:name="android.intent.category.BROWSABLE" /> | ||
|
|
||
| <data android:scheme="mifospay" /> | ||
| </intent-filter> | ||
|
Comment on lines
+54
to
+61
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔒 Security & Privacy | 🟠 Major 🧩 Analysis chain🏁 Script executed: # First, locate and examine the AndroidManifest.xml file
find . -name "AndroidManifest.xml" -type fRepository: openMF/mifos-pay Length of output: 1748 🏁 Script executed: # Search for all occurrences of "mifospay" in the codebase to understand actual usage
rg "mifospay" --type kotlin --type java --type xml -iRepository: openMF/mifos-pay Length of output: 154 🏁 Script executed: # Look for intent-filter and deep-link configurations in the Android manifest
cat cmp-android/src/main/AndroidManifest.xml | head -100Repository: openMF/mifos-pay Length of output: 3933 🏁 Script executed: # Search for "mifospay" without type restrictions to find all usages
rg "mifospay" -i --no-headingRepository: openMF/mifos-pay Length of output: 154 🏁 Script executed: # Search for navigation patterns that might use the mifospay scheme
rg "navigate.*mifospay|mifospay.*navigate" -iRepository: openMF/mifos-pay Length of output: 154 🏁 Script executed: # Look for URI or Intent construction related to deep-links
rg "uri|intent|deeplink" cmp-android/src/main --type-listRepository: openMF/mifos-pay Length of output: 544 🏁 Script executed: # Search for "dashboard", "add", "expense" as potential hosts in navigation code
rg "dashboard|\"add\"|expense" cmp-android/src --type-list -iRepository: openMF/mifos-pay Length of output: 544 🏁 Script executed: # Simple search for mifospay in all files
rg "mifospay" .Repository: openMF/mifos-pay Length of output: 50373 🏁 Script executed: # List Kotlin and Java files in cmp-android to understand code structure
find cmp-android -name "*.kt" -o -name "*.java" | head -20Repository: openMF/mifos-pay Length of output: 824 🏁 Script executed: # Search for navigation patterns and deep-link URIs
rg "deeplink|DeepLink|NavDeepLink|navDeepLink" cmp-android --type-listRepository: openMF/mifos-pay Length of output: 544 🏁 Script executed: # Look for strings that might contain the scheme or hosts
rg "dashboard|add.*expense" cmp-android -iRepository: openMF/mifos-pay Length of output: 2024 🏁 Script executed: # Read the WidgetDeepLink.kt file to see all URI constants
cat cmp-android/src/main/kotlin/org/mifospay/widget/WidgetDeepLink.ktRepository: openMF/mifos-pay Length of output: 716 🏁 Script executed: # Search for any other deep-link URI patterns that might use mifospay scheme
rg "mifospay://" cmp-androidRepository: openMF/mifos-pay Length of output: 154 Restrict deep-link hosts to only those used by the widget. The manifest currently accepts any host under the Suggested hardening- <data android:scheme="mifospay" />
+ <data android:scheme="mifospay" android:host="dashboard" />
+ <data android:scheme="mifospay" android:host="add" />
+ <data android:scheme="mifospay" android:host="expense" />🤖 Prompt for AI Agents |
||
| </activity> | ||
|
|
||
| <meta-data | ||
|
|
@@ -67,6 +75,31 @@ | |
| android:resource="@xml/provider_paths" /> | ||
| </provider> | ||
|
|
||
| <provider | ||
| android:name="androidx.startup.InitializationProvider" | ||
| android:authorities="${applicationId}.androidx-startup" | ||
| android:exported="false" | ||
| tools:node="merge"> | ||
| <meta-data | ||
| android:name="androidx.work.WorkManagerInitializer" | ||
| android:value="androidx.startup" | ||
| tools:node="remove" /> | ||
| </provider> | ||
|
|
||
|
|
||
| <receiver | ||
| android:name=".widget.FinanceWidgetReceiver" | ||
| android:exported="true"> | ||
| <intent-filter> | ||
| <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> | ||
| </intent-filter> | ||
| <meta-data | ||
| android:name="android.appwidget.provider" | ||
| android:resource="@xml/finance_widget_info" /> | ||
| </receiver> | ||
|
|
||
|
|
||
|
|
||
| <!-- Disable collection of AD_ID for all build variants --> | ||
| <meta-data | ||
| android:name="google_analytics_adid_collection_enabled" | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -12,30 +12,53 @@ package org.mifospay | |
| import android.app.Application | ||
| import androidx.appcompat.app.AppCompatDelegate | ||
| import androidx.core.os.LocaleListCompat | ||
| import androidx.work.Configuration | ||
| import androidx.work.OneTimeWorkRequestBuilder | ||
| import androidx.work.WorkManager | ||
| import kotlinx.coroutines.flow.first | ||
| import kotlinx.coroutines.runBlocking | ||
| import org.koin.android.ext.android.inject | ||
| import org.koin.android.ext.koin.androidContext | ||
| import org.koin.android.ext.koin.androidLogger | ||
| import org.koin.androidx.workmanager.factory.KoinWorkerFactory | ||
| import org.koin.androidx.workmanager.koin.workManagerFactory | ||
| import org.koin.core.context.GlobalContext.startKoin | ||
| import org.mifospay.core.data.repository.WidgetManagerRepository | ||
| import org.mifospay.core.datastore.UserPreferencesRepository | ||
| import org.mifospay.shared.di.KoinModules | ||
| import org.mifospay.widget.WidgetRefreshWorker | ||
| import org.mifospay.widget.androidWidgetModule | ||
|
|
||
| class MifosPayApp : Application() { | ||
| class MifosPayApp : Application(), Configuration.Provider { | ||
| private val userDataRepository: UserPreferencesRepository by inject() | ||
| private val widgetManager: WidgetManagerRepository by inject() | ||
|
|
||
| override fun onCreate() { | ||
| super.onCreate() | ||
|
|
||
| startKoin { | ||
| androidContext(this@MifosPayApp) | ||
| androidLogger() | ||
| modules(KoinModules.allModules) | ||
| workManagerFactory() | ||
| modules(KoinModules.allModules + androidWidgetModule) | ||
| } | ||
|
|
||
| widgetManager.schedule() | ||
|
|
||
| WorkManager.getInstance(this) | ||
| .enqueue( | ||
| OneTimeWorkRequestBuilder<WidgetRefreshWorker>() | ||
| .build(), | ||
| ) | ||
|
Comment on lines
+48
to
+52
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🚀 Performance & Scalability | 🟠 Major 🧩 Analysis chain🏁 Script executed: cat -n cmp-android/src/main/kotlin/org/mifospay/MifosPayApp.kt | head -60Repository: openMF/mifos-pay Length of output: 2677 🏁 Script executed: # Check for any imports related to WorkManager
grep -n "import.*work\|WorkManager\|ExistingWorkPolicy" cmp-android/src/main/kotlin/org/mifospay/MifosPayApp.ktRepository: openMF/mifos-pay Length of output: 449 🏁 Script executed: # Search for other uses of enqueueUniqueWork in the codebase to see if this pattern is used elsewhere
rg "enqueueUniqueWork" cmp-android/ --type kotlinRepository: openMF/mifos-pay Length of output: 154 🏁 Script executed: # Check what widgetManager.schedule() does
rg "fun schedule\|\.schedule\(\)" cmp-android/src/main/kotlin/org/mifospay/core/data/repository/ --type kotlin -A 5Repository: openMF/mifos-pay Length of output: 257 🌐 Web query:
💡 Result: Using Citations:
🏁 Script executed: # Check if there are any other WorkManager enqueue calls in the codebase
rg "\.enqueue\(|\.enqueueUniqueWork\(" cmp-android/ --type kotlin -B 2 -A 2Repository: openMF/mifos-pay Length of output: 590 Use
Suggested fix+import androidx.work.ExistingWorkPolicy
...
WorkManager.getInstance(this)
- .enqueue(
+ .enqueueUniqueWork(
+ "mifospay_widget_refresh_startup",
+ ExistingWorkPolicy.KEEP,
OneTimeWorkRequestBuilder<WidgetRefreshWorker>()
.build(),
)🤖 Prompt for AI Agents |
||
|
|
||
| restoreSavedLanguage() | ||
| } | ||
|
|
||
| override val workManagerConfiguration: Configuration | ||
| get() = Configuration.Builder() | ||
| .setWorkerFactory(KoinWorkerFactory()) | ||
| .build() | ||
|
|
||
| private fun restoreSavedLanguage() { | ||
| runBlocking { | ||
| val language = userDataRepository.language.first() | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +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 | ||
|
|
||
| import org.koin.dsl.module | ||
| import org.mifospay.core.data.util.WidgetSyncService | ||
|
|
||
| val androidWidgetModule = module { | ||
|
|
||
| single<WidgetSyncService> { | ||
| AndroidWidgetSyncService(context = get(), widgetDataProvider = get()) | ||
| } | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
📐 Maintainability & Code Quality | 🟠 Major
🧩 Analysis chain
🏁 Script executed:
Repository: openMF/mifos-pay
Length of output: 185
🏁 Script executed:
# Get file size and check specific lines wc -l cmp-android/build.gradle.ktsRepository: openMF/mifos-pay
Length of output: 187
🏁 Script executed:
Repository: openMF/mifos-pay
Length of output: 1334
🏁 Script executed:
Repository: openMF/mifos-pay
Length of output: 234
🏁 Script executed:
Repository: openMF/mifos-pay
Length of output: 631
🏁 Script executed:
# Examine the version catalog cat gradle/libs.versions.tomlRepository: openMF/mifos-pay
Length of output: 29711
🏁 Script executed:
Repository: openMF/mifos-pay
Length of output: 2077
Remove the hardcoded
koin-androidduplicate—it conflicts with the catalog version.Lines 135-136 redeclare
io.insert-koin:koin-android:3.5.6which conflicts with the catalog-managedlibs.koin.android(version 4.1.1, declared at line 114). Remove the hardcoded declarations and add missing entries (Glance, WorkManager,koin-androidx-workmanager) to the version catalog instead to maintain a single source of truth.🤖 Prompt for AI Agents