fix: API endpoint (#2733)

* MM-102 KMP dependencies setup (#2729)

* fix: API endpoint

---------

Co-authored-by: Sk Niyaj Ali <skniyajali0@gmail.com>
Co-authored-by: Pronay Sarker <pronaycoding@gmail.com>
This commit is contained in:
Nagarjuna 2025-01-10 00:16:04 +05:30 committed by GitHub
parent efb38f5263
commit d3d673ffda
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
45 changed files with 1619 additions and 359 deletions

View File

@ -2,6 +2,9 @@ name: Workflow for master/development branches
on:
pull_request:
branches:
- 'development'
- 'master'
push:
branches:
- 'development'

105
.github/workflows/pr-check.yml vendored Normal file
View File

@ -0,0 +1,105 @@
name: Workflow for master/development branches
on:
pull_request:
branches:
- 'kmp-impl'
push:
branches:
- 'kmp-impl'
concurrency:
group: build-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
pull-requests: write
jobs:
setup:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- uses: gradle/actions/setup-gradle@v4
- name: Cache Gradle and build outputs
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
build
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: ${{ runner.os }}-gradle-
checks:
needs: setup
runs-on: ubuntu-latest
strategy:
matrix:
check: [ build_logic, spotless, detekt ]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Run ${{ matrix.check }}
id: run_check
run: |
if [ "${{ matrix.check }}" = "build_logic" ]; then
./gradlew check -p build-logic
elif [ "${{ matrix.check }}" = "spotless" ]; then
./gradlew spotlessCheck --no-configuration-cache --no-daemon
elif [ "${{ matrix.check }}" = "detekt" ]; then
./gradlew detekt
fi
- name: Upload Detekt Reports
if: ${{ matrix.check == 'detekt' && steps.run_check.outcome == 'success' }}
uses: actions/upload-artifact@v4
with:
name: detekt-reports
path: |
**/build/reports/detekt/detekt.md
dependency_guard:
needs: setup
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Check Dependency Guard
id: dependencyguard_verify
continue-on-error: true
run: ./gradlew dependencyGuard
- name: Prevent updating Dependency Guard baselines if this is a fork
id: checkfork_dependencyguard
if: steps.dependencyguard_verify.outcome == 'failure' && github.event.pull_request.head.repo.full_name != github.repository
run: |
echo "::error::Dependency Guard failed, please update baselines with: ./gradlew dependencyGuardBaseline" && exit 1
# Runs if previous job failed
- name: Generate new Dependency Guard baselines if verification failed and it's a PR
id: dependencyguard_baseline
if: steps.dependencyguard_verify.outcome == 'failure' && github.event_name == 'pull_request'
run: |
./gradlew dependencyGuardBaseline
- name: Push new Dependency Guard baselines if available
uses: stefanzweifel/git-auto-commit-action@v5
if: steps.dependencyguard_baseline.outcome == 'success'
with:
file_pattern: '**/dependencies/*.txt'
disable_globbing: true
commit_message: "🤖 Updates baselines for Dependency Guard"

View File

@ -7,15 +7,15 @@
*
* See https://github.com/openMF/mobile-mobile/blob/master/LICENSE.md
*/
import org.mifos.mobile.MifosBuildType
import org.mifos.mobile.dynamicVersion
plugins {
alias(libs.plugins.mifos.android.application)
alias(libs.plugins.mifos.android.application.compose)
alias(libs.plugins.mifos.android.application.flavors)
alias(libs.plugins.mifos.android.hilt)
alias(libs.plugins.mifos.android.application.firebase)
id("com.google.android.gms.oss-licenses-plugin")
alias(libs.plugins.roborazzi)
}
android {
@ -45,11 +45,16 @@ android {
}
buildTypes {
debug {
applicationIdSuffix = MifosBuildType.DEBUG.applicationIdSuffix
}
release {
isDebuggable = false
isMinifyEnabled = true
isShrinkResources = true
signingConfig = signingConfigs.getByName("release")
applicationIdSuffix = MifosBuildType.RELEASE.applicationIdSuffix
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}
@ -61,10 +66,10 @@ android {
}
dependencyGuard {
configuration("releaseRuntimeClasspath"){
modules = true
tree = true
}
configuration("demoDebugRuntimeClasspath")
configuration("demoReleaseRuntimeClasspath")
configuration("prodDebugRuntimeClasspath")
configuration("prodReleaseRuntimeClasspath")
}
dependencies {

View File

@ -0,0 +1,258 @@
androidx.activity:activity-compose:1.9.3
androidx.activity:activity-ktx:1.9.3
androidx.activity:activity:1.9.3
androidx.annotation:annotation-experimental:1.4.1
androidx.annotation:annotation-jvm:1.8.1
androidx.annotation:annotation:1.8.1
androidx.appcompat:appcompat-resources:1.7.0
androidx.appcompat:appcompat:1.7.0
androidx.arch.core:core-common:2.2.0
androidx.arch.core:core-runtime:2.2.0
androidx.autofill:autofill:1.0.0
androidx.camera:camera-camera2:1.4.1
androidx.camera:camera-core:1.4.1
androidx.camera:camera-lifecycle:1.4.1
androidx.camera:camera-video:1.4.1
androidx.camera:camera-view:1.4.1
androidx.collection:collection-jvm:1.4.4
androidx.collection:collection-ktx:1.4.4
androidx.collection:collection:1.4.4
androidx.compose.animation:animation-android:1.7.6
androidx.compose.animation:animation-core-android:1.7.6
androidx.compose.animation:animation-core:1.7.6
androidx.compose.animation:animation:1.7.6
androidx.compose.foundation:foundation-android:1.7.6
androidx.compose.foundation:foundation-layout-android:1.7.6
androidx.compose.foundation:foundation-layout:1.7.6
androidx.compose.foundation:foundation:1.7.6
androidx.compose.material3:material3-android:1.3.1
androidx.compose.material3:material3:1.3.1
androidx.compose.material:material-android:1.7.6
androidx.compose.material:material-icons-core-android:1.7.6
androidx.compose.material:material-icons-core:1.7.6
androidx.compose.material:material-icons-extended-android:1.7.6
androidx.compose.material:material-icons-extended:1.7.6
androidx.compose.material:material-ripple-android:1.7.6
androidx.compose.material:material-ripple:1.7.6
androidx.compose.material:material:1.7.6
androidx.compose.runtime:runtime-android:1.7.6
androidx.compose.runtime:runtime-saveable-android:1.7.6
androidx.compose.runtime:runtime-saveable:1.7.6
androidx.compose.runtime:runtime:1.7.6
androidx.compose.ui:ui-android:1.7.6
androidx.compose.ui:ui-geometry-android:1.7.6
androidx.compose.ui:ui-geometry:1.7.6
androidx.compose.ui:ui-graphics-android:1.7.6
androidx.compose.ui:ui-graphics:1.7.6
androidx.compose.ui:ui-test-manifest:1.7.6
androidx.compose.ui:ui-text-android:1.7.6
androidx.compose.ui:ui-text:1.7.6
androidx.compose.ui:ui-tooling-android:1.7.6
androidx.compose.ui:ui-tooling-data-android:1.7.6
androidx.compose.ui:ui-tooling-data:1.7.6
androidx.compose.ui:ui-tooling-preview-android:1.7.6
androidx.compose.ui:ui-tooling-preview:1.7.6
androidx.compose.ui:ui-tooling:1.7.6
androidx.compose.ui:ui-unit-android:1.7.6
androidx.compose.ui:ui-unit:1.7.6
androidx.compose.ui:ui-util-android:1.7.6
androidx.compose.ui:ui-util:1.7.6
androidx.compose.ui:ui:1.7.6
androidx.compose:compose-bom:2024.12.01
androidx.concurrent:concurrent-futures-ktx:1.1.0
androidx.concurrent:concurrent-futures:1.1.0
androidx.core:core-ktx:1.15.0
androidx.core:core-splashscreen:1.0.1
androidx.core:core:1.15.0
androidx.cursoradapter:cursoradapter:1.0.0
androidx.customview:customview-poolingcontainer:1.0.0
androidx.customview:customview:1.0.0
androidx.databinding:viewbinding:7.4.2
androidx.documentfile:documentfile:1.0.0
androidx.drawerlayout:drawerlayout:1.0.0
androidx.emoji2:emoji2-views-helper:1.3.0
androidx.emoji2:emoji2:1.3.0
androidx.exifinterface:exifinterface:1.3.2
androidx.fragment:fragment-ktx:1.8.5
androidx.fragment:fragment:1.8.5
androidx.graphics:graphics-path:1.0.1
androidx.hilt:hilt-navigation-compose:1.2.0
androidx.hilt:hilt-navigation:1.2.0
androidx.interpolator:interpolator:1.0.0
androidx.legacy:legacy-support-core-utils:1.0.0
androidx.lifecycle:lifecycle-common-java8:2.8.7
androidx.lifecycle:lifecycle-common-jvm:2.8.7
androidx.lifecycle:lifecycle-common:2.8.7
androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7
androidx.lifecycle:lifecycle-livedata-core:2.8.7
androidx.lifecycle:lifecycle-livedata:2.8.7
androidx.lifecycle:lifecycle-process:2.8.7
androidx.lifecycle:lifecycle-runtime-android:2.8.7
androidx.lifecycle:lifecycle-runtime-compose-android:2.8.7
androidx.lifecycle:lifecycle-runtime-compose:2.8.7
androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.7
androidx.lifecycle:lifecycle-runtime-ktx:2.8.7
androidx.lifecycle:lifecycle-runtime:2.8.7
androidx.lifecycle:lifecycle-viewmodel-android:2.8.7
androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.7
androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7
androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7
androidx.lifecycle:lifecycle-viewmodel:2.8.7
androidx.loader:loader:1.0.0
androidx.localbroadcastmanager:localbroadcastmanager:1.0.0
androidx.metrics:metrics-performance:1.0.0-beta01
androidx.multidex:multidex:2.0.1
androidx.navigation:navigation-common-ktx:2.8.5
androidx.navigation:navigation-common:2.8.5
androidx.navigation:navigation-compose:2.8.5
androidx.navigation:navigation-runtime-ktx:2.8.5
androidx.navigation:navigation-runtime:2.8.5
androidx.print:print:1.0.0
androidx.privacysandbox.ads:ads-adservices-java:1.0.0-beta05
androidx.privacysandbox.ads:ads-adservices:1.0.0-beta05
androidx.profileinstaller:profileinstaller:1.4.1
androidx.resourceinspection:resourceinspection-annotation:1.0.1
androidx.room:room-common:2.6.1
androidx.room:room-ktx:2.6.1
androidx.room:room-runtime:2.6.1
androidx.savedstate:savedstate-ktx:1.2.1
androidx.savedstate:savedstate:1.2.1
androidx.sqlite:sqlite-framework:2.4.0
androidx.sqlite:sqlite:2.4.0
androidx.startup:startup-runtime:1.1.1
androidx.tracing:tracing-ktx:1.2.0
androidx.tracing:tracing:1.2.0
androidx.vectordrawable:vectordrawable-animated:1.1.0
androidx.vectordrawable:vectordrawable:1.1.0
androidx.versionedparcelable:versionedparcelable:1.1.1
androidx.viewpager:viewpager:1.0.0
app.cash.turbine:turbine-jvm:1.1.0
app.cash.turbine:turbine:1.1.0
co.touchlab:stately-concurrency-jvm:2.1.0
co.touchlab:stately-concurrency:2.1.0
co.touchlab:stately-concurrent-collections-jvm:2.1.0
co.touchlab:stately-concurrent-collections:2.1.0
co.touchlab:stately-strict-jvm:2.1.0
co.touchlab:stately-strict:2.1.0
com.google.accompanist:accompanist-pager:0.34.0
com.google.accompanist:accompanist-permissions:0.34.0
com.google.android.gms:play-services-ads-identifier:18.0.0
com.google.android.gms:play-services-base:18.5.0
com.google.android.gms:play-services-basement:18.4.0
com.google.android.gms:play-services-maps:18.2.0
com.google.android.gms:play-services-measurement-api:22.1.2
com.google.android.gms:play-services-measurement-base:22.1.2
com.google.android.gms:play-services-measurement-impl:22.1.2
com.google.android.gms:play-services-measurement-sdk-api:22.1.2
com.google.android.gms:play-services-measurement-sdk:22.1.2
com.google.android.gms:play-services-measurement:22.1.2
com.google.android.gms:play-services-oss-licenses:17.1.0
com.google.android.gms:play-services-stats:17.0.2
com.google.android.gms:play-services-tasks:18.2.0
com.google.auto.value:auto-value-annotations:1.6.3
com.google.code.findbugs:jsr305:3.0.2
com.google.code.gson:gson:2.10.1
com.google.dagger:dagger-lint-aar:2.54
com.google.dagger:dagger:2.54
com.google.dagger:hilt-android:2.54
com.google.dagger:hilt-core:2.54
com.google.errorprone:error_prone_annotations:2.26.0
com.google.firebase:firebase-analytics-ktx:22.1.2
com.google.firebase:firebase-analytics:22.1.2
com.google.firebase:firebase-annotations:16.2.0
com.google.firebase:firebase-bom:33.7.0
com.google.firebase:firebase-common-ktx:21.0.0
com.google.firebase:firebase-common:21.0.0
com.google.firebase:firebase-components:18.0.0
com.google.firebase:firebase-installations-interop:17.1.1
com.google.firebase:firebase-installations:18.0.0
com.google.firebase:firebase-measurement-connector:19.0.0
com.google.guava:failureaccess:1.0.1
com.google.guava:guava:31.1-android
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.j2objc:j2objc-annotations:1.3
com.google.maps.android:maps-compose:4.4.1
com.google.maps.android:maps-ktx:5.0.0
com.google.zxing:core:3.5.3
com.squareup.okhttp3:logging-interceptor:4.12.0
com.squareup.okhttp3:okhttp:4.12.0
com.squareup.okio:okio-jvm:3.6.0
com.squareup.okio:okio:3.6.0
com.squareup.retrofit2:adapter-rxjava2:2.11.0
com.squareup.retrofit2:converter-gson:2.11.0
com.squareup.retrofit2:retrofit:2.11.0
dev.chrisbanes.snapper:snapper:0.2.2
io.github.mr0xf00:easycrop:0.1.1
io.insert-koin:koin-android:4.0.1-RC1
io.insert-koin:koin-androidx-compose:4.0.1-RC1
io.insert-koin:koin-compose-jvm:4.0.1-RC1
io.insert-koin:koin-compose-viewmodel-jvm:4.0.1-RC1
io.insert-koin:koin-compose-viewmodel:4.0.1-RC1
io.insert-koin:koin-compose:4.0.1-RC1
io.insert-koin:koin-core-jvm:4.0.1-RC1
io.insert-koin:koin-core-viewmodel-jvm:4.0.1-RC1
io.insert-koin:koin-core-viewmodel:4.0.1-RC1
io.insert-koin:koin-core:4.0.1-RC1
io.michaelrocks:libphonenumber-android:8.13.35
io.reactivex.rxjava2:rxjava:2.2.21
jakarta.inject:jakarta.inject-api:2.0.1
javax.inject:javax.inject:1
net.bytebuddy:byte-buddy-agent:1.14.8
net.bytebuddy:byte-buddy:1.14.8
org.checkerframework:checker-qual:3.12.0
org.jetbrains.androidx.core:core-bundle-android-debug:1.0.1
org.jetbrains.androidx.core:core-bundle:1.0.1
org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.3
org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.3-rc01
org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.3-rc01
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.3
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.3
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.3
org.jetbrains.androidx.savedstate:savedstate:1.2.2
org.jetbrains.compose.animation:animation-core:1.7.0-rc01
org.jetbrains.compose.animation:animation:1.7.0-rc01
org.jetbrains.compose.annotation-internal:annotation:1.7.0-rc01
org.jetbrains.compose.collection-internal:collection:1.7.0-rc01
org.jetbrains.compose.foundation:foundation-layout:1.7.0-rc01
org.jetbrains.compose.foundation:foundation:1.7.0-rc01
org.jetbrains.compose.material3:material3:1.7.0-rc01
org.jetbrains.compose.material:material-icons-core:1.7.0-rc01
org.jetbrains.compose.material:material-ripple:1.7.0-rc01
org.jetbrains.compose.material:material:1.7.0-rc01
org.jetbrains.compose.runtime:runtime-saveable:1.7.0-rc01
org.jetbrains.compose.runtime:runtime:1.7.0-rc01
org.jetbrains.compose.ui:ui-geometry:1.7.0-rc01
org.jetbrains.compose.ui:ui-graphics:1.7.0-rc01
org.jetbrains.compose.ui:ui-text:1.7.0-rc01
org.jetbrains.compose.ui:ui-tooling-preview:1.7.0-rc01
org.jetbrains.compose.ui:ui-unit:1.7.0-rc01
org.jetbrains.compose.ui:ui-util:1.7.0-rc01
org.jetbrains.compose.ui:ui:1.7.0-rc01
org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.0
org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.0
org.jetbrains.kotlin:kotlin-stdlib-common:2.1.0
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10
org.jetbrains.kotlin:kotlin-stdlib:2.1.0
org.jetbrains.kotlinx:atomicfu-jvm:0.23.2
org.jetbrains.kotlinx:atomicfu:0.23.2
org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8
org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8
org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.1
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3
org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3
org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3
org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3
org.jetbrains:annotations:23.0.0
org.jspecify:jspecify:1.0.0
org.mockito:mockito-core:5.6.0
org.objenesis:objenesis:3.3
org.reactivestreams:reactive-streams:1.0.4

View File

@ -0,0 +1,253 @@
androidx.activity:activity-compose:1.9.3
androidx.activity:activity-ktx:1.9.3
androidx.activity:activity:1.9.3
androidx.annotation:annotation-experimental:1.4.1
androidx.annotation:annotation-jvm:1.8.1
androidx.annotation:annotation:1.8.1
androidx.appcompat:appcompat-resources:1.7.0
androidx.appcompat:appcompat:1.7.0
androidx.arch.core:core-common:2.2.0
androidx.arch.core:core-runtime:2.2.0
androidx.autofill:autofill:1.0.0
androidx.camera:camera-camera2:1.4.1
androidx.camera:camera-core:1.4.1
androidx.camera:camera-lifecycle:1.4.1
androidx.camera:camera-video:1.4.1
androidx.camera:camera-view:1.4.1
androidx.collection:collection-jvm:1.4.4
androidx.collection:collection-ktx:1.4.4
androidx.collection:collection:1.4.4
androidx.compose.animation:animation-android:1.7.6
androidx.compose.animation:animation-core-android:1.7.6
androidx.compose.animation:animation-core:1.7.6
androidx.compose.animation:animation:1.7.6
androidx.compose.foundation:foundation-android:1.7.6
androidx.compose.foundation:foundation-layout-android:1.7.6
androidx.compose.foundation:foundation-layout:1.7.6
androidx.compose.foundation:foundation:1.7.6
androidx.compose.material3:material3-android:1.3.1
androidx.compose.material3:material3:1.3.1
androidx.compose.material:material-android:1.7.6
androidx.compose.material:material-icons-core-android:1.7.6
androidx.compose.material:material-icons-core:1.7.6
androidx.compose.material:material-icons-extended-android:1.7.6
androidx.compose.material:material-icons-extended:1.7.6
androidx.compose.material:material-ripple-android:1.7.6
androidx.compose.material:material-ripple:1.7.6
androidx.compose.material:material:1.7.6
androidx.compose.runtime:runtime-android:1.7.6
androidx.compose.runtime:runtime-saveable-android:1.7.6
androidx.compose.runtime:runtime-saveable:1.7.6
androidx.compose.runtime:runtime:1.7.6
androidx.compose.ui:ui-android:1.7.6
androidx.compose.ui:ui-geometry-android:1.7.6
androidx.compose.ui:ui-geometry:1.7.6
androidx.compose.ui:ui-graphics-android:1.7.6
androidx.compose.ui:ui-graphics:1.7.6
androidx.compose.ui:ui-text-android:1.7.6
androidx.compose.ui:ui-text:1.7.6
androidx.compose.ui:ui-tooling-preview-android:1.7.6
androidx.compose.ui:ui-tooling-preview:1.7.6
androidx.compose.ui:ui-unit-android:1.7.6
androidx.compose.ui:ui-unit:1.7.6
androidx.compose.ui:ui-util-android:1.7.6
androidx.compose.ui:ui-util:1.7.6
androidx.compose.ui:ui:1.7.6
androidx.compose:compose-bom:2024.12.01
androidx.concurrent:concurrent-futures-ktx:1.1.0
androidx.concurrent:concurrent-futures:1.1.0
androidx.core:core-ktx:1.15.0
androidx.core:core-splashscreen:1.0.1
androidx.core:core:1.15.0
androidx.cursoradapter:cursoradapter:1.0.0
androidx.customview:customview-poolingcontainer:1.0.0
androidx.customview:customview:1.0.0
androidx.databinding:viewbinding:7.4.2
androidx.documentfile:documentfile:1.0.0
androidx.drawerlayout:drawerlayout:1.0.0
androidx.emoji2:emoji2-views-helper:1.3.0
androidx.emoji2:emoji2:1.3.0
androidx.exifinterface:exifinterface:1.3.2
androidx.fragment:fragment-ktx:1.8.5
androidx.fragment:fragment:1.8.5
androidx.graphics:graphics-path:1.0.1
androidx.hilt:hilt-navigation-compose:1.2.0
androidx.hilt:hilt-navigation:1.2.0
androidx.interpolator:interpolator:1.0.0
androidx.legacy:legacy-support-core-utils:1.0.0
androidx.lifecycle:lifecycle-common-java8:2.8.7
androidx.lifecycle:lifecycle-common-jvm:2.8.7
androidx.lifecycle:lifecycle-common:2.8.7
androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7
androidx.lifecycle:lifecycle-livedata-core:2.8.7
androidx.lifecycle:lifecycle-livedata:2.8.7
androidx.lifecycle:lifecycle-process:2.8.7
androidx.lifecycle:lifecycle-runtime-android:2.8.7
androidx.lifecycle:lifecycle-runtime-compose-android:2.8.7
androidx.lifecycle:lifecycle-runtime-compose:2.8.7
androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.7
androidx.lifecycle:lifecycle-runtime-ktx:2.8.7
androidx.lifecycle:lifecycle-runtime:2.8.7
androidx.lifecycle:lifecycle-viewmodel-android:2.8.7
androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.7
androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7
androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7
androidx.lifecycle:lifecycle-viewmodel:2.8.7
androidx.loader:loader:1.0.0
androidx.localbroadcastmanager:localbroadcastmanager:1.0.0
androidx.metrics:metrics-performance:1.0.0-beta01
androidx.multidex:multidex:2.0.1
androidx.navigation:navigation-common-ktx:2.8.5
androidx.navigation:navigation-common:2.8.5
androidx.navigation:navigation-compose:2.8.5
androidx.navigation:navigation-runtime-ktx:2.8.5
androidx.navigation:navigation-runtime:2.8.5
androidx.print:print:1.0.0
androidx.privacysandbox.ads:ads-adservices-java:1.0.0-beta05
androidx.privacysandbox.ads:ads-adservices:1.0.0-beta05
androidx.profileinstaller:profileinstaller:1.4.1
androidx.resourceinspection:resourceinspection-annotation:1.0.1
androidx.room:room-common:2.6.1
androidx.room:room-ktx:2.6.1
androidx.room:room-runtime:2.6.1
androidx.savedstate:savedstate-ktx:1.2.1
androidx.savedstate:savedstate:1.2.1
androidx.sqlite:sqlite-framework:2.4.0
androidx.sqlite:sqlite:2.4.0
androidx.startup:startup-runtime:1.1.1
androidx.tracing:tracing-ktx:1.2.0
androidx.tracing:tracing:1.2.0
androidx.vectordrawable:vectordrawable-animated:1.1.0
androidx.vectordrawable:vectordrawable:1.1.0
androidx.versionedparcelable:versionedparcelable:1.1.1
androidx.viewpager:viewpager:1.0.0
app.cash.turbine:turbine-jvm:1.1.0
app.cash.turbine:turbine:1.1.0
co.touchlab:stately-concurrency-jvm:2.1.0
co.touchlab:stately-concurrency:2.1.0
co.touchlab:stately-concurrent-collections-jvm:2.1.0
co.touchlab:stately-concurrent-collections:2.1.0
co.touchlab:stately-strict-jvm:2.1.0
co.touchlab:stately-strict:2.1.0
com.google.accompanist:accompanist-pager:0.34.0
com.google.accompanist:accompanist-permissions:0.34.0
com.google.android.gms:play-services-ads-identifier:18.0.0
com.google.android.gms:play-services-base:18.5.0
com.google.android.gms:play-services-basement:18.4.0
com.google.android.gms:play-services-maps:18.2.0
com.google.android.gms:play-services-measurement-api:22.1.2
com.google.android.gms:play-services-measurement-base:22.1.2
com.google.android.gms:play-services-measurement-impl:22.1.2
com.google.android.gms:play-services-measurement-sdk-api:22.1.2
com.google.android.gms:play-services-measurement-sdk:22.1.2
com.google.android.gms:play-services-measurement:22.1.2
com.google.android.gms:play-services-oss-licenses:17.1.0
com.google.android.gms:play-services-stats:17.0.2
com.google.android.gms:play-services-tasks:18.2.0
com.google.auto.value:auto-value-annotations:1.6.3
com.google.code.findbugs:jsr305:3.0.2
com.google.code.gson:gson:2.10.1
com.google.dagger:dagger-lint-aar:2.54
com.google.dagger:dagger:2.54
com.google.dagger:hilt-android:2.54
com.google.dagger:hilt-core:2.54
com.google.errorprone:error_prone_annotations:2.26.0
com.google.firebase:firebase-analytics-ktx:22.1.2
com.google.firebase:firebase-analytics:22.1.2
com.google.firebase:firebase-annotations:16.2.0
com.google.firebase:firebase-bom:33.7.0
com.google.firebase:firebase-common-ktx:21.0.0
com.google.firebase:firebase-common:21.0.0
com.google.firebase:firebase-components:18.0.0
com.google.firebase:firebase-installations-interop:17.1.1
com.google.firebase:firebase-installations:18.0.0
com.google.firebase:firebase-measurement-connector:19.0.0
com.google.guava:failureaccess:1.0.1
com.google.guava:guava:31.1-android
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.j2objc:j2objc-annotations:1.3
com.google.maps.android:maps-compose:4.4.1
com.google.maps.android:maps-ktx:5.0.0
com.google.zxing:core:3.5.3
com.squareup.okhttp3:logging-interceptor:4.12.0
com.squareup.okhttp3:okhttp:4.12.0
com.squareup.okio:okio-jvm:3.6.0
com.squareup.okio:okio:3.6.0
com.squareup.retrofit2:adapter-rxjava2:2.11.0
com.squareup.retrofit2:converter-gson:2.11.0
com.squareup.retrofit2:retrofit:2.11.0
dev.chrisbanes.snapper:snapper:0.2.2
io.github.mr0xf00:easycrop:0.1.1
io.insert-koin:koin-android:4.0.1-RC1
io.insert-koin:koin-androidx-compose:4.0.1-RC1
io.insert-koin:koin-compose-jvm:4.0.1-RC1
io.insert-koin:koin-compose-viewmodel-jvm:4.0.1-RC1
io.insert-koin:koin-compose-viewmodel:4.0.1-RC1
io.insert-koin:koin-compose:4.0.1-RC1
io.insert-koin:koin-core-jvm:4.0.1-RC1
io.insert-koin:koin-core-viewmodel-jvm:4.0.1-RC1
io.insert-koin:koin-core-viewmodel:4.0.1-RC1
io.insert-koin:koin-core:4.0.1-RC1
io.michaelrocks:libphonenumber-android:8.13.35
io.reactivex.rxjava2:rxjava:2.2.21
jakarta.inject:jakarta.inject-api:2.0.1
javax.inject:javax.inject:1
net.bytebuddy:byte-buddy-agent:1.14.8
net.bytebuddy:byte-buddy:1.14.8
org.checkerframework:checker-qual:3.12.0
org.jetbrains.androidx.core:core-bundle-android:1.0.1
org.jetbrains.androidx.core:core-bundle:1.0.1
org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.3
org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.3-rc01
org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.3-rc01
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.3
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.3
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.3
org.jetbrains.androidx.savedstate:savedstate:1.2.2
org.jetbrains.compose.animation:animation-core:1.7.0-rc01
org.jetbrains.compose.animation:animation:1.7.0-rc01
org.jetbrains.compose.annotation-internal:annotation:1.7.0-rc01
org.jetbrains.compose.collection-internal:collection:1.7.0-rc01
org.jetbrains.compose.foundation:foundation-layout:1.7.0-rc01
org.jetbrains.compose.foundation:foundation:1.7.0-rc01
org.jetbrains.compose.material3:material3:1.7.0-rc01
org.jetbrains.compose.material:material-icons-core:1.7.0-rc01
org.jetbrains.compose.material:material-ripple:1.7.0-rc01
org.jetbrains.compose.material:material:1.7.0-rc01
org.jetbrains.compose.runtime:runtime-saveable:1.7.0-rc01
org.jetbrains.compose.runtime:runtime:1.7.0-rc01
org.jetbrains.compose.ui:ui-geometry:1.7.0-rc01
org.jetbrains.compose.ui:ui-graphics:1.7.0-rc01
org.jetbrains.compose.ui:ui-text:1.7.0-rc01
org.jetbrains.compose.ui:ui-tooling-preview:1.7.0-rc01
org.jetbrains.compose.ui:ui-unit:1.7.0-rc01
org.jetbrains.compose.ui:ui-util:1.7.0-rc01
org.jetbrains.compose.ui:ui:1.7.0-rc01
org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.0
org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.0
org.jetbrains.kotlin:kotlin-stdlib-common:2.1.0
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10
org.jetbrains.kotlin:kotlin-stdlib:2.1.0
org.jetbrains.kotlinx:atomicfu-jvm:0.23.2
org.jetbrains.kotlinx:atomicfu:0.23.2
org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8
org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8
org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.1
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3
org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3
org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3
org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3
org.jetbrains:annotations:23.0.0
org.jspecify:jspecify:1.0.0
org.mockito:mockito-core:5.6.0
org.objenesis:objenesis:3.3
org.reactivestreams:reactive-streams:1.0.4

View File

@ -0,0 +1,258 @@
androidx.activity:activity-compose:1.9.3
androidx.activity:activity-ktx:1.9.3
androidx.activity:activity:1.9.3
androidx.annotation:annotation-experimental:1.4.1
androidx.annotation:annotation-jvm:1.8.1
androidx.annotation:annotation:1.8.1
androidx.appcompat:appcompat-resources:1.7.0
androidx.appcompat:appcompat:1.7.0
androidx.arch.core:core-common:2.2.0
androidx.arch.core:core-runtime:2.2.0
androidx.autofill:autofill:1.0.0
androidx.camera:camera-camera2:1.4.1
androidx.camera:camera-core:1.4.1
androidx.camera:camera-lifecycle:1.4.1
androidx.camera:camera-video:1.4.1
androidx.camera:camera-view:1.4.1
androidx.collection:collection-jvm:1.4.4
androidx.collection:collection-ktx:1.4.4
androidx.collection:collection:1.4.4
androidx.compose.animation:animation-android:1.7.6
androidx.compose.animation:animation-core-android:1.7.6
androidx.compose.animation:animation-core:1.7.6
androidx.compose.animation:animation:1.7.6
androidx.compose.foundation:foundation-android:1.7.6
androidx.compose.foundation:foundation-layout-android:1.7.6
androidx.compose.foundation:foundation-layout:1.7.6
androidx.compose.foundation:foundation:1.7.6
androidx.compose.material3:material3-android:1.3.1
androidx.compose.material3:material3:1.3.1
androidx.compose.material:material-android:1.7.6
androidx.compose.material:material-icons-core-android:1.7.6
androidx.compose.material:material-icons-core:1.7.6
androidx.compose.material:material-icons-extended-android:1.7.6
androidx.compose.material:material-icons-extended:1.7.6
androidx.compose.material:material-ripple-android:1.7.6
androidx.compose.material:material-ripple:1.7.6
androidx.compose.material:material:1.7.6
androidx.compose.runtime:runtime-android:1.7.6
androidx.compose.runtime:runtime-saveable-android:1.7.6
androidx.compose.runtime:runtime-saveable:1.7.6
androidx.compose.runtime:runtime:1.7.6
androidx.compose.ui:ui-android:1.7.6
androidx.compose.ui:ui-geometry-android:1.7.6
androidx.compose.ui:ui-geometry:1.7.6
androidx.compose.ui:ui-graphics-android:1.7.6
androidx.compose.ui:ui-graphics:1.7.6
androidx.compose.ui:ui-test-manifest:1.7.6
androidx.compose.ui:ui-text-android:1.7.6
androidx.compose.ui:ui-text:1.7.6
androidx.compose.ui:ui-tooling-android:1.7.6
androidx.compose.ui:ui-tooling-data-android:1.7.6
androidx.compose.ui:ui-tooling-data:1.7.6
androidx.compose.ui:ui-tooling-preview-android:1.7.6
androidx.compose.ui:ui-tooling-preview:1.7.6
androidx.compose.ui:ui-tooling:1.7.6
androidx.compose.ui:ui-unit-android:1.7.6
androidx.compose.ui:ui-unit:1.7.6
androidx.compose.ui:ui-util-android:1.7.6
androidx.compose.ui:ui-util:1.7.6
androidx.compose.ui:ui:1.7.6
androidx.compose:compose-bom:2024.12.01
androidx.concurrent:concurrent-futures-ktx:1.1.0
androidx.concurrent:concurrent-futures:1.1.0
androidx.core:core-ktx:1.15.0
androidx.core:core-splashscreen:1.0.1
androidx.core:core:1.15.0
androidx.cursoradapter:cursoradapter:1.0.0
androidx.customview:customview-poolingcontainer:1.0.0
androidx.customview:customview:1.0.0
androidx.databinding:viewbinding:7.4.2
androidx.documentfile:documentfile:1.0.0
androidx.drawerlayout:drawerlayout:1.0.0
androidx.emoji2:emoji2-views-helper:1.3.0
androidx.emoji2:emoji2:1.3.0
androidx.exifinterface:exifinterface:1.3.2
androidx.fragment:fragment-ktx:1.8.5
androidx.fragment:fragment:1.8.5
androidx.graphics:graphics-path:1.0.1
androidx.hilt:hilt-navigation-compose:1.2.0
androidx.hilt:hilt-navigation:1.2.0
androidx.interpolator:interpolator:1.0.0
androidx.legacy:legacy-support-core-utils:1.0.0
androidx.lifecycle:lifecycle-common-java8:2.8.7
androidx.lifecycle:lifecycle-common-jvm:2.8.7
androidx.lifecycle:lifecycle-common:2.8.7
androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7
androidx.lifecycle:lifecycle-livedata-core:2.8.7
androidx.lifecycle:lifecycle-livedata:2.8.7
androidx.lifecycle:lifecycle-process:2.8.7
androidx.lifecycle:lifecycle-runtime-android:2.8.7
androidx.lifecycle:lifecycle-runtime-compose-android:2.8.7
androidx.lifecycle:lifecycle-runtime-compose:2.8.7
androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.7
androidx.lifecycle:lifecycle-runtime-ktx:2.8.7
androidx.lifecycle:lifecycle-runtime:2.8.7
androidx.lifecycle:lifecycle-viewmodel-android:2.8.7
androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.7
androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7
androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7
androidx.lifecycle:lifecycle-viewmodel:2.8.7
androidx.loader:loader:1.0.0
androidx.localbroadcastmanager:localbroadcastmanager:1.0.0
androidx.metrics:metrics-performance:1.0.0-beta01
androidx.multidex:multidex:2.0.1
androidx.navigation:navigation-common-ktx:2.8.5
androidx.navigation:navigation-common:2.8.5
androidx.navigation:navigation-compose:2.8.5
androidx.navigation:navigation-runtime-ktx:2.8.5
androidx.navigation:navigation-runtime:2.8.5
androidx.print:print:1.0.0
androidx.privacysandbox.ads:ads-adservices-java:1.0.0-beta05
androidx.privacysandbox.ads:ads-adservices:1.0.0-beta05
androidx.profileinstaller:profileinstaller:1.4.1
androidx.resourceinspection:resourceinspection-annotation:1.0.1
androidx.room:room-common:2.6.1
androidx.room:room-ktx:2.6.1
androidx.room:room-runtime:2.6.1
androidx.savedstate:savedstate-ktx:1.2.1
androidx.savedstate:savedstate:1.2.1
androidx.sqlite:sqlite-framework:2.4.0
androidx.sqlite:sqlite:2.4.0
androidx.startup:startup-runtime:1.1.1
androidx.tracing:tracing-ktx:1.2.0
androidx.tracing:tracing:1.2.0
androidx.vectordrawable:vectordrawable-animated:1.1.0
androidx.vectordrawable:vectordrawable:1.1.0
androidx.versionedparcelable:versionedparcelable:1.1.1
androidx.viewpager:viewpager:1.0.0
app.cash.turbine:turbine-jvm:1.1.0
app.cash.turbine:turbine:1.1.0
co.touchlab:stately-concurrency-jvm:2.1.0
co.touchlab:stately-concurrency:2.1.0
co.touchlab:stately-concurrent-collections-jvm:2.1.0
co.touchlab:stately-concurrent-collections:2.1.0
co.touchlab:stately-strict-jvm:2.1.0
co.touchlab:stately-strict:2.1.0
com.google.accompanist:accompanist-pager:0.34.0
com.google.accompanist:accompanist-permissions:0.34.0
com.google.android.gms:play-services-ads-identifier:18.0.0
com.google.android.gms:play-services-base:18.5.0
com.google.android.gms:play-services-basement:18.4.0
com.google.android.gms:play-services-maps:18.2.0
com.google.android.gms:play-services-measurement-api:22.1.2
com.google.android.gms:play-services-measurement-base:22.1.2
com.google.android.gms:play-services-measurement-impl:22.1.2
com.google.android.gms:play-services-measurement-sdk-api:22.1.2
com.google.android.gms:play-services-measurement-sdk:22.1.2
com.google.android.gms:play-services-measurement:22.1.2
com.google.android.gms:play-services-oss-licenses:17.1.0
com.google.android.gms:play-services-stats:17.0.2
com.google.android.gms:play-services-tasks:18.2.0
com.google.auto.value:auto-value-annotations:1.6.3
com.google.code.findbugs:jsr305:3.0.2
com.google.code.gson:gson:2.10.1
com.google.dagger:dagger-lint-aar:2.54
com.google.dagger:dagger:2.54
com.google.dagger:hilt-android:2.54
com.google.dagger:hilt-core:2.54
com.google.errorprone:error_prone_annotations:2.26.0
com.google.firebase:firebase-analytics-ktx:22.1.2
com.google.firebase:firebase-analytics:22.1.2
com.google.firebase:firebase-annotations:16.2.0
com.google.firebase:firebase-bom:33.7.0
com.google.firebase:firebase-common-ktx:21.0.0
com.google.firebase:firebase-common:21.0.0
com.google.firebase:firebase-components:18.0.0
com.google.firebase:firebase-installations-interop:17.1.1
com.google.firebase:firebase-installations:18.0.0
com.google.firebase:firebase-measurement-connector:19.0.0
com.google.guava:failureaccess:1.0.1
com.google.guava:guava:31.1-android
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.j2objc:j2objc-annotations:1.3
com.google.maps.android:maps-compose:4.4.1
com.google.maps.android:maps-ktx:5.0.0
com.google.zxing:core:3.5.3
com.squareup.okhttp3:logging-interceptor:4.12.0
com.squareup.okhttp3:okhttp:4.12.0
com.squareup.okio:okio-jvm:3.6.0
com.squareup.okio:okio:3.6.0
com.squareup.retrofit2:adapter-rxjava2:2.11.0
com.squareup.retrofit2:converter-gson:2.11.0
com.squareup.retrofit2:retrofit:2.11.0
dev.chrisbanes.snapper:snapper:0.2.2
io.github.mr0xf00:easycrop:0.1.1
io.insert-koin:koin-android:4.0.1-RC1
io.insert-koin:koin-androidx-compose:4.0.1-RC1
io.insert-koin:koin-compose-jvm:4.0.1-RC1
io.insert-koin:koin-compose-viewmodel-jvm:4.0.1-RC1
io.insert-koin:koin-compose-viewmodel:4.0.1-RC1
io.insert-koin:koin-compose:4.0.1-RC1
io.insert-koin:koin-core-jvm:4.0.1-RC1
io.insert-koin:koin-core-viewmodel-jvm:4.0.1-RC1
io.insert-koin:koin-core-viewmodel:4.0.1-RC1
io.insert-koin:koin-core:4.0.1-RC1
io.michaelrocks:libphonenumber-android:8.13.35
io.reactivex.rxjava2:rxjava:2.2.21
jakarta.inject:jakarta.inject-api:2.0.1
javax.inject:javax.inject:1
net.bytebuddy:byte-buddy-agent:1.14.8
net.bytebuddy:byte-buddy:1.14.8
org.checkerframework:checker-qual:3.12.0
org.jetbrains.androidx.core:core-bundle-android-debug:1.0.1
org.jetbrains.androidx.core:core-bundle:1.0.1
org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.3
org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.3-rc01
org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.3-rc01
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.3
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.3
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.3
org.jetbrains.androidx.savedstate:savedstate:1.2.2
org.jetbrains.compose.animation:animation-core:1.7.0-rc01
org.jetbrains.compose.animation:animation:1.7.0-rc01
org.jetbrains.compose.annotation-internal:annotation:1.7.0-rc01
org.jetbrains.compose.collection-internal:collection:1.7.0-rc01
org.jetbrains.compose.foundation:foundation-layout:1.7.0-rc01
org.jetbrains.compose.foundation:foundation:1.7.0-rc01
org.jetbrains.compose.material3:material3:1.7.0-rc01
org.jetbrains.compose.material:material-icons-core:1.7.0-rc01
org.jetbrains.compose.material:material-ripple:1.7.0-rc01
org.jetbrains.compose.material:material:1.7.0-rc01
org.jetbrains.compose.runtime:runtime-saveable:1.7.0-rc01
org.jetbrains.compose.runtime:runtime:1.7.0-rc01
org.jetbrains.compose.ui:ui-geometry:1.7.0-rc01
org.jetbrains.compose.ui:ui-graphics:1.7.0-rc01
org.jetbrains.compose.ui:ui-text:1.7.0-rc01
org.jetbrains.compose.ui:ui-tooling-preview:1.7.0-rc01
org.jetbrains.compose.ui:ui-unit:1.7.0-rc01
org.jetbrains.compose.ui:ui-util:1.7.0-rc01
org.jetbrains.compose.ui:ui:1.7.0-rc01
org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.0
org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.0
org.jetbrains.kotlin:kotlin-stdlib-common:2.1.0
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10
org.jetbrains.kotlin:kotlin-stdlib:2.1.0
org.jetbrains.kotlinx:atomicfu-jvm:0.23.2
org.jetbrains.kotlinx:atomicfu:0.23.2
org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8
org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8
org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.1
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3
org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3
org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3
org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3
org.jetbrains:annotations:23.0.0
org.jspecify:jspecify:1.0.0
org.mockito:mockito-core:5.6.0
org.objenesis:objenesis:3.3
org.reactivestreams:reactive-streams:1.0.4

View File

@ -0,0 +1,253 @@
androidx.activity:activity-compose:1.9.3
androidx.activity:activity-ktx:1.9.3
androidx.activity:activity:1.9.3
androidx.annotation:annotation-experimental:1.4.1
androidx.annotation:annotation-jvm:1.8.1
androidx.annotation:annotation:1.8.1
androidx.appcompat:appcompat-resources:1.7.0
androidx.appcompat:appcompat:1.7.0
androidx.arch.core:core-common:2.2.0
androidx.arch.core:core-runtime:2.2.0
androidx.autofill:autofill:1.0.0
androidx.camera:camera-camera2:1.4.1
androidx.camera:camera-core:1.4.1
androidx.camera:camera-lifecycle:1.4.1
androidx.camera:camera-video:1.4.1
androidx.camera:camera-view:1.4.1
androidx.collection:collection-jvm:1.4.4
androidx.collection:collection-ktx:1.4.4
androidx.collection:collection:1.4.4
androidx.compose.animation:animation-android:1.7.6
androidx.compose.animation:animation-core-android:1.7.6
androidx.compose.animation:animation-core:1.7.6
androidx.compose.animation:animation:1.7.6
androidx.compose.foundation:foundation-android:1.7.6
androidx.compose.foundation:foundation-layout-android:1.7.6
androidx.compose.foundation:foundation-layout:1.7.6
androidx.compose.foundation:foundation:1.7.6
androidx.compose.material3:material3-android:1.3.1
androidx.compose.material3:material3:1.3.1
androidx.compose.material:material-android:1.7.6
androidx.compose.material:material-icons-core-android:1.7.6
androidx.compose.material:material-icons-core:1.7.6
androidx.compose.material:material-icons-extended-android:1.7.6
androidx.compose.material:material-icons-extended:1.7.6
androidx.compose.material:material-ripple-android:1.7.6
androidx.compose.material:material-ripple:1.7.6
androidx.compose.material:material:1.7.6
androidx.compose.runtime:runtime-android:1.7.6
androidx.compose.runtime:runtime-saveable-android:1.7.6
androidx.compose.runtime:runtime-saveable:1.7.6
androidx.compose.runtime:runtime:1.7.6
androidx.compose.ui:ui-android:1.7.6
androidx.compose.ui:ui-geometry-android:1.7.6
androidx.compose.ui:ui-geometry:1.7.6
androidx.compose.ui:ui-graphics-android:1.7.6
androidx.compose.ui:ui-graphics:1.7.6
androidx.compose.ui:ui-text-android:1.7.6
androidx.compose.ui:ui-text:1.7.6
androidx.compose.ui:ui-tooling-preview-android:1.7.6
androidx.compose.ui:ui-tooling-preview:1.7.6
androidx.compose.ui:ui-unit-android:1.7.6
androidx.compose.ui:ui-unit:1.7.6
androidx.compose.ui:ui-util-android:1.7.6
androidx.compose.ui:ui-util:1.7.6
androidx.compose.ui:ui:1.7.6
androidx.compose:compose-bom:2024.12.01
androidx.concurrent:concurrent-futures-ktx:1.1.0
androidx.concurrent:concurrent-futures:1.1.0
androidx.core:core-ktx:1.15.0
androidx.core:core-splashscreen:1.0.1
androidx.core:core:1.15.0
androidx.cursoradapter:cursoradapter:1.0.0
androidx.customview:customview-poolingcontainer:1.0.0
androidx.customview:customview:1.0.0
androidx.databinding:viewbinding:7.4.2
androidx.documentfile:documentfile:1.0.0
androidx.drawerlayout:drawerlayout:1.0.0
androidx.emoji2:emoji2-views-helper:1.3.0
androidx.emoji2:emoji2:1.3.0
androidx.exifinterface:exifinterface:1.3.2
androidx.fragment:fragment-ktx:1.8.5
androidx.fragment:fragment:1.8.5
androidx.graphics:graphics-path:1.0.1
androidx.hilt:hilt-navigation-compose:1.2.0
androidx.hilt:hilt-navigation:1.2.0
androidx.interpolator:interpolator:1.0.0
androidx.legacy:legacy-support-core-utils:1.0.0
androidx.lifecycle:lifecycle-common-java8:2.8.7
androidx.lifecycle:lifecycle-common-jvm:2.8.7
androidx.lifecycle:lifecycle-common:2.8.7
androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7
androidx.lifecycle:lifecycle-livedata-core:2.8.7
androidx.lifecycle:lifecycle-livedata:2.8.7
androidx.lifecycle:lifecycle-process:2.8.7
androidx.lifecycle:lifecycle-runtime-android:2.8.7
androidx.lifecycle:lifecycle-runtime-compose-android:2.8.7
androidx.lifecycle:lifecycle-runtime-compose:2.8.7
androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.7
androidx.lifecycle:lifecycle-runtime-ktx:2.8.7
androidx.lifecycle:lifecycle-runtime:2.8.7
androidx.lifecycle:lifecycle-viewmodel-android:2.8.7
androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.7
androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7
androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7
androidx.lifecycle:lifecycle-viewmodel:2.8.7
androidx.loader:loader:1.0.0
androidx.localbroadcastmanager:localbroadcastmanager:1.0.0
androidx.metrics:metrics-performance:1.0.0-beta01
androidx.multidex:multidex:2.0.1
androidx.navigation:navigation-common-ktx:2.8.5
androidx.navigation:navigation-common:2.8.5
androidx.navigation:navigation-compose:2.8.5
androidx.navigation:navigation-runtime-ktx:2.8.5
androidx.navigation:navigation-runtime:2.8.5
androidx.print:print:1.0.0
androidx.privacysandbox.ads:ads-adservices-java:1.0.0-beta05
androidx.privacysandbox.ads:ads-adservices:1.0.0-beta05
androidx.profileinstaller:profileinstaller:1.4.1
androidx.resourceinspection:resourceinspection-annotation:1.0.1
androidx.room:room-common:2.6.1
androidx.room:room-ktx:2.6.1
androidx.room:room-runtime:2.6.1
androidx.savedstate:savedstate-ktx:1.2.1
androidx.savedstate:savedstate:1.2.1
androidx.sqlite:sqlite-framework:2.4.0
androidx.sqlite:sqlite:2.4.0
androidx.startup:startup-runtime:1.1.1
androidx.tracing:tracing-ktx:1.2.0
androidx.tracing:tracing:1.2.0
androidx.vectordrawable:vectordrawable-animated:1.1.0
androidx.vectordrawable:vectordrawable:1.1.0
androidx.versionedparcelable:versionedparcelable:1.1.1
androidx.viewpager:viewpager:1.0.0
app.cash.turbine:turbine-jvm:1.1.0
app.cash.turbine:turbine:1.1.0
co.touchlab:stately-concurrency-jvm:2.1.0
co.touchlab:stately-concurrency:2.1.0
co.touchlab:stately-concurrent-collections-jvm:2.1.0
co.touchlab:stately-concurrent-collections:2.1.0
co.touchlab:stately-strict-jvm:2.1.0
co.touchlab:stately-strict:2.1.0
com.google.accompanist:accompanist-pager:0.34.0
com.google.accompanist:accompanist-permissions:0.34.0
com.google.android.gms:play-services-ads-identifier:18.0.0
com.google.android.gms:play-services-base:18.5.0
com.google.android.gms:play-services-basement:18.4.0
com.google.android.gms:play-services-maps:18.2.0
com.google.android.gms:play-services-measurement-api:22.1.2
com.google.android.gms:play-services-measurement-base:22.1.2
com.google.android.gms:play-services-measurement-impl:22.1.2
com.google.android.gms:play-services-measurement-sdk-api:22.1.2
com.google.android.gms:play-services-measurement-sdk:22.1.2
com.google.android.gms:play-services-measurement:22.1.2
com.google.android.gms:play-services-oss-licenses:17.1.0
com.google.android.gms:play-services-stats:17.0.2
com.google.android.gms:play-services-tasks:18.2.0
com.google.auto.value:auto-value-annotations:1.6.3
com.google.code.findbugs:jsr305:3.0.2
com.google.code.gson:gson:2.10.1
com.google.dagger:dagger-lint-aar:2.54
com.google.dagger:dagger:2.54
com.google.dagger:hilt-android:2.54
com.google.dagger:hilt-core:2.54
com.google.errorprone:error_prone_annotations:2.26.0
com.google.firebase:firebase-analytics-ktx:22.1.2
com.google.firebase:firebase-analytics:22.1.2
com.google.firebase:firebase-annotations:16.2.0
com.google.firebase:firebase-bom:33.7.0
com.google.firebase:firebase-common-ktx:21.0.0
com.google.firebase:firebase-common:21.0.0
com.google.firebase:firebase-components:18.0.0
com.google.firebase:firebase-installations-interop:17.1.1
com.google.firebase:firebase-installations:18.0.0
com.google.firebase:firebase-measurement-connector:19.0.0
com.google.guava:failureaccess:1.0.1
com.google.guava:guava:31.1-android
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.j2objc:j2objc-annotations:1.3
com.google.maps.android:maps-compose:4.4.1
com.google.maps.android:maps-ktx:5.0.0
com.google.zxing:core:3.5.3
com.squareup.okhttp3:logging-interceptor:4.12.0
com.squareup.okhttp3:okhttp:4.12.0
com.squareup.okio:okio-jvm:3.6.0
com.squareup.okio:okio:3.6.0
com.squareup.retrofit2:adapter-rxjava2:2.11.0
com.squareup.retrofit2:converter-gson:2.11.0
com.squareup.retrofit2:retrofit:2.11.0
dev.chrisbanes.snapper:snapper:0.2.2
io.github.mr0xf00:easycrop:0.1.1
io.insert-koin:koin-android:4.0.1-RC1
io.insert-koin:koin-androidx-compose:4.0.1-RC1
io.insert-koin:koin-compose-jvm:4.0.1-RC1
io.insert-koin:koin-compose-viewmodel-jvm:4.0.1-RC1
io.insert-koin:koin-compose-viewmodel:4.0.1-RC1
io.insert-koin:koin-compose:4.0.1-RC1
io.insert-koin:koin-core-jvm:4.0.1-RC1
io.insert-koin:koin-core-viewmodel-jvm:4.0.1-RC1
io.insert-koin:koin-core-viewmodel:4.0.1-RC1
io.insert-koin:koin-core:4.0.1-RC1
io.michaelrocks:libphonenumber-android:8.13.35
io.reactivex.rxjava2:rxjava:2.2.21
jakarta.inject:jakarta.inject-api:2.0.1
javax.inject:javax.inject:1
net.bytebuddy:byte-buddy-agent:1.14.8
net.bytebuddy:byte-buddy:1.14.8
org.checkerframework:checker-qual:3.12.0
org.jetbrains.androidx.core:core-bundle-android:1.0.1
org.jetbrains.androidx.core:core-bundle:1.0.1
org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.3
org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.3-rc01
org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.3-rc01
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.3
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.3
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.3
org.jetbrains.androidx.savedstate:savedstate:1.2.2
org.jetbrains.compose.animation:animation-core:1.7.0-rc01
org.jetbrains.compose.animation:animation:1.7.0-rc01
org.jetbrains.compose.annotation-internal:annotation:1.7.0-rc01
org.jetbrains.compose.collection-internal:collection:1.7.0-rc01
org.jetbrains.compose.foundation:foundation-layout:1.7.0-rc01
org.jetbrains.compose.foundation:foundation:1.7.0-rc01
org.jetbrains.compose.material3:material3:1.7.0-rc01
org.jetbrains.compose.material:material-icons-core:1.7.0-rc01
org.jetbrains.compose.material:material-ripple:1.7.0-rc01
org.jetbrains.compose.material:material:1.7.0-rc01
org.jetbrains.compose.runtime:runtime-saveable:1.7.0-rc01
org.jetbrains.compose.runtime:runtime:1.7.0-rc01
org.jetbrains.compose.ui:ui-geometry:1.7.0-rc01
org.jetbrains.compose.ui:ui-graphics:1.7.0-rc01
org.jetbrains.compose.ui:ui-text:1.7.0-rc01
org.jetbrains.compose.ui:ui-tooling-preview:1.7.0-rc01
org.jetbrains.compose.ui:ui-unit:1.7.0-rc01
org.jetbrains.compose.ui:ui-util:1.7.0-rc01
org.jetbrains.compose.ui:ui:1.7.0-rc01
org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.0
org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.0
org.jetbrains.kotlin:kotlin-stdlib-common:2.1.0
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10
org.jetbrains.kotlin:kotlin-stdlib:2.1.0
org.jetbrains.kotlinx:atomicfu-jvm:0.23.2
org.jetbrains.kotlinx:atomicfu:0.23.2
org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8
org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8
org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.10.1
org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.1
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3
org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3
org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3
org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3
org.jetbrains:annotations:23.0.0
org.jspecify:jspecify:1.0.0
org.mockito:mockito-core:5.6.0
org.objenesis:objenesis:3.3
org.reactivestreams:reactive-streams:1.0.4

View File

@ -10,7 +10,7 @@
"client_info": {
"mobilesdk_app_id": "1:622027757397:android:29f731fdcd3a65a6",
"android_client_info": {
"package_name": "org.mifos.mobile"
"package_name": "org.mifos.mobile.demo"
}
},
"oauth_client": [

View File

@ -67,7 +67,7 @@
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="org.mifos.mobile.fileprovider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data

View File

@ -11,7 +11,6 @@ package org.mifos.mobile
import androidx.multidex.MultiDex
import androidx.multidex.MultiDexApplication
import com.google.firebase.crashlytics.FirebaseCrashlytics
import dagger.hilt.android.HiltAndroidApp
import org.mifos.mobile.core.datastore.PreferencesHelper
import org.mifos.mobile.feature.settings.applySavedTheme
@ -21,7 +20,6 @@ class MifosSelfServiceApp : MultiDexApplication() {
override fun onCreate() {
super.onCreate()
MultiDex.install(this)
FirebaseCrashlytics.getInstance().isCrashlyticsCollectionEnabled = true
PreferencesHelper(this).applySavedTheme()
}
}

View File

@ -22,8 +22,6 @@ dependencies {
compileOnly(libs.android.gradlePlugin)
compileOnly(libs.android.tools.common)
compileOnly(libs.compose.gradlePlugin)
compileOnly(libs.firebase.crashlytics.gradlePlugin)
compileOnly(libs.firebase.performance.gradlePlugin)
compileOnly(libs.kotlin.gradlePlugin)
compileOnly(libs.ksp.gradlePlugin)
compileOnly(libs.room.gradlePlugin)
@ -42,58 +40,47 @@ tasks {
gradlePlugin {
plugins {
register("androidApplicationCompose") {
id = "mifos.android.application.compose"
implementationClass = "AndroidApplicationComposeConventionPlugin"
}
register("androidApplication") {
id = "mifos.android.application"
implementationClass = "AndroidApplicationConventionPlugin"
}
register("androidApplicationJacoco") {
id = "mifos.android.application.jacoco"
implementationClass = "AndroidApplicationJacocoConventionPlugin"
register("androidApplicationCompose") {
id = "mifos.android.application.compose"
implementationClass = "AndroidApplicationComposeConventionPlugin"
}
register("androidHilt") {
id = "mifos.android.hilt"
implementationClass = "AndroidHiltConventionPlugin"
}
register("androidLibraryCompose") {
id = "mifos.android.library.compose"
implementationClass = "AndroidLibraryComposeConventionPlugin"
register("androidFlavors") {
id = "mifos.android.application.flavors"
implementationClass = "AndroidApplicationFlavorsConventionPlugin"
}
// This can removed after migration
register("androidLibrary") {
id = "mifos.android.library"
implementationClass = "AndroidLibraryConventionPlugin"
}
register("androidLibraryCompose") {
id = "mifos.android.library.compose"
implementationClass = "AndroidLibraryComposeConventionPlugin"
}
register("androidFeature") {
id = "mifos.android.feature"
implementationClass = "AndroidFeatureConventionPlugin"
}
register("androidLibraryJacoco") {
id = "mifos.android.library.jacoco"
implementationClass = "AndroidLibraryJacocoConventionPlugin"
}
register("androidTest") {
id = "mifos.android.test"
implementationClass = "AndroidTestConventionPlugin"
// Room Plugin
register("androidHilt") {
id = "mifos.android.hilt"
implementationClass = "AndroidHiltConventionPlugin"
}
register("androidRoom") {
id = "mifos.android.room"
implementationClass = "AndroidRoomConventionPlugin"
}
register("androidFirebase") {
id = "mifos.android.application.firebase"
implementationClass = "AndroidApplicationFirebaseConventionPlugin"
}
register("androidLint") {
id = "mifos.android.lint"
implementationClass = "AndroidLintConventionPlugin"
}
register("jvmLibrary") {
id = "mifos.jvm.library"
implementationClass = "JvmLibraryConventionPlugin"
}
// Utility Plugins
register("detekt") {
id = "mifos.detekt.plugin"
implementationClass = "MifosDetektConventionPlugin"
@ -104,15 +91,24 @@ gradlePlugin {
implementationClass = "MifosSpotlessConventionPlugin"
description = "Configures spotless for the project"
}
register("ktlint") {
id = "mifos.ktlint.plugin"
implementationClass = "MifosKtlintConventionPlugin"
description = "Configures kotlinter for the project"
}
register("gitHooks") {
id = "mifos.git.hooks"
implementationClass = "MifosGitHooksConventionPlugin"
description = "Installs git hooks for the project"
}
// KMP & CMP Plugins
register("kmpLibrary") {
id = "mifos.kmp.library"
implementationClass = "KMPLibraryConventionPlugin"
}
register("cmpFeature") {
id = "mifos.cmp.feature"
implementationClass = "CMPFeatureConventionPlugin"
}
register("kmpKoin") {
id = "mifos.kmp.koin"
implementationClass = "KMPKoinConventionPlugin"
}
}
}

View File

@ -15,8 +15,7 @@ class AndroidApplicationConventionPlugin : Plugin<Project> {
with(pluginManager) {
apply("com.android.application")
apply("org.jetbrains.kotlin.android")
apply("mifos.android.lint")
apply("mifos.android.application.jacoco")
apply("com.dropbox.dependency-guard")
apply("mifos.detekt.plugin")
apply("mifos.spotless.plugin")

View File

@ -1,39 +0,0 @@
import com.android.build.api.dsl.ApplicationExtension
import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.dependencies
import org.mifos.mobile.libs
class AndroidApplicationFirebaseConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
with(pluginManager) {
apply("com.google.gms.google-services")
apply("com.google.firebase.firebase-perf")
apply("com.google.firebase.crashlytics")
}
dependencies {
val bom = libs.findLibrary("firebase-bom").get()
add("implementation", platform(bom))
"implementation"(libs.findLibrary("firebase.analytics").get())
"implementation"(libs.findLibrary("firebase.performance").get())
"implementation"(libs.findLibrary("firebase.crashlytics").get())
"implementation"(libs.findLibrary("firebase.cloud.messaging").get())
}
extensions.configure<ApplicationExtension> {
buildTypes.configureEach {
// Disable the Crashlytics mapping file upload. This feature should only be
// enabled if a Firebase backend is available and configured in
// google-services.json.
configure<CrashlyticsExtension> {
mappingFileUploadEnabled = false
}
}
}
}
}
}

View File

@ -0,0 +1,15 @@
import com.android.build.api.dsl.ApplicationExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
import org.mifos.mobile.configureFlavors
class AndroidApplicationFlavorsConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
extensions.configure<ApplicationExtension> {
configureFlavors(this)
}
}
}
}

View File

@ -1,24 +0,0 @@
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.getByType
import org.mifos.mobile.configureJacoco
class AndroidApplicationJacocoConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
pluginManager.apply("jacoco")
val androidExtension = extensions.getByType<BaseAppModuleExtension>()
androidExtension.buildTypes.configureEach {
enableAndroidTestCoverage = true
enableUnitTestCoverage = true
}
configureJacoco(extensions.getByType<ApplicationAndroidComponentsExtension>())
}
}
}

View File

@ -12,7 +12,6 @@ class AndroidFeatureConventionPlugin : Plugin<Project> {
pluginManager.apply {
apply("mifos.android.library")
apply("mifos.android.hilt")
apply("mifos.android.library.jacoco")
}
extensions.configure<LibraryExtension> {
defaultConfig {

View File

@ -15,8 +15,7 @@ class AndroidLibraryConventionPlugin : Plugin<Project> {
with(pluginManager) {
apply("com.android.library")
apply("org.jetbrains.kotlin.android")
apply("mifos.android.library.jacoco")
apply("mifos.android.lint")
apply("mifos.detekt.plugin")
apply("mifos.spotless.plugin")
}
@ -26,7 +25,9 @@ class AndroidLibraryConventionPlugin : Plugin<Project> {
defaultConfig.targetSdk = 34
// The resource prefix is derived from the module name,
// so resources inside ":core:module1" must be prefixed with "core_module1_"
resourcePrefix = path.split("""\W""".toRegex()).drop(1).distinct().joinToString(separator = "_").lowercase() + "_"
resourcePrefix =
path.split("""\W""".toRegex()).drop(1).distinct().joinToString(separator = "_")
.lowercase() + "_"
}
extensions.configure<LibraryAndroidComponentsExtension> {
configurePrintApksTask(this)

View File

@ -1,24 +0,0 @@
import com.android.build.api.dsl.LibraryExtension
import com.android.build.api.variant.LibraryAndroidComponentsExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.getByType
import org.mifos.mobile.configureJacoco
class AndroidLibraryJacocoConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
pluginManager.apply("jacoco")
val androidExtension = extensions.getByType<LibraryExtension>()
androidExtension.buildTypes.configureEach {
enableAndroidTestCoverage = true
enableUnitTestCoverage = true
}
configureJacoco(extensions.getByType<LibraryAndroidComponentsExtension>())
}
}
}

View File

@ -1,38 +0,0 @@
import com.android.build.api.dsl.ApplicationExtension
import com.android.build.api.dsl.LibraryExtension
import com.android.build.api.dsl.Lint
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
import java.io.File
class AndroidLintConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
when {
pluginManager.hasPlugin("com.android.application") ->
configure<ApplicationExtension> { lint(Lint::configure) }
pluginManager.hasPlugin("com.android.library") ->
configure<LibraryExtension> { lint(Lint::configure) }
else -> {
pluginManager.apply("com.android.lint")
configure<Lint>(Lint::configure)
}
}
}
}
}
private fun Lint.configure() {
xmlReport = true
checkDependencies = true
abortOnError = false
// Disable this rule until we ship the libraries to some maven.
disable += "ResourceName"
baseline = File("lint-baseline.xml")
explainIssues = true
htmlReport = true
}

View File

@ -1,5 +1,3 @@
import androidx.room.gradle.RoomExtension
import com.google.devtools.ksp.gradle.KspExtension
import org.gradle.api.Plugin

View File

@ -1,21 +0,0 @@
import com.android.build.gradle.TestExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
import org.mifos.mobile.configureKotlinAndroid
class AndroidTestConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
with(pluginManager) {
apply("com.android.test")
apply("org.jetbrains.kotlin.android")
}
extensions.configure<TestExtension> {
configureKotlinAndroid(this)
defaultConfig.targetSdk = 34
}
}
}
}

View File

@ -0,0 +1,56 @@
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.dependencies
import org.mifos.mobile.libs
class CMPFeatureConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
with(pluginManager) {
apply("mifos.kmp.libray")
apply("mifos.kmp.koin")
apply("org.jetbrains.kotlin.plugin.compose")
apply("org.jetbrains.compose")
}
dependencies {
add("commonMainImplementation", project(":core:ui"))
add("commonMainImplementation", project(":core:designsystem"))
add("commonMainImplementation", project(":core:testing"))
add("commonMainImplementation", project(":core:data"))
add("commonMainImplementation", libs.findLibrary("koin.compose").get())
add("commonMainImplementation", libs.findLibrary("koin.compose.viewmodel").get())
add("commonMainImplementation", libs.findLibrary("jb.composeRuntime").get())
add("commonMainImplementation", libs.findLibrary("jb.composeViewmodel").get())
add("commonMainImplementation", libs.findLibrary("jb.lifecycleViewmodel").get())
add("commonMainImplementation", libs.findLibrary("jb.lifecycleViewmodelSavedState").get())
add("commonMainImplementation", libs.findLibrary("jb.savedstate").get())
add("commonMainImplementation", libs.findLibrary("jb.bundle").get())
add("commonMainImplementation", libs.findLibrary("jb.composeNavigation").get())
add("commonMainImplementation", libs.findLibrary("kotlinx.collections.immutable").get())
add("androidMainImplementation", libs.findLibrary("androidx.lifecycle.runtimeCompose").get())
add("androidMainImplementation", libs.findLibrary("androidx.lifecycle.viewModelCompose").get())
add("androidMainImplementation", libs.findLibrary("androidx.tracing.ktx").get())
add("androidMainImplementation", platform(libs.findLibrary("koin-bom").get()))
add("androidMainImplementation", libs.findLibrary("koin-android").get())
add("androidMainImplementation", libs.findLibrary("koin.androidx.compose").get())
add("androidMainImplementation", libs.findLibrary("koin.android").get())
add("androidMainImplementation", libs.findLibrary("koin.androidx.navigation").get())
add("androidMainImplementation", libs.findLibrary("koin.androidx.compose").get())
add("androidMainImplementation", libs.findLibrary("koin.core.viewmodel").get())
add("androidTestImplementation", libs.findLibrary("koin.test.junit4").get())
add("androidInstrumentedTestImplementation", libs.findLibrary("androidx.navigation.testing").get())
add("androidInstrumentedTestImplementation", libs.findLibrary("androidx.compose.ui.test").get())
add("androidInstrumentedTestImplementation", libs.findLibrary("androidx.lifecycle.runtimeTesting").get())
}
}
}
}

View File

@ -1,15 +0,0 @@
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.mifos.mobile.configureKotlinJvm
class JvmLibraryConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
with(pluginManager) {
apply("org.jetbrains.kotlin.jvm")
apply("mifos.android.lint")
}
configureKotlinJvm()
}
}
}

View File

@ -0,0 +1,25 @@
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.dependencies
import org.mifos.mobile.libs
class KMPKoinConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target){
with(pluginManager){
apply("com.google.devtools.ksp")
}
dependencies {
val bom = libs.findLibrary("koin-bom").get()
add("commonMainImplementation", platform(bom))
add("commonMainImplementation", libs.findLibrary("koin.core").get())
add("commonMainImplementation", libs.findLibrary("koin.annotations").get())
add("kspCommonMainMetadata", libs.findLibrary("koin.ksp.compiler").get())
add("commonTestImplementation", libs.findLibrary("koin.test").get())
}
}
}
}

View File

@ -0,0 +1,46 @@
import com.android.build.gradle.LibraryExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.dependencies
import org.mifos.mobile.configureFlavors
import org.mifos.mobile.configureKotlinAndroid
import org.mifos.mobile.configureKotlinMultiplatform
import org.mifos.mobile.libs
class KMPLibraryConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
with(pluginManager) {
apply("com.android.library")
apply("org.jetbrains.kotlin.multiplatform")
apply("mifos.kmp.koin")
apply("mifos.detekt.plugin")
apply("mifos.spotless.plugin")
}
configureKotlinMultiplatform()
extensions.configure<LibraryExtension> {
configureKotlinAndroid(this)
defaultConfig.targetSdk = 34
configureFlavors(this)
/**
* The resource prefix is derived from the module name,
* so resources inside ":core:module1" must be prefixed with "core_module1_"
*/
resourcePrefix = path
.split("""\W""".toRegex())
.drop(1).distinct()
.joinToString(separator = "_")
.lowercase() + "_"
}
dependencies {
add("commonTestImplementation", libs.findLibrary("kotlin.test").get())
add("commonTestImplementation", libs.findLibrary("kotlinx.coroutines.test").get())
}
}
}
}

View File

@ -1,16 +0,0 @@
import org.gradle.api.Plugin
import org.gradle.api.Project
class MifosKtlintConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
applyPlugins()
}
}
private fun Project.applyPlugins() {
pluginManager.apply {
apply("org.jlleitschuh.gradle.ktlint")
}
}
}

View File

@ -48,7 +48,6 @@ internal fun Project.configureAndroidCompose(
project.providers.gradleProperty("enableComposeCompilerReports").onlyIfTrue()
.relativeToRootProject("compose-reports")
.let(reportsDestination::set)
stabilityConfigurationFiles
.add(isolated.rootProject.projectDirectory.file("compose_compiler_config.conf"))
}

View File

@ -0,0 +1,32 @@
package org.mifos.mobile
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
@OptIn(ExperimentalWasmDsl::class, ExperimentalKotlinGradlePluginApi::class)
internal fun Project.configureKotlinMultiplatform() {
extensions.configure<KotlinMultiplatformExtension> {
applyDefaultHierarchyTemplate()
jvm("desktop")
androidTarget()
iosSimulatorArm64()
iosX64()
iosArm64()
js(IR) {
this.nodejs()
binaries.executable()
}
wasmJs() {
browser()
nodejs()
}
compilerOptions {
freeCompilerArgs.add("-Xexpect-actual-classes")
}
}
}

View File

@ -0,0 +1,9 @@
package org.mifos.mobile
/**
* This is shared between :app and :benchmarks module to provide configurations type safety.
*/
enum class MifosBuildType(val applicationIdSuffix: String? = null) {
DEBUG(".debug"),
RELEASE,
}

View File

@ -0,0 +1,42 @@
package org.mifos.mobile
import com.android.build.api.dsl.ApplicationExtension
import com.android.build.api.dsl.ApplicationProductFlavor
import com.android.build.api.dsl.CommonExtension
import com.android.build.api.dsl.ProductFlavor
@Suppress("EnumEntryName")
enum class FlavorDimension {
contentType
}
// The content for the app can either come from local static data which is useful for demo
// purposes, or from a production backend server which supplies up-to-date, real content.
// These two product flavors reflect this behaviour.
@Suppress("EnumEntryName")
enum class MifosFlavor(val dimension: FlavorDimension, val applicationIdSuffix: String? = null) {
demo(FlavorDimension.contentType, applicationIdSuffix = ".demo"),
prod(FlavorDimension.contentType)
}
fun configureFlavors(
commonExtension: CommonExtension<*, *, *, *, *, *>,
flavorConfigurationBlock: ProductFlavor.(flavor: MifosFlavor) -> Unit = {}
) {
commonExtension.apply {
flavorDimensions += FlavorDimension.contentType.name
productFlavors {
MifosFlavor.values().forEach {
create(it.name) {
dimension = it.dimension.name
flavorConfigurationBlock(this, it)
if (this@apply is ApplicationExtension && this is ApplicationProductFlavor) {
if (it.applicationIdSuffix != null) {
applicationIdSuffix = it.applicationIdSuffix
}
}
}
}
}
}
}

View File

@ -11,24 +11,30 @@ plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.android.test) apply false
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.kotlin.jvm) apply false
alias(libs.plugins.kotlin.serialization) apply false
alias(libs.plugins.kotlin.parcelize) apply false
alias(libs.plugins.dependencyGuard) apply false
alias(libs.plugins.firebase.crashlytics) apply false
alias(libs.plugins.firebase.perf) apply false
alias(libs.plugins.gms) apply false
alias(libs.plugins.hilt) apply false
alias(libs.plugins.ksp) apply false
alias(libs.plugins.roborazzi) apply false
alias(libs.plugins.secrets) apply false
alias(libs.plugins.room) apply false
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.ksp) apply false
alias(libs.plugins.dependencyGuard) apply false
alias(libs.plugins.detekt) apply false
alias(libs.plugins.spotless) apply false
//Multiplatform Plugins
alias(libs.plugins.jetbrainsCompose) apply false
alias(libs.plugins.compose.compiler) apply false
alias(libs.plugins.kotlinMultiplatform) apply false
alias(libs.plugins.jetbrainsCompose) apply false
alias(libs.plugins.wire) apply false
alias(libs.plugins.ktorfit) apply false
}
object DynamicVersion {

View File

@ -13,9 +13,6 @@ call :run_gradle_task "check -p build-logic"
call :run_gradle_task "spotlessApply --no-configuration-cache"
call :run_gradle_task "dependencyGuardBaseline"
call :run_gradle_task "detekt"
call :run_gradle_task "testDebug :lint:test :androidApp:lintRelease :lint:lint"
call :run_gradle_task "build"
call :run_gradle_task "updateReleaseBadging"
echo All checks and tests completed successfully.
exit /b 0

View File

@ -28,9 +28,6 @@ tasks=(
"spotlessApply --no-configuration-cache"
"dependencyGuardBaseline"
"detekt"
# "testDebug :lint:test :lint:lint :androidApp:lintRelease"
"build"
"updateReleaseBadging"
)
for task in "${tasks[@]}"; do

View File

@ -65,7 +65,7 @@ object Utils {
val newFile = File(imagePath, "image.png")
return FileProvider.getUriForFile(
context!!,
"org.mifos.mobile.fileprovider",
"${context.packageName}.fileprovider",
newFile,
)
}

View File

@ -10,6 +10,7 @@
package org.mifos.mobile.core.database.utils
import androidx.room.TypeConverter
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import org.mifos.mobile.core.database.entity.ChargeCalculationTypeEntity
import org.mifos.mobile.core.database.entity.ChargeTimeTypeEntity
@ -29,7 +30,7 @@ class ChargeTypeConverters {
@TypeConverter
fun fromChargeTimeType(value: ChargeTimeTypeEntity?): String? {
return value?.let { Json.encodeToString(it) }
return value?.let { Json.encodeToString(ChargeTimeTypeEntity.serializer(), it) }
}
@TypeConverter
@ -39,7 +40,7 @@ class ChargeTypeConverters {
@TypeConverter
fun fromChargeCalculationType(value: ChargeCalculationTypeEntity?): String? {
return value?.let { Json.encodeToString(it) }
return value?.let { Json.encodeToString(ChargeCalculationTypeEntity.serializer(), it) }
}
@TypeConverter
@ -49,7 +50,7 @@ class ChargeTypeConverters {
@TypeConverter
fun fromCurrency(value: CurrencyEntity?): String? {
return value?.let { Json.encodeToString(it) }
return value?.let { Json.encodeToString(CurrencyEntity.serializer(), it) }
}
@TypeConverter

View File

@ -207,7 +207,7 @@ class PreferencesHelper @Inject constructor(@ApplicationContext context: Context
const val LANGUAGE_TYPE = "language_type"
const val DEFAULT_SYSTEM_LANGUAGE = "default_system_language"
private const val DEFAULT_TENANT = "gsoc"
private const val DEFAULT_TENANT = "default"
private const val DEFAULT_BASE_URL = "https://gsoc.mifos.community"
}

View File

@ -20,8 +20,6 @@ android {
}
dependencies {
lintPublish(projects.lint)
api(libs.androidx.compose.ui)
api(libs.androidx.compose.foundation)
api(libs.androidx.compose.foundation.layout)

View File

@ -10,9 +10,9 @@
package org.mifos.mobile.core.network
class BaseURL {
val url: String? = null
get() = field
?: (PROTOCOL_HTTPS + API_ENDPOINT + API_PATH)
val url: String
get() = PROTOCOL_HTTPS + API_ENDPOINT + API_PATH
val defaultBaseUrl: String
get() = PROTOCOL_HTTPS + API_ENDPOINT

View File

@ -20,7 +20,7 @@ class SelfServiceInterceptor(private val preferencesHelper: PreferencesHelper) :
override fun intercept(chain: Interceptor.Chain): Response {
val chainRequest = chain.request()
val builder = chainRequest.newBuilder()
.header(HEADER_TENANT, preferencesHelper.tenant!!)
.header(HEADER_TENANT, DEFAULT_TENANT)
.header(CONTENT_TYPE, "application/json")
if (!TextUtils.isEmpty(preferencesHelper.token)) {
builder.header(HEADER_AUTH, preferencesHelper.token!!)
@ -32,7 +32,7 @@ class SelfServiceInterceptor(private val preferencesHelper: PreferencesHelper) :
companion object {
const val HEADER_TENANT = "Fineract-Platform-TenantId"
const val HEADER_AUTH = "Authorization"
const val DEFAULT_TENANT = "gsoc"
const val DEFAULT_TENANT = "default"
const val CONTENT_TYPE = "Content-Type"
}
}

View File

@ -41,7 +41,7 @@ object NetworkModule {
@Singleton
fun providesRetrofitInstance(preferencesHelper: PreferencesHelper): Retrofit {
return Retrofit.Builder()
.baseUrl(BaseURL().getUrl(preferencesHelper.baseUrl!!))
.baseUrl(BaseURL().url)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(SelfServiceOkHttpClient(preferencesHelper).mifosOkHttpClient)

View File

@ -2,8 +2,8 @@
accompanistVersion = "0.34.0"
activityVersion = "1.9.3"
androidDesugarJdkLibs = "2.1.4"
androidGradlePlugin = "8.7.0"
androidTools = "31.7.0"
androidGradlePlugin = "8.7.3"
androidTools = "31.7.3"
androidx-test-ext-junit = "1.2.1"
androidxActivity = "1.9.3"
androidxComposeBom = "2024.12.01"
@ -25,7 +25,6 @@ appcompatVersion = "1.7.0"
cameraCoreVersion = "1.3.4"
cameraxVersion = "1.4.1"
compose-material = "1.7.6"
compose-plugin = "1.6.11"
coreKtx = "1.15.0"
dependencyGuard = "0.5.0"
detekt = "1.23.7"
@ -43,13 +42,6 @@ hilt = "2.54"
hiltExt = "1.2.0"
jacoco = "0.8.7"
junitVersion = "4.13.2"
koin = "4.0.0"
koinComposeMultiplatform = "4.0.0"
kotlin = "2.1.0"
kotlinxCoroutines = "1.10.1"
kotlinxImmutable = "0.3.8"
kotlinxSerializationJson = "1.8.0-RC"
ksp = "2.1.0-1.0.29"
ktlint = "12.1.1"
libphonenumberAndroidVersion = "8.13.35"
lifecycleExtensionsVersion = "2.2.0"
@ -78,6 +70,51 @@ twitter-detekt-compose = "0.0.26"
versionCatalogLinterVersion = "1.0.3"
zxingVersion = "3.5.3"
# Kotlin KMP Dependencies
kotlin = "2.1.0"
kotlinInject = "0.7.2"
kotlinxCoroutines = "1.10.1"
kotlinxDatetime = "0.6.1"
kotlinxImmutable = "0.3.8"
kotlinxSerializationJson = "1.7.3"
ksp = "2.1.0-1.0.29"
# Ktor & Ktorfit
ktorVersion = "3.0.3"
ktorfit = "2.2.0"
ktorfitKsp = "2.2.0-1.0.29"
# Koin CMP Dependencies
koin = "4.0.1-RC1"
koinAnnotationsVersion = "1.4.0-RC4"
# CMP Libraries
compose-plugin = "1.7.0-rc01"
coil = "3.0.4"
backHandlerVersion = "2.1.0"
constraintLayout = "0.4.0"
multiplatformSettings = "1.2.0"
mokoPermission = "0.18.0"
qroseVersion = "1.0.1"
okioVersion = "3.9.1"
kermit = "2.0.4"
fileKit = "0.8.7"
wire = "5.0.0"
# Jetbrains CMP
windowsSizeClass = "0.5.0"
uiDesktopVersion = "1.7.0"
composeJB = "1.7.3"
composeLifecycle = "2.8.3"
composeNavigation = "2.8.0-alpha10"
jbCoreBundle = "1.0.1"
jbSavedState = "1.2.2"
# Desktop Version
packageName = "MifosWallet"
packageNamespace = "org.mifos.desktop"
packageVersion = "1.0.0"
[libraries]
accompanist-pager = { group = "com.google.accompanist", name = "accompanist-pager", version.ref = "accompanistVersion" }
accompanist-permissions = { group = "com.google.accompanist", name = "accompanist-permissions", version.ref = "accompanistVersion" }
@ -132,7 +169,6 @@ androidx-test-rules = { group = "androidx.test", name = "rules", version.ref = "
androidx-test-runner = { group = "androidx.test", name = "runner", version.ref = "androidxTestRunner" }
androidx-test-uiautomator = { group = "androidx.test.uiautomator", name = "uiautomator", version.ref = "androidxUiAutomator" }
androidx-tracing-ktx = { group = "androidx.tracing", name = "tracing-ktx", version.ref = "androidxTracing" }
compose-gradlePlugin = { group = "org.jetbrains.kotlin", name = "compose-compiler-gradle-plugin", version.ref = "kotlin" }
detekt-formatting = { group = "io.gitlab.arturbosch.detekt", name = "detekt-formatting", version.ref = "detekt" }
detekt-gradlePlugin = { group = "io.gitlab.arturbosch.detekt", name = "detekt-gradle-plugin", version.ref = "detekt" }
easycrop-compose = { group = "io.github.mr0xf00", name = "easycrop", version.ref = "easycropVersion" }
@ -156,21 +192,7 @@ hilt-core = { group = "com.google.dagger", name = "hilt-core", version.ref = "hi
hilt-ext-compiler = { group = "androidx.hilt", name = "hilt-compiler", version.ref = "hiltExt" }
hilt-ext-work = { group = "androidx.hilt", name = "hilt-work", version.ref = "hiltExt" }
jetbrains-kotlin-jdk7 = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-jdk7", version.ref = "kotlin" }
jetbrains-kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" }
junit = { group = "junit", name = "junit", version.ref = "junitVersion" }
koin-android = { group = "io.insert-koin", name = "koin-android", version.ref = "koin" }
koin-androidx-compose = { group = "io.insert-koin", name = "koin-androidx-compose", version.ref = "koin" }
koin-compose = { group = "io.insert-koin", name = "koin-compose", version.ref = "koinComposeMultiplatform" }
koin-compose-viewmodel = { group = "io.insert-koin", name = "koin-compose-viewmodel", version.ref = "koinComposeMultiplatform" }
koin-core = { group = "io.insert-koin", name = "koin-core", version.ref = "koin" }
kotlin-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" }
kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-jdk8", version.ref = "kotlin" }
kotlinx-collections-immutable = { group = "org.jetbrains.kotlinx", name = "kotlinx-collections-immutable", version.ref = "kotlinxImmutable" }
kotlinx-coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "kotlinxCoroutines" }
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinxCoroutines" }
kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlinxCoroutines" }
kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" }
ksp-gradlePlugin = { group = "com.google.devtools.ksp", name = "com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" }
ktlint-gradlePlugin = { group = "org.jlleitschuh.gradle", name = "ktlint-gradle", version.ref = "ktlint" }
libphonenumber-android = { group = "io.michaelrocks", name = "libphonenumber-android", version.ref = "libphonenumberAndroidVersion" }
lint-api = { group = "com.android.tools.lint", name = "lint-api", version.ref = "androidTools" }
@ -194,6 +216,103 @@ twitter-detekt-compose = { group = "com.twitter.compose.rules", name = "detekt",
work-testing = { group = "androidx.work", name = "work-testing", version = "2.8.1" }
zxing-core = { group = "com.google.zxing", name = "core", version.ref = "zxingVersion" }
# [New KMP Dependencies]
# jb Compose
jb-kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" }
jb-kotlin-stdlib-js = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-js", version.ref = "kotlin" }
jb-kotlin-dom = { group = "org.jetbrains.kotlin", name = "kotlin-dom-api-compat", version.ref = "kotlin" }
jb-composeRuntime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "composeJB" }
jb-composeViewmodel = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "composeLifecycle" }
jb-lifecycleViewmodel = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel", version.ref = "composeLifecycle" }
jb-lifecycleViewmodelSavedState = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate", version.ref = "composeLifecycle" }
jb-bundle = { module = "org.jetbrains.androidx.core:core-bundle", version.ref = "jbCoreBundle" }
jb-savedstate = { module = "org.jetbrains.androidx.savedstate:savedstate", version.ref = "jbSavedState" }
jb-composeNavigation = { module = "org.jetbrains.androidx.navigation:navigation-compose", version.ref = "composeNavigation" }
jb-navigation = { module = "org.jetbrains.androidx.navigation:navigation-common", version.ref = "composeNavigation" }
koin-android = { group = "io.insert-koin", name = "koin-android", version.ref = "koin" }
koin-androidx-compose = { group = "io.insert-koin", name = "koin-androidx-compose", version.ref = "koin" }
koin-androidx-navigation = { group = "io.insert-koin", name = "koin-androidx-navigation", version.ref = "koin" }
koin-annotations = { group = "io.insert-koin", name = "koin-annotations", version.ref = "koinAnnotationsVersion" }
koin-bom = { group = "io.insert-koin", name = "koin-bom", version.ref = "koin" }
koin-compose = { group = "io.insert-koin", name = "koin-compose", version.ref = "koin" }
koin-compose-viewmodel = { group = "io.insert-koin", name = "koin-compose-viewmodel", version.ref = "koin" }
koin-compose-navigation = { group = "io.insert-koin", name = "koin-compose-viewmodel-navigation", version.ref = "koin" }
koin-core = { group = "io.insert-koin", name = "koin-core", version.ref = "koin" }
koin-core-viewmodel = { group = "io.insert-koin", name = "koin-core-viewmodel", version.ref = "koin" }
koin-ksp-compiler = { group = "io.insert-koin", name = "koin-ksp-compiler", version.ref = "koinAnnotationsVersion" }
koin-test = { group = "io.insert-koin", name = "koin-test", version.ref = "koin" }
koin-test-junit4 = { group = "io.insert-koin", name = "koin-test-junit4", version.ref = "koin" }
koin-test-junit5 = { group = "io.insert-koin", name = "koin-test-junit5", version.ref = "koin" }
kotlin-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" }
kotlin-inject-compiler-ksp = { group = "me.tatarka.inject", name = "kotlin-inject-compiler-ksp", version.ref = "kotlinInject" }
kotlin-inject-runtime = { group = "me.tatarka.inject", name = "kotlin-inject-runtime", version.ref = "kotlinInject" }
kotlin-inject-runtime-kmp = { group = "me.tatarka.inject", name = "kotlin-inject-runtime-kmp", version.ref = "kotlinInject" }
kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-jdk8", version.ref = "kotlin" }
kotlin-reflect = { group = "org.jetbrains.kotlin", name = "kotlin-reflect", version.ref = "kotlin" }
kotlin-test = { group = "org.jetbrains.kotlin", name = "kotlin-test", version.ref = "kotlin" }
kotlinx-collections-immutable = { group = "org.jetbrains.kotlinx", name = "kotlinx-collections-immutable", version.ref = "kotlinxImmutable" }
kotlinx-coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "kotlinxCoroutines" }
kotlinx-coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "kotlinxCoroutines" }
kotlinx-coroutines-swing = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-swing", version.ref = "kotlinxCoroutines" }
kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlinxCoroutines" }
kotlinx-datetime = { group = "org.jetbrains.kotlinx", name = "kotlinx-datetime", version.ref = "kotlinxDatetime" }
kotlinx-serialization-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-core", version.ref = "kotlinxSerializationJson" }
kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" }
ksp-gradlePlugin = { group = "com.google.devtools.ksp", name = "com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" }
ktor-client-android = { group = "io.ktor", name = "ktor-client-android", version.ref = "ktorVersion" }
ktor-client-auth = { group = "io.ktor", name = "ktor-client-auth", version.ref = "ktorVersion" }
ktor-client-cio = { group = "io.ktor", name = "ktor-client-cio", version.ref = "ktorVersion" }
ktor-client-content-negotiation = { group = "io.ktor", name = "ktor-client-content-negotiation", version.ref = "ktorVersion" }
ktor-client-core = { group = "io.ktor", name = "ktor-client-core", version.ref = "ktorVersion" }
ktor-client-darwin = { group = "io.ktor", name = "ktor-client-darwin", version.ref = "ktorVersion" }
ktor-client-okhttp = { group = "io.ktor", name = "ktor-client-okhttp", version.ref = "ktorVersion" }
ktor-client-java = { group = "io.ktor", name = "ktor-client-java", version.ref = "ktorVersion" }
ktor-client-js = { group = "io.ktor", name = "ktor-client-js", version.ref = "ktorVersion" }
ktor-client-json = { group = "io.ktor", name = "ktor-client-json", version.ref = "ktorVersion" }
ktor-client-logging = { group = "io.ktor", name = "ktor-client-logging", version.ref = "ktorVersion" }
ktor-client-serialization = { group = "io.ktor", name = "ktor-client-serialization", version.ref = "ktorVersion" }
ktor-client-websockets = { group = "io.ktor", name = "ktor-client-websockets", version.ref = "ktorVersion" }
ktor-client-winhttp = { group = "io.ktor", name = "ktor-client-winhttp", version.ref = "ktorVersion" }
ktor-serialization-kotlinx-json = { group = "io.ktor", name = "ktor-serialization-kotlinx-json", version.ref = "ktorVersion" }
ktor-server-auth = { group = "io.ktor", name = "ktor-server-auth", version.ref = "ktorVersion" }
ktorfit-ksp = { group = "de.jensklingenberg.ktorfit", name = "ktorfit-ksp", version.ref = "ktorfitKsp" }
ktorfit-converters-flow = { group = "de.jensklingenberg.ktorfit", name = "ktorfit-converters-flow", version.ref = "ktorfit" }
ktorfit-lib = { group = "de.jensklingenberg.ktorfit", name = "ktorfit-lib", version.ref = "ktorfit" }
coil-core = { group = "io.coil-kt.coil3", name = "coil-core", version.ref = "coil" }
coil-kt = { group = "io.coil-kt.coil3", name = "coil", version.ref = "coil" }
coil-kt-compose = { group = "io.coil-kt.coil3", name = "coil-compose-core", version.ref = "coil" }
coil-network-ktor = { group = "io.coil-kt.coil3", name = "coil-network-ktor3", version.ref = "coil" }
coil-svg = { group = "io.coil-kt.coil3", name = "coil-svg", version.ref = "coil" }
compose-gradlePlugin = { group = "org.jetbrains.kotlin", name = "compose-compiler-gradle-plugin", version.ref = "kotlin" }
squareup-okio = { group = "com.squareup.okio", name = "okio", version.ref = "okioVersion" }
back-handler = { group = "com.arkivanov.essenty", name = "back-handler", version.ref = "backHandlerVersion" }
constraint-layout = { group = "tech.annexflow.compose", name="constraintlayout-compose-multiplatform", version.ref = "constraintLayout" }
filekit-core = { group = "io.github.vinceglb", name = "filekit-core", version.ref = "fileKit" }
filekit-compose = { group = "io.github.vinceglb", name = "filekit-compose", version.ref = "fileKit" }
qrose = { group = "io.github.alexzhirkevich", name="qrose", version.ref = "qroseVersion" }
kermit-logging = { group = "co.touchlab", name = "kermit", version.ref = "kermit" }
kermit-simple = { group = "co.touchlab", name = "kermit-simple", version.ref = "kermit" }
multiplatform-settings = { group = "com.russhwolf", name = "multiplatform-settings-no-arg", version.ref = "multiplatformSettings" }
multiplatform-settings-coroutines = { group = "com.russhwolf", name = "multiplatform-settings-coroutines", version.ref = "multiplatformSettings" }
multiplatform-settings-serialization = { group = "com.russhwolf", name = "multiplatform-settings-serialization", version.ref = "multiplatformSettings" }
multiplatform-settings-test = { group = "com.russhwolf", name = "multiplatform-settings-test", version.ref = "multiplatformSettings" }
moko-permission = { group = "dev.icerock.moko", name = "permissions", version.ref = "mokoPermission" }
moko-permission-compose = { group = "dev.icerock.moko", name = "permissions-compose", version.ref = "mokoPermission" }
window-size = { group = "dev.chrisbanes.material3", name = "material3-window-size-class-multiplatform", version.ref = "windowsSizeClass" }
[bundles]
androidx-compose-ui-test = [
"androidx-compose-ui-test",
@ -201,44 +320,55 @@ androidx-compose-ui-test = [
]
[plugins]
# Android & Kotlin Plugins
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }
android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" }
android-test = { id = "com.android.test", version.ref = "androidGradlePlugin" }
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
dependencyGuard = { id = "com.dropbox.dependency-guard", version.ref = "dependencyGuard" }
detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }
firebase-crashlytics = { id = "com.google.firebase.crashlytics", version.ref = "firebaseCrashlyticsPlugin" }
firebase-perf = { id = "com.google.firebase.firebase-perf", version.ref = "firebasePerfPlugin" }
gms = { id = "com.google.gms.google-services", version.ref = "gmsPlugin" }
hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }
jetbrainsCompose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
# Hilt & Room Plugins
hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }
room = { id = "androidx.room", version.ref = "room" }
mifos-android-hilt = { id = "mifos.android.hilt", version = "unspecified" }
mifos-android-room = { id = "mifos.android.room", version = "unspecified" }
mifos-android-application = { id = "mifos.android.application", version = "unspecified" }
mifos-android-application-compose = { id = "mifos.android.application.compose", version = "unspecified" }
mifos-android-application-flavors = { id = "mifos.android.application.flavors", version = "unspecified" }
mifos-android-library = { id = "mifos.android.library", version = "unspecified" }
mifos-android-library-compose = { id = "mifos.android.library.compose", version = "unspecified" }
mifos-android-feature = { id = "mifos.android.feature", version = "unspecified" }
# KMP & CMP Plugins
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
jetbrainsCompose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" }
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" }
kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" }
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" }
mifos-android-application = { id = "mifos.android.application", version = "unspecified" }
mifos-android-application-compose = { id = "mifos.android.application.compose", version = "unspecified" }
mifos-android-application-firebase = { id = "mifos.android.application.firebase", version = "unspecified" }
mifos-android-application-jacoco = { id = "mifos.android.application.jacoco", version = "unspecified" }
mifos-android-feature = { id = "mifos.android.feature", version = "unspecified" }
mifos-android-hilt = { id = "mifos.android.hilt", version = "unspecified" }
mifos-android-library = { id = "mifos.android.library", version = "unspecified" }
mifos-android-library-compose = { id = "mifos.android.library.compose", version = "unspecified" }
mifos-android-library-jacoco = { id = "mifos.android.library.jacoco", version = "unspecified" }
mifos-android-lint = { id = "mifos.android.lint", version = "unspecified" }
mifos-android-room = { id = "mifos.android.room", version = "unspecified" }
mifos-android-test = { id = "mifos.android.test", version = "unspecified" }
ktorfit = { id = "de.jensklingenberg.ktorfit", version.ref = "ktorfit" }
wire = { id = "com.squareup.wire", version.ref = "wire" }
mifos-cmp-feature = { id = "mifos.cmp.feature", version = "unspecified" }
mifos-kmp-koin = { id = "mifos.kmp.koin", version = "unspecified" }
mifos-kmp-library = { id = "mifos.kmp.library", version = "unspecified" }
# Utility Plugins
mifos-detekt-plugin = { id = "mifos.detekt.plugin", version = "unspecified" }
mifos-git-hooks = { id = "mifos.git.hooks", version = "unspecified" }
mifos-jvm-library = { id = "mifos.jvm.library", version = "unspecified" }
mifos-ktlint-plugin = { id = "mifos.ktlint.plugin", version = "unspecified" }
mifos-spotless-plugin = { id = "mifos.spotless.plugin", version = "unspecified" }
firebase-crashlytics = { id = "com.google.firebase.crashlytics", version.ref = "firebaseCrashlyticsPlugin" }
firebase-perf = { id = "com.google.firebase.firebase-perf", version.ref = "firebasePerfPlugin" }
roborazzi = { id = "io.github.takahirom.roborazzi", version.ref = "roborazzi" }
room = { id = "androidx.room", version.ref = "room" }
gms = { id = "com.google.gms.google-services", version.ref = "gmsPlugin" }
dependencyGuard = { id = "com.dropbox.dependency-guard", version.ref = "dependencyGuard" }
secrets = { id = "com.google.android.libraries.mapsplatform.secrets-gradle-plugin", version.ref = "secrets" }
detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }
ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" }
spotless = { id = "com.diffplug.spotless", version.ref = "spotlessVersion" }
version-catalog-linter = { id = "io.github.pemistahl.version-catalog-linter", version.ref = "versionCatalogLinterVersion" }

View File

@ -71,23 +71,6 @@ run_detekt_checks() {
fi
}
# Function to run Version Catalog checks
run_version_catalog_checks() {
echo "\n🚀 Version catalog linter is now analyzing your catalog for potential issues!"
./gradlew formatVersionCatalog
DETEKT_EXIT_CODE=$?
if [ ${DETEKT_EXIT_CODE} -ne 0 ]; then
echo "\n*********************************************************************************"
echo " 💥 Oh no! Version Catalog found issues in the code! Time to fix those issues! 💥"
echo " 💡 Tip: Review the Version Catalog logs to resolve these issues. 🛠️"
echo "*********************************************************************************"
exit ${DETEKT_EXIT_CODE}
else
echo "🎉 Fantastic work! Your Version catalog has been formatted successfully 🚀🌟"
fi
}
# Function to print success message
print_success_message() {
GIT_USERNAME=$(git config user.name)
@ -103,7 +86,6 @@ check_current_branch
run_spotless_checks
run_detekt_checks
run_dependency_guard
run_version_catalog_checks
print_success_message
exit 0

View File

@ -73,24 +73,6 @@ run_dependency_guard() {
fi
}
# Function to run Version Catalog checks
run_version_catalog_checks() {
echo "\n🚀 Version catalog linter is now analyzing your catalog for potential issues!"
./gradlew checkVersionCatalog
DETEKT_EXIT_CODE=$?
if [ ${DETEKT_EXIT_CODE} -ne 0 ]; then
echo "\n*********************************************************************************"
echo " 💥 Oh no! Version Catalog found issues in the code! Time to fix those issues! 💥"
echo " 💡 Tip: Review the Version Catalog logs to resolve these issues. 🛠️"
echo "*********************************************************************************"
echo "🚀 Attempting to format the Version Catalog again..."
./gradlew formatVersionCatalog
else
echo "🎉 Fantastic work! Your Version catalog has been formatted successfully 🚀🌟"
fi
}
# Function to print success message
print_success_message() {
GIT_USERNAME=$(git config user.name)
@ -106,7 +88,6 @@ check_current_branch
run_spotless_checks
run_detekt_checks
run_dependency_guard
run_version_catalog_checks
print_success_message
exit 0

View File

@ -20,6 +20,7 @@ dependencyResolutionManagement {
}
plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version("0.8.0")
id("org.ajoberstar.reckon.settings") version("0.18.3")
}
@ -73,7 +74,7 @@ include(":feature:home")
include(":feature:user-profile")
// Lint Modules
include(":lint")
//include(":lint")
// Library Modules
include(":libs:country-code-picker")

View File

@ -6,13 +6,7 @@ plugins {
}
kotlin {
androidTarget {
compilations.all {
kotlinOptions {
jvmTarget = "1.8"
}
}
}
androidTarget()
listOf(
iosX64(),
@ -49,12 +43,12 @@ kotlin {
android {
namespace = "org.mifos.mobile.shared"
compileSdk = 34
compileSdk = 35
defaultConfig {
minSdk = 24
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
}