From d3d673ffda6f994c7aeb4495b70e3aab201ca7e6 Mon Sep 17 00:00:00 2001 From: Nagarjuna Date: Fri, 10 Jan 2025 00:16:04 +0530 Subject: [PATCH] fix: API endpoint (#2733) * MM-102 KMP dependencies setup (#2729) * fix: API endpoint --------- Co-authored-by: Sk Niyaj Ali Co-authored-by: Pronay Sarker --- .github/workflows/master_dev_ci.yml | 3 + .github/workflows/pr-check.yml | 105 +++++++ androidApp/build.gradle.kts | 17 +- .../demoDebugRuntimeClasspath.txt | 258 ++++++++++++++++++ .../demoReleaseRuntimeClasspath.txt | 253 +++++++++++++++++ .../prodDebugRuntimeClasspath.txt | 258 ++++++++++++++++++ .../prodReleaseRuntimeClasspath.txt | 253 +++++++++++++++++ androidApp/google-services.json | 2 +- androidApp/src/main/AndroidManifest.xml | 2 +- .../org/mifos/mobile/MifosSelfServiceApp.kt | 2 - build-logic/convention/build.gradle.kts | 76 +++--- .../AndroidApplicationConventionPlugin.kt | 3 +- ...roidApplicationFirebaseConventionPlugin.kt | 39 --- ...droidApplicationFlavorsConventionPlugin.kt | 15 + ...ndroidApplicationJacocoConventionPlugin.kt | 24 -- .../kotlin/AndroidFeatureConventionPlugin.kt | 1 - .../kotlin/AndroidLibraryConventionPlugin.kt | 7 +- .../AndroidLibraryJacocoConventionPlugin.kt | 24 -- .../kotlin/AndroidLintConventionPlugin.kt | 38 --- .../kotlin/AndroidRoomConventionPlugin.kt | 2 - .../kotlin/AndroidTestConventionPlugin.kt | 21 -- .../main/kotlin/CMPFeatureConventionPlugin.kt | 56 ++++ .../main/kotlin/JvmLibraryConventionPlugin.kt | 15 - .../main/kotlin/KMPKoinConventionPlugin.kt | 25 ++ .../main/kotlin/KMPLibraryConventionPlugin.kt | 46 ++++ .../kotlin/MifosKtlintConventionPlugin.kt | 16 -- .../kotlin/org/mifos/mobile/AndroidCompose.kt | 1 - .../org/mifos/mobile/KotlinMultiplatform.kt | 32 +++ .../kotlin/org/mifos/mobile/MifosBuildType.kt | 9 + .../kotlin/org/mifos/mobile/MifosFlavor.kt | 42 +++ build.gradle.kts | 18 +- ci-prepush.bat | 3 - ci-prepush.sh | 3 - .../mifos/mobile/core/common/utils/Utils.kt | 2 +- .../database/utils/ChargeTypeConverters.kt | 7 +- .../core/datastore/PreferencesHelper.kt | 2 +- core/designsystem/build.gradle.kts | 2 - .../org/mifos/mobile/core/network/BaseURL.kt | 6 +- .../core/network/SelfServiceInterceptor.kt | 4 +- .../mobile/core/network/di/NetworkModule.kt | 2 +- gradle/libs.versions.toml | 228 ++++++++++++---- scripts/pre-commit.sh | 18 -- scripts/pre-push.sh | 19 -- settings.gradle.kts | 3 +- shared/build.gradle.kts | 14 +- 45 files changed, 1618 insertions(+), 358 deletions(-) create mode 100644 .github/workflows/pr-check.yml create mode 100644 androidApp/dependencies/demoDebugRuntimeClasspath.txt create mode 100644 androidApp/dependencies/demoReleaseRuntimeClasspath.txt create mode 100644 androidApp/dependencies/prodDebugRuntimeClasspath.txt create mode 100644 androidApp/dependencies/prodReleaseRuntimeClasspath.txt delete mode 100644 build-logic/convention/src/main/kotlin/AndroidApplicationFirebaseConventionPlugin.kt create mode 100644 build-logic/convention/src/main/kotlin/AndroidApplicationFlavorsConventionPlugin.kt delete mode 100644 build-logic/convention/src/main/kotlin/AndroidApplicationJacocoConventionPlugin.kt delete mode 100644 build-logic/convention/src/main/kotlin/AndroidLibraryJacocoConventionPlugin.kt delete mode 100644 build-logic/convention/src/main/kotlin/AndroidLintConventionPlugin.kt delete mode 100644 build-logic/convention/src/main/kotlin/AndroidTestConventionPlugin.kt create mode 100644 build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt delete mode 100644 build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt create mode 100644 build-logic/convention/src/main/kotlin/KMPKoinConventionPlugin.kt create mode 100644 build-logic/convention/src/main/kotlin/KMPLibraryConventionPlugin.kt delete mode 100644 build-logic/convention/src/main/kotlin/MifosKtlintConventionPlugin.kt create mode 100644 build-logic/convention/src/main/kotlin/org/mifos/mobile/KotlinMultiplatform.kt create mode 100644 build-logic/convention/src/main/kotlin/org/mifos/mobile/MifosBuildType.kt create mode 100644 build-logic/convention/src/main/kotlin/org/mifos/mobile/MifosFlavor.kt diff --git a/.github/workflows/master_dev_ci.yml b/.github/workflows/master_dev_ci.yml index 930b4a789..4a9e63b96 100644 --- a/.github/workflows/master_dev_ci.yml +++ b/.github/workflows/master_dev_ci.yml @@ -2,6 +2,9 @@ name: Workflow for master/development branches on: pull_request: + branches: + - 'development' + - 'master' push: branches: - 'development' diff --git a/.github/workflows/pr-check.yml b/.github/workflows/pr-check.yml new file mode 100644 index 000000000..d4090147c --- /dev/null +++ b/.github/workflows/pr-check.yml @@ -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" diff --git a/androidApp/build.gradle.kts b/androidApp/build.gradle.kts index 0ef096062..c74ac18df 100644 --- a/androidApp/build.gradle.kts +++ b/androidApp/build.gradle.kts @@ -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 { diff --git a/androidApp/dependencies/demoDebugRuntimeClasspath.txt b/androidApp/dependencies/demoDebugRuntimeClasspath.txt new file mode 100644 index 000000000..2974c8097 --- /dev/null +++ b/androidApp/dependencies/demoDebugRuntimeClasspath.txt @@ -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 diff --git a/androidApp/dependencies/demoReleaseRuntimeClasspath.txt b/androidApp/dependencies/demoReleaseRuntimeClasspath.txt new file mode 100644 index 000000000..8aaa3f464 --- /dev/null +++ b/androidApp/dependencies/demoReleaseRuntimeClasspath.txt @@ -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 diff --git a/androidApp/dependencies/prodDebugRuntimeClasspath.txt b/androidApp/dependencies/prodDebugRuntimeClasspath.txt new file mode 100644 index 000000000..2974c8097 --- /dev/null +++ b/androidApp/dependencies/prodDebugRuntimeClasspath.txt @@ -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 diff --git a/androidApp/dependencies/prodReleaseRuntimeClasspath.txt b/androidApp/dependencies/prodReleaseRuntimeClasspath.txt new file mode 100644 index 000000000..8aaa3f464 --- /dev/null +++ b/androidApp/dependencies/prodReleaseRuntimeClasspath.txt @@ -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 diff --git a/androidApp/google-services.json b/androidApp/google-services.json index d46588957..bf28d5179 100644 --- a/androidApp/google-services.json +++ b/androidApp/google-services.json @@ -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": [ diff --git a/androidApp/src/main/AndroidManifest.xml b/androidApp/src/main/AndroidManifest.xml index cd18e8e82..a7eb8a779 100644 --- a/androidApp/src/main/AndroidManifest.xml +++ b/androidApp/src/main/AndroidManifest.xml @@ -67,7 +67,7 @@ { 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") diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationFirebaseConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationFirebaseConventionPlugin.kt deleted file mode 100644 index 3820afca3..000000000 --- a/build-logic/convention/src/main/kotlin/AndroidApplicationFirebaseConventionPlugin.kt +++ /dev/null @@ -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 { - 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 { - 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 { - mappingFileUploadEnabled = false - } - } - } - } - } -} diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationFlavorsConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationFlavorsConventionPlugin.kt new file mode 100644 index 000000000..3a7394b66 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/AndroidApplicationFlavorsConventionPlugin.kt @@ -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 { + override fun apply(target: Project) { + with(target) { + extensions.configure { + configureFlavors(this) + } + } + } +} diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationJacocoConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationJacocoConventionPlugin.kt deleted file mode 100644 index 4e81a0006..000000000 --- a/build-logic/convention/src/main/kotlin/AndroidApplicationJacocoConventionPlugin.kt +++ /dev/null @@ -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 { - override fun apply(target: Project) { - with(target) { - pluginManager.apply("jacoco") - val androidExtension = extensions.getByType() - - androidExtension.buildTypes.configureEach { - enableAndroidTestCoverage = true - enableUnitTestCoverage = true - } - - configureJacoco(extensions.getByType()) - } - } - -} \ No newline at end of file diff --git a/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt index 28ca369e2..afd438e2f 100644 --- a/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt @@ -12,7 +12,6 @@ class AndroidFeatureConventionPlugin : Plugin { pluginManager.apply { apply("mifos.android.library") apply("mifos.android.hilt") - apply("mifos.android.library.jacoco") } extensions.configure { defaultConfig { diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt index 06d9c520e..9ff8e4349 100644 --- a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt @@ -15,8 +15,7 @@ class AndroidLibraryConventionPlugin : Plugin { 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 { 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 { configurePrintApksTask(this) diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryJacocoConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryJacocoConventionPlugin.kt deleted file mode 100644 index c1fffea1e..000000000 --- a/build-logic/convention/src/main/kotlin/AndroidLibraryJacocoConventionPlugin.kt +++ /dev/null @@ -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 { - override fun apply(target: Project) { - with(target) { - pluginManager.apply("jacoco") - val androidExtension = extensions.getByType() - - androidExtension.buildTypes.configureEach { - enableAndroidTestCoverage = true - enableUnitTestCoverage = true - } - - configureJacoco(extensions.getByType()) - } - } - -} \ No newline at end of file diff --git a/build-logic/convention/src/main/kotlin/AndroidLintConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLintConventionPlugin.kt deleted file mode 100644 index af7beed6b..000000000 --- a/build-logic/convention/src/main/kotlin/AndroidLintConventionPlugin.kt +++ /dev/null @@ -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 { - override fun apply(target: Project) { - with(target) { - when { - pluginManager.hasPlugin("com.android.application") -> - configure { lint(Lint::configure) } - - pluginManager.hasPlugin("com.android.library") -> - configure { lint(Lint::configure) } - - else -> { - pluginManager.apply("com.android.lint") - configure(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 -} diff --git a/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt index dfb273120..48761ee55 100644 --- a/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt @@ -1,5 +1,3 @@ - - import androidx.room.gradle.RoomExtension import com.google.devtools.ksp.gradle.KspExtension import org.gradle.api.Plugin diff --git a/build-logic/convention/src/main/kotlin/AndroidTestConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidTestConventionPlugin.kt deleted file mode 100644 index 4f01e5dbd..000000000 --- a/build-logic/convention/src/main/kotlin/AndroidTestConventionPlugin.kt +++ /dev/null @@ -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 { - override fun apply(target: Project) { - with(target) { - with(pluginManager) { - apply("com.android.test") - apply("org.jetbrains.kotlin.android") - } - - extensions.configure { - configureKotlinAndroid(this) - defaultConfig.targetSdk = 34 - } - } - } -} diff --git a/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt b/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt new file mode 100644 index 000000000..583eb98b3 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt @@ -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 { + + 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()) + } + } + } +} \ No newline at end of file diff --git a/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt deleted file mode 100644 index d5045d8ee..000000000 --- a/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt +++ /dev/null @@ -1,15 +0,0 @@ -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.mifos.mobile.configureKotlinJvm - -class JvmLibraryConventionPlugin : Plugin { - override fun apply(target: Project) { - with(target) { - with(pluginManager) { - apply("org.jetbrains.kotlin.jvm") - apply("mifos.android.lint") - } - configureKotlinJvm() - } - } -} diff --git a/build-logic/convention/src/main/kotlin/KMPKoinConventionPlugin.kt b/build-logic/convention/src/main/kotlin/KMPKoinConventionPlugin.kt new file mode 100644 index 000000000..d11be47d9 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/KMPKoinConventionPlugin.kt @@ -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 { + + 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()) + } + } + } + +} \ No newline at end of file diff --git a/build-logic/convention/src/main/kotlin/KMPLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/KMPLibraryConventionPlugin.kt new file mode 100644 index 000000000..bccccd066 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/KMPLibraryConventionPlugin.kt @@ -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 { + + 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 { + 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()) + } + } + } +} \ No newline at end of file diff --git a/build-logic/convention/src/main/kotlin/MifosKtlintConventionPlugin.kt b/build-logic/convention/src/main/kotlin/MifosKtlintConventionPlugin.kt deleted file mode 100644 index 68afeb46e..000000000 --- a/build-logic/convention/src/main/kotlin/MifosKtlintConventionPlugin.kt +++ /dev/null @@ -1,16 +0,0 @@ -import org.gradle.api.Plugin -import org.gradle.api.Project - -class MifosKtlintConventionPlugin : Plugin { - override fun apply(target: Project) { - with(target) { - applyPlugins() - } - } - - private fun Project.applyPlugins() { - pluginManager.apply { - apply("org.jlleitschuh.gradle.ktlint") - } - } -} \ No newline at end of file diff --git a/build-logic/convention/src/main/kotlin/org/mifos/mobile/AndroidCompose.kt b/build-logic/convention/src/main/kotlin/org/mifos/mobile/AndroidCompose.kt index 045dcca87..fe183141b 100644 --- a/build-logic/convention/src/main/kotlin/org/mifos/mobile/AndroidCompose.kt +++ b/build-logic/convention/src/main/kotlin/org/mifos/mobile/AndroidCompose.kt @@ -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")) } diff --git a/build-logic/convention/src/main/kotlin/org/mifos/mobile/KotlinMultiplatform.kt b/build-logic/convention/src/main/kotlin/org/mifos/mobile/KotlinMultiplatform.kt new file mode 100644 index 000000000..eeb9eaa43 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/org/mifos/mobile/KotlinMultiplatform.kt @@ -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 { + applyDefaultHierarchyTemplate() + + jvm("desktop") + androidTarget() + iosSimulatorArm64() + iosX64() + iosArm64() + js(IR) { + this.nodejs() + binaries.executable() + } + wasmJs() { + browser() + nodejs() + } + + compilerOptions { + freeCompilerArgs.add("-Xexpect-actual-classes") + } + } +} \ No newline at end of file diff --git a/build-logic/convention/src/main/kotlin/org/mifos/mobile/MifosBuildType.kt b/build-logic/convention/src/main/kotlin/org/mifos/mobile/MifosBuildType.kt new file mode 100644 index 000000000..0e962a664 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/org/mifos/mobile/MifosBuildType.kt @@ -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, +} \ No newline at end of file diff --git a/build-logic/convention/src/main/kotlin/org/mifos/mobile/MifosFlavor.kt b/build-logic/convention/src/main/kotlin/org/mifos/mobile/MifosFlavor.kt new file mode 100644 index 000000000..899d2407d --- /dev/null +++ b/build-logic/convention/src/main/kotlin/org/mifos/mobile/MifosFlavor.kt @@ -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 + } + } + } + } + } + } +} diff --git a/build.gradle.kts b/build.gradle.kts index 6e5d17af8..2d944824a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -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 { diff --git a/ci-prepush.bat b/ci-prepush.bat index db677dc2a..b08bc0a9e 100644 --- a/ci-prepush.bat +++ b/ci-prepush.bat @@ -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 diff --git a/ci-prepush.sh b/ci-prepush.sh index 104428237..ada49c947 100644 --- a/ci-prepush.sh +++ b/ci-prepush.sh @@ -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 diff --git a/core/common/src/main/java/org/mifos/mobile/core/common/utils/Utils.kt b/core/common/src/main/java/org/mifos/mobile/core/common/utils/Utils.kt index 7249bbb8d..20586025f 100644 --- a/core/common/src/main/java/org/mifos/mobile/core/common/utils/Utils.kt +++ b/core/common/src/main/java/org/mifos/mobile/core/common/utils/Utils.kt @@ -65,7 +65,7 @@ object Utils { val newFile = File(imagePath, "image.png") return FileProvider.getUriForFile( context!!, - "org.mifos.mobile.fileprovider", + "${context.packageName}.fileprovider", newFile, ) } diff --git a/core/database/src/main/kotlin/org/mifos/mobile/core/database/utils/ChargeTypeConverters.kt b/core/database/src/main/kotlin/org/mifos/mobile/core/database/utils/ChargeTypeConverters.kt index ce9af22bb..137a04995 100644 --- a/core/database/src/main/kotlin/org/mifos/mobile/core/database/utils/ChargeTypeConverters.kt +++ b/core/database/src/main/kotlin/org/mifos/mobile/core/database/utils/ChargeTypeConverters.kt @@ -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 diff --git a/core/datastore/src/main/kotlin/org/mifos/mobile/core/datastore/PreferencesHelper.kt b/core/datastore/src/main/kotlin/org/mifos/mobile/core/datastore/PreferencesHelper.kt index 19b4f147e..0959cfced 100644 --- a/core/datastore/src/main/kotlin/org/mifos/mobile/core/datastore/PreferencesHelper.kt +++ b/core/datastore/src/main/kotlin/org/mifos/mobile/core/datastore/PreferencesHelper.kt @@ -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" } diff --git a/core/designsystem/build.gradle.kts b/core/designsystem/build.gradle.kts index 15067bda7..fe662c31a 100644 --- a/core/designsystem/build.gradle.kts +++ b/core/designsystem/build.gradle.kts @@ -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) diff --git a/core/network/src/main/java/org/mifos/mobile/core/network/BaseURL.kt b/core/network/src/main/java/org/mifos/mobile/core/network/BaseURL.kt index 089902adf..7eab492e3 100644 --- a/core/network/src/main/java/org/mifos/mobile/core/network/BaseURL.kt +++ b/core/network/src/main/java/org/mifos/mobile/core/network/BaseURL.kt @@ -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 diff --git a/core/network/src/main/java/org/mifos/mobile/core/network/SelfServiceInterceptor.kt b/core/network/src/main/java/org/mifos/mobile/core/network/SelfServiceInterceptor.kt index b27e5b6de..728669d41 100644 --- a/core/network/src/main/java/org/mifos/mobile/core/network/SelfServiceInterceptor.kt +++ b/core/network/src/main/java/org/mifos/mobile/core/network/SelfServiceInterceptor.kt @@ -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" } } diff --git a/core/network/src/main/java/org/mifos/mobile/core/network/di/NetworkModule.kt b/core/network/src/main/java/org/mifos/mobile/core/network/di/NetworkModule.kt index 562e45708..247a0d5fb 100644 --- a/core/network/src/main/java/org/mifos/mobile/core/network/di/NetworkModule.kt +++ b/core/network/src/main/java/org/mifos/mobile/core/network/di/NetworkModule.kt @@ -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) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4c6bd78de..8804ad1ea 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -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" } +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-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } 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" } diff --git a/scripts/pre-commit.sh b/scripts/pre-commit.sh index 6a267b967..04c785606 100644 --- a/scripts/pre-commit.sh +++ b/scripts/pre-commit.sh @@ -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 diff --git a/scripts/pre-push.sh b/scripts/pre-push.sh index 9555ae87b..71bf5c432 100644 --- a/scripts/pre-push.sh +++ b/scripts/pre-push.sh @@ -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 diff --git a/settings.gradle.kts b/settings.gradle.kts index 5f0da72bb..577fabcef 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -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") diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts index 5f4856a37..a7ba5874b 100644 --- a/shared/build.gradle.kts +++ b/shared/build.gradle.kts @@ -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 } }