From 6980ca7c5a9675b68b55b02b2fd59d3ec2895ef0 Mon Sep 17 00:00:00 2001 From: Sk Niyaj Ali Date: Tue, 19 Nov 2024 08:47:00 +0530 Subject: [PATCH] feat: Final KMM Clean Up (#1814) * Feat: KMP Library Setup (#1766) * Migrating from hilt to koin (This) (#1764) * Migrating from hilt to koin * Fixed Instance creation error * refactor: Removed Hilt and migrated to Koin This commit removes Hilt and migrates the project to Koin for dependency injection. The following changes were made: - Removed the `AndroidHiltConventionPlugin`. - Added the `AndroidKoinConventionPlugin`. - Updated dependencies to use Koin. - Updated KSP configuration for Koin. - Updated feature modules to use Koin. - Updated common modules to use Koin . - Removed Hilt annotations and replaced them with Koin annotations. - Updated ViewModels to use Koin for dependency injection. - Updated modules to use Koin for dependency injection. * Formatted Dependencies * migrating from hilt to koin clean up commit * Revert "migrating from hilt to koin clean up commit" This reverts commit bb63058e49299a23d4397ef8ed2ff6236418bd7e. --------- Co-authored-by: Sk Niyaj Ali * Feat: KMP Library Setup --------- Co-authored-by: Nagarjuna <99315689+Nagarjuna0033@users.noreply.github.com> * Feat: [:core:model] - Migrated to KMM (#1770) * Feat: [:core:common] KMP Migration (#1768) * Feat: [:core:common] KMP Migration * Updated Usage Declaration * Feat: [:core:datastore] - Migrated to KMP (#1769) * Feat: [:core:network] - Migrated to KMP (#1772) * Feat: [:core:network] - Migrated to KMP * Feat: [:core:data] - Migrated to KMP Library * Feat: [:core:designsystem] - Migrated to KMP with CMP Library (#1774) * Feat: [:core:ui] - Migrated to KMP with CMP Library (#1775) * Feat: [:feature:auth] - Migrated to Kotlin Multiplatform (#1782) * Feat: [:feature:auth] - Migrated to Kotlin Multiplatform * Added Support For Web * Feat: Migrated Passcode Module to KMP (#1783) * Feat: Migrated Home Module to KMP (#1784) * Feat: Migrated Edit Password Module to KMP (#1787) * Feat: Migrated FAQ module to kmp (#1786) * Feat: Migrated Settings Module to KMP (#1785) * Feat: Migrated Profile Module to KMP (#1788) * Feat: Migrated History Module to KMP (#1790) * Feat: Migrated Payments Module to KMP (#1791) * Feat: Migrated Finance Module to KMP (#1792) * Feat: Migrated Accounts Module to KMP (#1793) * Feat: Migrated Accounts Module to KMP * Updated README.md * Update README.md * Feat: Migrated Invoices Module to KMP (#1794) * Feat: Migrated KYC Module to KMP (#1798) * Migrated Notification Module to KMP (#1799) * Feat: Migrated KYC Module to KMP * Feat: Migrated Notification Module to KMP * Feat: Migrated Saved Card Module to KMP (#1800) * Feat: Migrated Receipt Module to KMP (#1801) * fix: Ios Build (#1802) * Feat: Migrated SI Module to KMP (#1803) * Feat: Migrated Request Money Module to KMP (#1807) * Feat: Migrated Send Money Module to KMP (#1808) * Feat: Migrated Make Transfer Module to KMP (#1809) * Feat: Migrated QR Module to KMP (#1810) * Feat: Migrated UPI Setup Module to KMP (#1811) * Feat: Final Clean-up For KMP (#1812) * Feat: Final Cleanup For KMP * Update README.md * Update EditPassword README.md * Update FAQ README.md * Update Finance README.md * Update History README.md * Update Home README.md * Update Invoice README.md * Update KYC README.md * Update Make Transfer README.md * Update Notification README.md * Update Payments README.md * Update Profile README.md * Update Saved Card README.md * Update Send Money README.md * Update Settings README.md * Update SI README.md * Migrating from hilt to koin (This) (#1764) * Migrating from hilt to koin * Fixed Instance creation error * refactor: Removed Hilt and migrated to Koin This commit removes Hilt and migrates the project to Koin for dependency injection. The following changes were made: - Removed the `AndroidHiltConventionPlugin`. - Added the `AndroidKoinConventionPlugin`. - Updated dependencies to use Koin. - Updated KSP configuration for Koin. - Updated feature modules to use Koin. - Updated common modules to use Koin . - Removed Hilt annotations and replaced them with Koin annotations. - Updated ViewModels to use Koin for dependency injection. - Updated modules to use Koin for dependency injection. * Formatted Dependencies * migrating from hilt to koin clean up commit * Revert "migrating from hilt to koin clean up commit" This reverts commit bb63058e49299a23d4397ef8ed2ff6236418bd7e. --------- Co-authored-by: Sk Niyaj Ali * Profile UI redesign (#1767) * Refactor Profile UI * Fixed Build Issue * Profile UI Bug Fix & Improvement * added placeholder for when uri is null cleanup fix spotless test failure * Fix - CI Build Issue --------- Co-authored-by: Sk Niyaj Ali * refactor: Redesign payment screen (#1773) * refactor: Redesign payment screen * resolved detekt error * refactor : changed current theme instead of using NewUi * resolved spotless errors * refactor: Redesign finance screen (#1777) * refactor: Redesign payment screen * resolved detekt error * refactor : changed current theme instead of using NewUi * resolved spotless errors * refactor: Redesign finance screen UI * resolved spotless errors * resolved conflicts * changed structure of accounts screen * refactor padding values in finance screen * fix: dark theme colors (#1789) * fix: dark theme colors * fixed edit icon tint * Fix invoice api (#1797) * Redesign requeset screen UI * fix MissingKoinDefinitionException * removed comments and fixed share qr code bug * fix: Invoice APIs * update readme file (#1804) * update readme file * update readme file * update readme file with how to contribute * Add branch policy (#1805) * update readme file * update readme file * update readme file with how to contribute * update readme file with how to contribute * update readme file with branch Policy --------- Co-authored-by: Rajan Maurya * Migrating from hilt to koin (This) (#1764) * Migrating from hilt to koin * Fixed Instance creation error * refactor: Removed Hilt and migrated to Koin This commit removes Hilt and migrates the project to Koin for dependency injection. The following changes were made: - Removed the `AndroidHiltConventionPlugin`. - Added the `AndroidKoinConventionPlugin`. - Updated dependencies to use Koin. - Updated KSP configuration for Koin. - Updated feature modules to use Koin. - Updated common modules to use Koin . - Removed Hilt annotations and replaced them with Koin annotations. - Updated ViewModels to use Koin for dependency injection. - Updated modules to use Koin for dependency injection. * Formatted Dependencies * migrating from hilt to koin clean up commit * Revert "migrating from hilt to koin clean up commit" This reverts commit bb63058e49299a23d4397ef8ed2ff6236418bd7e. --------- Co-authored-by: Sk Niyaj Ali * Merge kmm-impl to dev * feat: Final Dev Cleanup - Fixed CI Workflow - Enabled Weekly & Monthly Release - Fixed Release Build Issue --------- Co-authored-by: Nagarjuna <99315689+Nagarjuna0033@users.noreply.github.com> Co-authored-by: Rajan Maurya Co-authored-by: Pronay Sarker Co-authored-by: kapmaurya <152150716+kapmaurya@users.noreply.github.com> --- .../actions/create-release-notes/action.yml | 6 +- .github/actions/inflate-secrets/action.yml | 9 +- ...nPush.yml => internal_or_beta_release.yml} | 65 +- .github/workflows/make_site.yaml | 49 + .github/workflows/master_dev_ci.yml | 50 +- .github/workflows/monthly.yaml | 6 +- .github/workflows/weekly.yaml | 12 +- Gemfile.lock | 3 + LICENSE | 117 ++ .../main/kotlin/org/mifospay/KotlinAndroid.kt | 2 +- .../org/mifospay/KotlinMultiplatform.kt | 18 +- .../core/designsystem/component/TextField.kt | 44 +- core/network/consumer-rules.pro | 22 +- fastlane/FastFile | 4 +- feature/auth/build.gradle.kts | 2 - .../feature/auth/login/LoginScreen.kt | 72 +- .../MobileVerificationScreenNavigation.kt | 4 +- .../auth/navigation/SignupScreenNavigation.kt | 4 +- .../feature/auth/signup/SignupScreen.kt | 391 ++-- feature/home/build.gradle.kts | 3 - .../feature/merchants/ui/MerchantScreen.kt | 65 +- feature/profile/build.gradle.kts | 10 - feature/qr/build.gradle.kts | 10 - gradle.properties | 3 +- gradle/libs.versions.toml | 39 +- .../prodReleaseRuntimeClasspath.tree.txt | 1578 ++++++++--------- .../prodReleaseRuntimeClasspath.txt | 194 +- mifospay-android/prodRelease-badging.txt | 20 +- mifospay-android/proguard-rules.pro | 170 +- mifospay-desktop/build.gradle.kts | 76 +- mifospay-desktop/compose-desktop.pro | 170 ++ mifospay-desktop/icons/ic_launcher.icns | Bin 0 -> 46961 bytes mifospay-desktop/icons/ic_launcher.ico | Bin 0 -> 183045 bytes mifospay-desktop/icons/ic_launcher.png | Bin 0 -> 10291 bytes mifospay-ios/iosApp/ContentView.swift | 27 +- mifospay-ios/iosApp/iosAppApp.swift | 7 - .../mifospay/shared/MifosViewController.kt | 22 + mifospay-web/build.gradle.kts | 11 + mifospay-web/src/wasmJsMain/kotlin/Main.kt | 3 +- .../src/wasmJsMain/resources/index.html | 13 - .../src/webpack.config.d/cleanupSourcemap.js | 31 + 41 files changed, 1957 insertions(+), 1375 deletions(-) rename .github/workflows/{onPush.yml => internal_or_beta_release.yml} (66%) create mode 100644 .github/workflows/make_site.yaml create mode 100644 LICENSE create mode 100644 mifospay-desktop/compose-desktop.pro create mode 100644 mifospay-desktop/icons/ic_launcher.icns create mode 100644 mifospay-desktop/icons/ic_launcher.ico create mode 100644 mifospay-desktop/icons/ic_launcher.png create mode 100644 mifospay-shared/src/nativeMain/kotlin/org/mifospay/shared/MifosViewController.kt create mode 100644 mifospay-web/src/webpack.config.d/cleanupSourcemap.js diff --git a/.github/actions/create-release-notes/action.yml b/.github/actions/create-release-notes/action.yml index dce0e7be5..1e002a189 100644 --- a/.github/actions/create-release-notes/action.yml +++ b/.github/actions/create-release-notes/action.yml @@ -41,7 +41,7 @@ runs: id: version-generator shell: bash run: | - mkdir -p ./app/build/outputs/ + mkdir -p ./mifospay-android/build/outputs/ echo "Previous Release Tag:" echo "${{ steps.latest-release-tag.outputs.result }}" @@ -49,8 +49,8 @@ runs: echo "Full Changelog:" CHANGELOG="${{ steps.generate-notes.outputs.result }}" echo -e "$CHANGELOG" - printf "$CHANGELOG" > ./mifospay/build/outputs/changelogGithub + printf "$CHANGELOG" > ./mifospay-android/build/outputs/changelogGithub echo "Beta Changelog:" git log --format="* %s" HEAD^..HEAD - git log --format="* %s" HEAD^..HEAD > ./mifospay/build/outputs/changelogBeta + git log --format="* %s" HEAD^..HEAD > ./mifospay-android/build/outputs/changelogBeta diff --git a/.github/actions/inflate-secrets/action.yml b/.github/actions/inflate-secrets/action.yml index d9a013eda..df69f71de 100644 --- a/.github/actions/inflate-secrets/action.yml +++ b/.github/actions/inflate-secrets/action.yml @@ -16,26 +16,25 @@ runs: - name: Mock debug google-services.json shell: bash run: | - cp .github/mock-google-services.json mifospay/src/demo/google-services.json - cp .github/mock-google-services.json mifospay/src/prod/google-services.json + cp .github/mock-google-services.json mifospay-android/google-services.json - name: Inflate release_keystore.keystore shell: bash env: KEYSTORE: ${{ inputs.keystore }} run: | - echo $KEYSTORE | base64 --decode > mifospay/release_keystore.keystore + echo $KEYSTORE | base64 --decode > mifospay-android/release_keystore.keystore - name: Inflate google-services.json shell: bash env: GOOGLE_SERVICES: ${{ inputs.google-services }} run: | - echo $GOOGLE_SERVICES > mifospay/google-services.json + echo $GOOGLE_SERVICES > mifospay-android/google-services.json - name: Inflate playStorePublishServiceCredentialsFile.json shell: bash env: CREDS: ${{ inputs.playstore-creds }} run: | - echo $CREDS > mifospay/playStorePublishServiceCredentialsFile.json + echo $CREDS > mifospay-android/playStorePublishServiceCredentialsFile.json diff --git a/.github/workflows/onPush.yml b/.github/workflows/internal_or_beta_release.yml similarity index 66% rename from .github/workflows/onPush.yml rename to .github/workflows/internal_or_beta_release.yml index 791b679e2..19efb8b9f 100644 --- a/.github/workflows/onPush.yml +++ b/.github/workflows/internal_or_beta_release.yml @@ -1,22 +1,49 @@ -name: On Push +name: Internal Or Beta Release on: workflow_dispatch: inputs: - beta: - description: 'true if this is a beta release' + release_type: required: false - default: 'false' - push: - branches: - - master + default: 'internal' + description: Please select the release type + type: choice + options: + - internal + - beta env: SUPPLY_UPLOAD_MAX_RETRIES: 5 jobs: + build_desktop_app: + strategy: + matrix: + os: + - macos-latest + - ubuntu-latest + - windows-latest + + runs-on: ${{ matrix.os }} + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: 17 + + - name: Build Desktop App + env: + NOTARIZATION_APPLE_ID: ${{ secrets.NOTARIZATION_APPLE_ID }} + NOTARIZATION_PASSWORD: ${{ secrets.NOTARIZATION_PASSWORD }} + NOTARIZATION_TEAM_ID: ${{ secrets.NOTARIZATION_TEAM_ID }} + run: ./gradlew packageReleaseDistributionForCurrentOS + app_build: name: Github, Firebase, and Sentry Release + needs: [ build_desktop_app ] runs-on: ubuntu-latest permissions: contents: write @@ -63,7 +90,7 @@ jobs: KEYSTORE_ALIAS_PASSWORD: ${{ secrets.ORIGINAL_KEYSTORE_ALIAS_PASSWORD }} VERSION_CODE: ${{ steps.rel_number.outputs.version-code }} run: | - ./gradlew :mifospay:assembleRelease + ./gradlew :mifospay-android:assembleRelease - name: Archive Build uses: actions/upload-artifact@v4 @@ -71,25 +98,29 @@ jobs: path: ./**/*.apk - name: Create Version File - if: github.event.inputs.beta == 'true' + if: github.event.inputs.release_type == 'beta' shell: bash env: VERSION_CODE: ${{ steps.rel_number.outputs.version-code }} run: | - echo $VERSION_CODE > ./app/build/outputs/version_code.txt + echo $VERSION_CODE > ./mifospay-android/build/outputs/version_code.txt - name: Create Github Pre-Release - if: github.event.inputs.beta == 'true' + if: github.event.inputs.release_type == 'beta' uses: softprops/action-gh-release@v2.0.8 with: tag_name: ${{ steps.rel_number.outputs.version }} - body_path: ./app/build/outputs/changelogGithub + body_path: ./mifospay-android/build/outputs/changelogGithub draft: false prerelease: true files: | - ./mifospay/build/outputs/apk/demo/release/mifospay-demo-release.apk - ./mifospay/build/outputs/apk/prod/release/mifospay-prod-release.apk - ./mifospay/build/outputs/version_code.txt + ./mifospay-android/build/outputs/apk/demo/release/mifospay-android-demo-release.apk + ./mifospay-android/build/outputs/apk/prod/release/mifospay-android-prod-release.apk + ./mifospay-android/build/outputs/version_code.txt + ./mifospay-desktop/build/compose/binaries/main-release/exe/*.exe + ./mifospay-desktop/build/compose/binaries/main-release/msi/*.msi + ./mifospay-desktop/build/compose/binaries/main-release/deb/*.deb + ./mifospay-desktop/build/compose/binaries/main-release/dmg/*.dmg - name: Print `git status` run: git status @@ -144,11 +175,11 @@ jobs: KEYSTORE_ALIAS_PASSWORD: ${{ secrets.UPLOAD_KEYSTORE_ALIAS_PASSWORD }} VERSION_CODE: ${{ steps.rel_number.outputs.version-code }} run: | - ./gradlew :mifospay:bundleRelease + ./gradlew :mifospay-android:bundleRelease - name: Deploy to Playstore Internal run: bundle exec fastlane deploy_internal - name: Promote Internal to Beta - if: github.event.inputs.beta == 'true' + if: github.event.inputs.release_type == 'beta' run: bundle exec fastlane promote_to_beta diff --git a/.github/workflows/make_site.yaml b/.github/workflows/make_site.yaml new file mode 100644 index 000000000..8e2ce42ff --- /dev/null +++ b/.github/workflows/make_site.yaml @@ -0,0 +1,49 @@ +name: Publish Web App + +on: + # Runs on pushes targeting the default branch + push: + branches: ["dev"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + build_web_app: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: 17 + + - name: Build Web(JS) App + run: ./gradlew jsBrowserDistribution + + - name: Setup Pages + uses: actions/configure-pages@v5 + + - name: Upload static files as artifact + uses: actions/upload-pages-artifact@v3 + with: + path: './mifospay-web/build/dist/js/productionExecutable/' + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 \ No newline at end of file diff --git a/.github/workflows/master_dev_ci.yml b/.github/workflows/master_dev_ci.yml index ba41c9883..cc31e1069 100644 --- a/.github/workflows/master_dev_ci.yml +++ b/.github/workflows/master_dev_ci.yml @@ -2,7 +2,7 @@ name: Mobile-Wallet CI[Master/Dev] on: push: - branches: [ dev, master, payment_hub ] + branches: [ dev ] pull_request: concurrency: @@ -62,6 +62,8 @@ jobs: **/build/reports/detekt/detekt.md + + dependency_guard: needs: setup runs-on: ubuntu-latest @@ -120,6 +122,8 @@ jobs: **/build/reports/lint-results-*.html **/build/test-results/test*UnitTest/**.xml + + build: needs: [ checks, dependency_guard, tests_and_lint ] runs-on: ubuntu-latest @@ -144,3 +148,47 @@ jobs: name: APKs path: '**/build/outputs/apk/**/*.apk' + build_desktop_app: + needs: [ checks, dependency_guard, tests_and_lint ] + strategy: + matrix: + os: + - windows-latest + - ubuntu-latest + - macos-latest + + runs-on: ${{ matrix.os }} + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: 17 + + - name: Build Desktop App + run: ./gradlew packageDistributionForCurrentOS + + - name: Upload Windows Apps + if: matrix.os == 'windows-latest' + uses: actions/upload-artifact@v4 + with: + name: Windows-App + path: | + ./mifospay-desktop/build/compose/binaries/main/exe/*.exe + ./mifospay-desktop/build/compose/binaries/main/msi/*.msi + + - name: Upload Linux App + if: matrix.os == 'ubuntu-latest' + uses: actions/upload-artifact@v4 + with: + name: Windows-App + path: './mifospay-desktop/build/compose/binaries/main/deb/*.deb' + + - name: Upload MacOS App + if: matrix.os == 'macos-latest' + uses: actions/upload-artifact@v4 + with: + name: Windows-App + path: './mifospay-desktop/build/compose/binaries/main/dmg/*.dmg' \ No newline at end of file diff --git a/.github/workflows/monthly.yaml b/.github/workflows/monthly.yaml index 557c0b26d..9f173e9ed 100644 --- a/.github/workflows/monthly.yaml +++ b/.github/workflows/monthly.yaml @@ -2,10 +2,8 @@ name: Bump our Calendar Version on: workflow_dispatch: -# This is a monthly cron job that runs on the first of the month at 3:30 AM UTC -# Turning off for now -# schedule: -# - cron: '30 3 1 * *' + schedule: + - cron: '30 3 1 * *' jobs: tag: name: Tag Monthly Release diff --git a/.github/workflows/weekly.yaml b/.github/workflows/weekly.yaml index 9b8285c07..992cd0011 100644 --- a/.github/workflows/weekly.yaml +++ b/.github/workflows/weekly.yaml @@ -2,10 +2,8 @@ name: Tag Weekly Release on: workflow_dispatch: -# This is a weekly cron job that runs every Sunday at 4:00 AM UTC -# Turning off for now -# schedule: -# - cron: '0 4 * * 0' + schedule: + - cron: '0 4 */2 * 0' jobs: tag: name: Tag Weekly Release @@ -33,9 +31,9 @@ jobs: github.rest.actions.createWorkflowDispatch({ owner: context.repo.owner, repo: context.repo.repo, - workflow_id: 'onPush.yml', - ref: 'master', + workflow_id: 'internal_or_beta_release.yml', + ref: 'dev', inputs: { - "beta": "true", + "release_type": "beta", }, }) diff --git a/Gemfile.lock b/Gemfile.lock index fe069a866..965cf8985 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -209,7 +209,10 @@ GEM xcpretty (~> 0.2, >= 0.0.7) PLATFORMS + arm64-darwin-22 x64-mingw-ucrt + x86_64-linux + DEPENDENCIES fastlane diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..daa7cf37c --- /dev/null +++ b/LICENSE @@ -0,0 +1,117 @@ +Copyright 2024 Mifos Initiative + +Mozilla Public License Version 2.0 (MPL-2.0) + +1. Definitions + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to the + creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used by + a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code Form, + and Modifications of such Source Code Form, in each case including + portions thereof. + +1.5. "Executable Form" + means any form of the work other than Source Code Form. + +1.6. "Non-Commercial Use" + means any use of the work that is not primarily intended for or directed + towards commercial advantage or monetary compensation. + +1.7. "Source Code Form" + means the form of the work preferred for making modifications. + +1.8. "You" (or "Your") + means an individual or a legal entity exercising rights under this License. + For legal entities, "You" includes any entity that controls, is controlled + by, or is under common control with You. For purposes of this definition, + "control" means (a) the power, direct or indirect, to cause the direction + or management of such entity, whether by contract or otherwise, or (b) + ownership of more than fifty percent (50%) of the outstanding shares or + beneficial ownership of such entity. + +2. License Grants and Conditions + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive +license: + +(a) under intellectual property rights (other than patent or trademark) +Licensable by such Contributor to use, reproduce, make available, modify, +display, perform, distribute, and otherwise exploit its Contributions, either +on an unmodified basis, with Modifications, or as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer for +sale, have made, import, and otherwise transfer either its Contributions or +its Contributor Version. + +2.2. Non-Commercial Use + +You are not permitted to use the Covered Software for commercial purposes +without the prior written permission of RW MobiMedia UK Limited. This +includes, but is not limited to, selling the software, incorporating the +software into a product for sale, or offering services involving the +software. Commercial distribution of the software or its derivatives is +prohibited, including uploading the software to the Apple App Store, Google +Play Store, or any other commercial app marketplace, unless authorised by RW +MobiMedia UK Limited. + +2.3. Attribution + +You must give appropriate credit to RW MobiMedia UK Limited and any open-source +contributors, provide a link to the license, and indicate if changes were made. +Attribution must be displayed in a prominent manner in any distributed or published +form of the software, including but not limited to the about page of an application +or documentation files. You may do so in any reasonable manner, but not in any way +that suggests RW MobiMedia UK Limited or any contributors endorse you or your use. + +2.4. Modifications + +If You create Modifications, and such Modifications are not Covered Software, +You agree to release the Modifications under this License or a Compatible +License. + +3. Compliance with Laws + +You must comply with all applicable laws regarding use of the software. + +4. Disclaimer of Warranty + +Covered Software is provided under this License on an "as is" basis, without +warranty of any kind, either expressed, implied, or statutory, including, +without limitation, warranties that the Covered Software is free of defects, +merchantable, fit for a particular purpose or non-infringing. + +5. Limitation of Liability + +To the extent permitted by applicable law, no Contributor will be liable to +You for any damages, including direct, indirect, special, incidental, or +consequential damages arising out of or related to this License or the use or +inability to use the Covered Software (including but not limited to loss of +goodwill, work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses), even if such Contributor has been +advised of the possibility of such damages. + +6. Termination + +The rights granted under this License will terminate automatically if You +fail to comply with any of its terms. Upon termination, You must cease all +use of the Covered Software and destroy all copies of it. + +7. Miscellaneous + +This License represents the complete agreement concerning subject matter +hereof. If any provision of this License is held to be unenforceable, such +provision shall be reformed only to the extent necessary to make it +enforceable. diff --git a/build-logic/convention/src/main/kotlin/org/mifospay/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/org/mifospay/KotlinAndroid.kt index d05ebad92..e53be0455 100644 --- a/build-logic/convention/src/main/kotlin/org/mifospay/KotlinAndroid.kt +++ b/build-logic/convention/src/main/kotlin/org/mifospay/KotlinAndroid.kt @@ -19,7 +19,7 @@ internal fun Project.configureKotlinAndroid( commonExtension: CommonExtension<*, *, *, *, *, *>, ) { commonExtension.apply { - compileSdk = 34 + compileSdk = 35 defaultConfig { minSdk = 26 diff --git a/build-logic/convention/src/main/kotlin/org/mifospay/KotlinMultiplatform.kt b/build-logic/convention/src/main/kotlin/org/mifospay/KotlinMultiplatform.kt index 755cc0009..689c48ccb 100644 --- a/build-logic/convention/src/main/kotlin/org/mifospay/KotlinMultiplatform.kt +++ b/build-logic/convention/src/main/kotlin/org/mifospay/KotlinMultiplatform.kt @@ -2,9 +2,11 @@ package org.mifospay 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(org.jetbrains.kotlin.gradle.ExperimentalWasmDsl::class) +@OptIn(ExperimentalWasmDsl::class, ExperimentalKotlinGradlePluginApi::class) internal fun Project.configureKotlinMultiplatform() { extensions.configure { applyDefaultHierarchyTemplate() @@ -22,19 +24,9 @@ internal fun Project.configureKotlinMultiplatform() { browser() nodejs() } - // Suppress 'expect'/'actual' classes are in Beta. - targets.configureEach { - compilations.configureEach { - compilerOptions.configure { - freeCompilerArgs.addAll("-Xexpect-actual-classes") - } - } - } - // Fixes Cannot locate tasks that match ':core:model:testClasses' as task 'testClasses' - // not found in project ':core:model'. Some candidates are: 'jsTestClasses', 'jvmTestClasses'. - project.tasks.create("testClasses") { - dependsOn("allTests") + compilerOptions { + freeCompilerArgs.add("-Xexpect-actual-classes") } } } \ No newline at end of file diff --git a/core/designsystem/src/commonMain/kotlin/org/mifospay/core/designsystem/component/TextField.kt b/core/designsystem/src/commonMain/kotlin/org/mifospay/core/designsystem/component/TextField.kt index 70cbf7790..9ebab8bbc 100644 --- a/core/designsystem/src/commonMain/kotlin/org/mifospay/core/designsystem/component/TextField.kt +++ b/core/designsystem/src/commonMain/kotlin/org/mifospay/core/designsystem/component/TextField.kt @@ -9,6 +9,7 @@ */ package org.mifospay.core.designsystem.component +import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.collectIsFocusedAsState @@ -28,6 +29,7 @@ import androidx.compose.material3.TextFieldDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.RectangleShape @@ -66,6 +68,7 @@ fun MifosOutlinedTextField( interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, ) { val isFocused by interactionSource.collectIsFocusedAsState() + val showIcon by rememberUpdatedState(value.isNotEmpty()) MifosCustomTextField( modifier = modifier.fillMaxWidth(), @@ -81,14 +84,18 @@ fun MifosOutlinedTextField( singleLine = singleLine, leadingIcon = leadingIcon, trailingIcon = @Composable { - if (showClearIcon && isFocused) { - ClearIconButton( - showClearIcon = true, - clearIcon = clearIcon, - onClickClearIcon = onClickClearIcon, - ) - } else { - trailingIcon?.invoke() + AnimatedContent( + targetState = showClearIcon && isFocused && showIcon, + ) { + if (it) { + ClearIconButton( + showClearIcon = true, + clearIcon = clearIcon, + onClickClearIcon = onClickClearIcon, + ) + } else { + trailingIcon?.invoke() + } } }, keyboardActions = KeyboardActions { @@ -127,6 +134,7 @@ fun MifosTextField( leadingIcon: @Composable (() -> Unit)? = null, ) { val isFocused by interactionSource.collectIsFocusedAsState() + val showIcon by rememberUpdatedState(value.isNotEmpty()) MifosCustomTextField( value = value, @@ -146,14 +154,18 @@ fun MifosTextField( leadingIcon = leadingIcon, isError = isError, trailingIcon = @Composable { - if (showClearIcon && isFocused) { - ClearIconButton( - showClearIcon = true, - clearIcon = clearIcon, - onClickClearIcon = onClickClearIcon, - ) - } else { - trailingIcon?.invoke() + AnimatedContent( + targetState = showClearIcon && isFocused && showIcon, + ) { + if (it) { + ClearIconButton( + showClearIcon = true, + clearIcon = clearIcon, + onClickClearIcon = onClickClearIcon, + ) + } else { + trailingIcon?.invoke() + } } }, supportingText = errorText?.let { diff --git a/core/network/consumer-rules.pro b/core/network/consumer-rules.pro index 589d19f63..e0462baa6 100644 --- a/core/network/consumer-rules.pro +++ b/core/network/consumer-rules.pro @@ -1,2 +1,22 @@ -keep class io.ktor.** { *; } --keep class kotlinx.serialization.** { *; } \ No newline at end of file +-keep class kotlinx.serialization.** { *; } +-dontwarn io.ktor.client.network.sockets.SocketTimeoutException +-dontwarn java.lang.management.RuntimeMXBean + +# JSR 305 annotations are for embedding nullability information. +-dontwarn javax.annotation.** + +# A resource is loaded with a relative path so the package of this class must be preserved. +-keeppackagenames okhttp3.internal.publicsuffix.* +-adaptresourcefilenames okhttp3/internal/publicsuffix/PublicSuffixDatabase.gz + +# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java. +-dontwarn org.codehaus.mojo.animal_sniffer.* + +# OkHttp platform used only on JVM and when Conscrypt and other security providers are available. +-dontwarn okhttp3.internal.platform.** +-dontwarn org.conscrypt.** +-dontwarn org.bouncycastle.** +-dontwarn org.openjsse.** + +-keep class org.mifospay.core.network.services.* { *;} \ No newline at end of file diff --git a/fastlane/FastFile b/fastlane/FastFile index 00428123f..8d73fc365 100644 --- a/fastlane/FastFile +++ b/fastlane/FastFile @@ -5,7 +5,7 @@ platform :android do lane :deploy_internal do supply( track: 'internal', - aab: 'app/build/outputs/bundle/prod/app-prod-release.aab', + aab: 'mifospay-android/build/outputs/bundle/prodRelease/mifospay-android-prod-release.aab', skip_upload_metadata: true, skip_upload_images: true, skip_upload_screenshots: true, @@ -40,7 +40,7 @@ platform :android do client_id: ENV["AMAZON_APPSTORE_CLIENT_ID"], client_secret: ENV["AMAZON_APPSTORE_CLIENT_SECRET"], app_id: ENV["AMAZON_APPSTORE_APP_ID"], - apk_path: "app/build/outputs/apk/prod/release/app-prod-release.apk", + apk_path: "mifospay-android/build/outputs/apk/prod/release/mifospay-android-prod-release.apk", upload_apk: true, changelogs_path: "fastlane/metadata/android/en-US/changelogs/", upload_changelogs: true, diff --git a/feature/auth/build.gradle.kts b/feature/auth/build.gradle.kts index 637fd9a73..02ea83392 100644 --- a/feature/auth/build.gradle.kts +++ b/feature/auth/build.gradle.kts @@ -29,8 +29,6 @@ kotlin { implementation(compose.ui) implementation(compose.components.resources) implementation(compose.components.uiToolingPreview) - implementation(libs.koin.compose.viewmodel) - implementation(libs.koin.compose) implementation(libs.jb.kotlin.stdlib) implementation(libs.kotlin.reflect) } diff --git a/feature/auth/src/commonMain/kotlin/org/mifospay/feature/auth/login/LoginScreen.kt b/feature/auth/src/commonMain/kotlin/org/mifospay/feature/auth/login/LoginScreen.kt index 2e6b105ef..fb72f38bd 100644 --- a/feature/auth/src/commonMain/kotlin/org/mifospay/feature/auth/login/LoginScreen.kt +++ b/feature/auth/src/commonMain/kotlin/org/mifospay/feature/auth/login/LoginScreen.kt @@ -10,6 +10,7 @@ package org.mifospay.feature.auth.login import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues @@ -21,8 +22,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Scaffold -import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -31,6 +30,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle @@ -50,6 +50,7 @@ import org.mifospay.core.designsystem.component.MifosBasicDialog import org.mifospay.core.designsystem.component.MifosButton import org.mifospay.core.designsystem.component.MifosLoadingDialog import org.mifospay.core.designsystem.component.MifosOutlinedTextField +import org.mifospay.core.designsystem.component.MifosScaffold import org.mifospay.core.designsystem.theme.MifosTheme import org.mifospay.core.designsystem.theme.grey import org.mifospay.core.designsystem.theme.styleNormal18sp @@ -64,9 +65,10 @@ internal fun LoginScreen( modifier: Modifier = Modifier, viewModel: LoginViewModel = koinViewModel(), ) { - val state by viewModel.stateFlow.collectAsStateWithLifecycle() - val snackbarHostState = remember { SnackbarHostState() } val scope = rememberCoroutineScope() + val snackbarHostState = remember { SnackbarHostState() } + + val state by viewModel.stateFlow.collectAsStateWithLifecycle() EventsEffect(viewModel) { event -> when (event) { @@ -88,18 +90,34 @@ internal fun LoginScreen( }, ) - Scaffold( - snackbarHost = { SnackbarHost(snackbarHostState) }, + LoginScreen( + state = state, + snackbarHostState = snackbarHostState, + modifier = modifier, + onAction = remember(viewModel) { + { viewModel.trySendAction(it) } + }, + ) +} + +@Composable +private fun LoginScreen( + state: LoginState, + snackbarHostState: SnackbarHostState, + modifier: Modifier = Modifier, + onAction: (LoginAction) -> Unit, +) { + MifosScaffold( + snackbarHostState = snackbarHostState, modifier = modifier.fillMaxSize(), containerColor = MaterialTheme.colorScheme.background, ) { paddingValues -> LoginScreenContent( state = state, - onEvent = remember(viewModel) { - { viewModel.trySendAction(it) } - }, - modifier = modifier.padding(paddingValues), - navigateToSignupScreen = navigateToSignupScreen, + onAction = onAction, + modifier = modifier + .fillMaxSize() + .padding(paddingValues), ) } } @@ -128,9 +146,8 @@ private fun LoginDialogs( @Composable private fun LoginScreenContent( state: LoginState, - onEvent: (LoginAction) -> Unit, modifier: Modifier = Modifier, - navigateToSignupScreen: () -> Unit, + onAction: (LoginAction) -> Unit, ) { Column( modifier = modifier @@ -156,7 +173,7 @@ private fun LoginScreenContent( label = stringResource(Res.string.feature_auth_username), value = state.username, onValueChange = { - onEvent(LoginAction.UsernameChanged(it)) + onAction(LoginAction.UsernameChanged(it)) }, modifier = Modifier.fillMaxWidth(), ) @@ -165,12 +182,12 @@ private fun LoginScreenContent( label = stringResource(Res.string.feature_auth_password), value = state.password, onValueChange = { - onEvent(LoginAction.PasswordChanged(it)) + onAction(LoginAction.PasswordChanged(it)) }, modifier = Modifier.fillMaxWidth(), showPassword = state.isPasswordVisible, showPasswordChange = { - onEvent(LoginAction.TogglePasswordVisibility) + onAction(LoginAction.TogglePasswordVisibility) }, ) val isLoginButtonEnabled = state.username.isNotEmpty() && state.password.isNotEmpty() @@ -180,7 +197,7 @@ private fun LoginScreenContent( .padding(top = 16.dp), enabled = isLoginButtonEnabled, onClick = { - onEvent(LoginAction.LoginClicked) + onAction(LoginAction.LoginClicked) }, contentPadding = PaddingValues(12.dp), ) { @@ -191,7 +208,11 @@ private fun LoginScreenContent( ) } - SignupButton { navigateToSignupScreen() } + SignupButton( + navigateToSignupScreen = { + onAction(LoginAction.SignupClicked) + }, + ) } } @@ -211,11 +232,16 @@ private fun SignupButton( color = MaterialTheme.colorScheme.onSurface, ) Text( - modifier = Modifier.clickable { + modifier = Modifier.clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null, + ) { navigateToSignupScreen() }, text = stringResource(Res.string.feature_auth_sign_up), - style = MaterialTheme.typography.titleMedium.copy( + fontWeight = FontWeight.Bold, + color = MaterialTheme.colorScheme.primary, + style = MaterialTheme.typography.labelLarge.copy( textDecoration = TextDecoration.Underline, ), ) @@ -226,10 +252,10 @@ private fun SignupButton( @Composable private fun LoanScreenPreview() { MifosTheme { - LoginScreenContent( + LoginScreen( state = LoginState(dialogState = null), - onEvent = {}, - navigateToSignupScreen = {}, + snackbarHostState = remember { SnackbarHostState() }, + onAction = {}, ) } } diff --git a/feature/auth/src/commonMain/kotlin/org/mifospay/feature/auth/navigation/MobileVerificationScreenNavigation.kt b/feature/auth/src/commonMain/kotlin/org/mifospay/feature/auth/navigation/MobileVerificationScreenNavigation.kt index 5bd912564..b355c91b8 100644 --- a/feature/auth/src/commonMain/kotlin/org/mifospay/feature/auth/navigation/MobileVerificationScreenNavigation.kt +++ b/feature/auth/src/commonMain/kotlin/org/mifospay/feature/auth/navigation/MobileVerificationScreenNavigation.kt @@ -13,7 +13,7 @@ package org.mifospay.feature.auth.navigation import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder -import androidx.navigation.compose.composable +import org.mifospay.core.ui.composableWithSlideTransitions import org.mifospay.feature.auth.mobileVerify.MobileVerificationScreen const val MOBILE_VERIFICATION_ROUTE = "mobile_verification_route" @@ -22,7 +22,7 @@ fun NavGraphBuilder.mobileVerificationScreen( onNavigateBack: () -> Unit, onOtpVerificationSuccess: (String) -> Unit, ) { - composable( + composableWithSlideTransitions( route = MOBILE_VERIFICATION_ROUTE, ) { MobileVerificationScreen( diff --git a/feature/auth/src/commonMain/kotlin/org/mifospay/feature/auth/navigation/SignupScreenNavigation.kt b/feature/auth/src/commonMain/kotlin/org/mifospay/feature/auth/navigation/SignupScreenNavigation.kt index e3d961162..91c909564 100644 --- a/feature/auth/src/commonMain/kotlin/org/mifospay/feature/auth/navigation/SignupScreenNavigation.kt +++ b/feature/auth/src/commonMain/kotlin/org/mifospay/feature/auth/navigation/SignupScreenNavigation.kt @@ -14,8 +14,8 @@ package org.mifospay.feature.auth.navigation import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavType -import androidx.navigation.compose.composable import androidx.navigation.navArgument +import org.mifospay.core.ui.composableWithPushTransitions import org.mifospay.feature.auth.signup.SignupScreen const val SIGNUP_ROUTE = "signup_route" @@ -24,7 +24,7 @@ fun NavGraphBuilder.signupScreen( onNavigateBack: () -> Unit, onNavigateToLogin: (String) -> Unit, ) { - composable( + composableWithPushTransitions( route = "$SIGNUP_ROUTE?savingsProductId={savingsProductId}" + "&mobileNumber={mobileNumber}&businessName={businessName}", arguments = listOf( diff --git a/feature/auth/src/commonMain/kotlin/org/mifospay/feature/auth/signup/SignupScreen.kt b/feature/auth/src/commonMain/kotlin/org/mifospay/feature/auth/signup/SignupScreen.kt index 106ff660e..b3967a306 100644 --- a/feature/auth/src/commonMain/kotlin/org/mifospay/feature/auth/signup/SignupScreen.kt +++ b/feature/auth/src/commonMain/kotlin/org/mifospay/feature/auth/signup/SignupScreen.kt @@ -13,11 +13,13 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.verticalScroll +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.SnackbarHostState @@ -33,6 +35,8 @@ import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.text.input.KeyboardCapitalization +import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import kotlinx.coroutines.launch @@ -67,7 +71,6 @@ import org.mifospay.core.ui.MifosPasswordField import org.mifospay.core.ui.PasswordStrengthIndicator import org.mifospay.core.ui.utils.EventsEffect -@OptIn(ExperimentalMaterial3Api::class) @Composable internal fun SignupScreen( onNavigateBack: () -> Unit, @@ -75,10 +78,10 @@ internal fun SignupScreen( modifier: Modifier = Modifier, viewModel: SignupViewModel = koinViewModel(), ) { - val state by viewModel.stateFlow.collectAsStateWithLifecycle() - val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState()) - val snackbarHostState = remember { SnackbarHostState() } val scope = rememberCoroutineScope() + val snackbarHostState = remember { SnackbarHostState() } + + val state by viewModel.stateFlow.collectAsStateWithLifecycle() EventsEffect(viewModel) { event -> when (event) { @@ -99,9 +102,30 @@ internal fun SignupScreen( }, ) + SignupScreen( + state = state, + snackbarHostState = snackbarHostState, + modifier = modifier, + onAction = remember(viewModel) { + { viewModel.trySendAction(it) } + }, + ) +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +private fun SignupScreen( + state: SignUpState, + snackbarHostState: SnackbarHostState, + modifier: Modifier = Modifier, + onAction: (SignUpAction) -> Unit, +) { + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState()) + MifosScaffold( snackbarHostState = snackbarHostState, modifier = modifier, + containerColor = MaterialTheme.colorScheme.background, topBar = { MifosTopAppBar( title = stringResource(Res.string.feature_auth_complete_your_registration), @@ -109,8 +133,8 @@ internal fun SignupScreen( scrollBehavior = scrollBehavior, navigationIcon = MifosIcons.Back, navigationIconContentDescription = "Back", - onNavigationIconClick = remember(viewModel) { - { viewModel.trySendAction(SignUpAction.CloseClick) } + onNavigationIconClick = { + onAction(SignUpAction.CloseClick) }, ) }, @@ -118,192 +142,239 @@ internal fun SignupScreen( SignupScreenContent( modifier = Modifier.padding(it), state = state, - onAction = viewModel::trySendAction, + onAction = onAction, ) } } -@Composable -private fun SignUpDialogs( - dialogState: SignUpDialog?, - onDismissRequest: () -> Unit, -) { - when (dialogState) { - is SignUpDialog.Error -> MifosBasicDialog( - visibilityState = BasicDialogState.Shown( - message = dialogState.message, - ), - onDismissRequest = onDismissRequest, - ) - - is SignUpDialog.Loading -> MifosLoadingDialog( - visibilityState = LoadingDialogState.Shown, - ) - - null -> Unit - } -} - @Composable private fun SignupScreenContent( modifier: Modifier = Modifier, state: SignUpState, onAction: (SignUpAction) -> Unit, ) { - Column( + LazyColumn( modifier = modifier - .fillMaxSize() - .verticalScroll(rememberScrollState()) - .padding(horizontal = 16.dp), + .fillMaxSize(), + contentPadding = PaddingValues(12.dp), verticalArrangement = Arrangement.spacedBy(8.dp), ) { - MifosOutlinedTextField( - value = state.firstNameInput, - label = stringResource(Res.string.feature_auth_first_name), - modifier = Modifier.fillMaxWidth(), - onValueChange = { - onAction(SignUpAction.FirstNameInputChange(it)) - }, - isError = state.firstNameInput.isEmpty(), - ) - - MifosOutlinedTextField( - value = state.lastNameInput, - label = stringResource(Res.string.feature_auth_last_name), - modifier = Modifier.fillMaxWidth(), - onValueChange = { - onAction(SignUpAction.LastNameInputChange(it)) - }, - isError = state.lastNameInput.isEmpty(), - ) + item { + MifosOutlinedTextField( + value = state.firstNameInput, + label = stringResource(Res.string.feature_auth_first_name), + modifier = Modifier.fillMaxWidth(), + isError = state.firstNameInput.isEmpty(), + keyboardOptions = KeyboardOptions( + capitalization = KeyboardCapitalization.Words, + ), + onValueChange = { + onAction(SignUpAction.FirstNameInputChange(it)) + }, + ) + } - MifosOutlinedTextField( - value = state.userNameInput, - label = stringResource(Res.string.feature_auth_username), - modifier = Modifier.fillMaxWidth(), - onValueChange = { - onAction(SignUpAction.UserNameInputChange(it)) - }, - isError = state.userNameInput.isEmpty(), - ) + item { + MifosOutlinedTextField( + value = state.lastNameInput, + label = stringResource(Res.string.feature_auth_last_name), + modifier = Modifier.fillMaxWidth(), + isError = state.lastNameInput.isEmpty(), + keyboardOptions = KeyboardOptions( + capitalization = KeyboardCapitalization.Words, + ), + onValueChange = { + onAction(SignUpAction.LastNameInputChange(it)) + }, + ) + } - MifosOutlinedTextField( - value = state.emailInput, - label = stringResource(Res.string.feature_auth_email), - modifier = Modifier.fillMaxWidth(), - onValueChange = { - onAction(SignUpAction.EmailInputChange(it)) - }, - isError = state.emailInput.isEmpty(), - ) + item { + MifosOutlinedTextField( + value = state.userNameInput, + label = stringResource(Res.string.feature_auth_username), + modifier = Modifier.fillMaxWidth(), + isError = state.userNameInput.isEmpty(), + keyboardOptions = KeyboardOptions( + capitalization = KeyboardCapitalization.None, + ), + onValueChange = { + onAction(SignUpAction.UserNameInputChange(it)) + }, + ) + } - MifosOutlinedTextField( - value = state.mobileNumberInput, - label = stringResource(Res.string.feature_auth_mobile_no), - modifier = Modifier.fillMaxWidth(), - onValueChange = { - onAction(SignUpAction.MobileNumberInputChange(it)) - }, - isError = state.mobileNumberInput.isEmpty(), - ) + item { + MifosOutlinedTextField( + value = state.emailInput, + label = stringResource(Res.string.feature_auth_email), + modifier = Modifier.fillMaxWidth(), + isError = state.emailInput.isEmpty(), + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Email, + ), + onValueChange = { + onAction(SignUpAction.EmailInputChange(it)) + }, + ) + } - var showPassword by rememberSaveable { mutableStateOf(false) } + item { + MifosOutlinedTextField( + value = state.mobileNumberInput, + label = stringResource(Res.string.feature_auth_mobile_no), + modifier = Modifier.fillMaxWidth(), + isError = state.mobileNumberInput.isEmpty(), + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Phone, + ), + onValueChange = { + onAction(SignUpAction.MobileNumberInputChange(it)) + }, + ) + } - MifosPasswordField( - value = state.passwordInput, - label = stringResource(Res.string.feature_auth_password), - modifier = Modifier.fillMaxWidth(), - onValueChange = { - onAction(SignUpAction.PasswordInputChange(it)) - }, - showPassword = showPassword, - showPasswordChange = { showPassword = !showPassword }, - ) - PasswordStrengthIndicator( - modifier = Modifier.padding(horizontal = 16.dp), - state = state.passwordStrengthState, - currentCharacterCount = state.passwordInput.length, - ) - MifosPasswordField( - value = state.confirmPasswordInput, - label = stringResource(Res.string.feature_auth_confirm_password), - modifier = Modifier.fillMaxWidth(), - onValueChange = { - onAction(SignUpAction.ConfirmPasswordInputChange(it)) - }, - showPassword = showPassword, - showPasswordChange = { showPassword = !showPassword }, - ) + item { + Column { + var showPassword by rememberSaveable { mutableStateOf(false) } - MifosOutlinedTextField( - value = state.addressLine1Input, - label = stringResource(Res.string.feature_auth_address_line_1), - modifier = Modifier.fillMaxWidth(), - onValueChange = { - onAction(SignUpAction.AddressLine1InputChange(it)) - }, - isError = state.addressLine1Input.isEmpty(), - ) + MifosPasswordField( + value = state.passwordInput, + label = stringResource(Res.string.feature_auth_password), + modifier = Modifier.fillMaxWidth(), + onValueChange = { + onAction(SignUpAction.PasswordInputChange(it)) + }, + showPassword = showPassword, + showPasswordChange = { showPassword = !showPassword }, + ) + Spacer(modifier = Modifier.height(4.dp)) + PasswordStrengthIndicator( + modifier = Modifier.fillMaxWidth(), + state = state.passwordStrengthState, + currentCharacterCount = state.passwordInput.length, + ) + } + } - MifosOutlinedTextField( - value = state.addressLine2Input, - modifier = Modifier.fillMaxWidth(), - label = stringResource(Res.string.feature_auth_address_line_2), - onValueChange = { - onAction(SignUpAction.AddressLine2InputChange(it)) - }, - isError = state.addressLine2Input.isEmpty(), - ) + item { + var showPassword by rememberSaveable { mutableStateOf(false) } - MifosOutlinedTextField( - value = state.pinCodeInput, - label = stringResource(Res.string.feature_auth_pin_code), - modifier = Modifier.fillMaxWidth(), - onValueChange = { - onAction(SignUpAction.PinCodeInputChange(it)) - }, - isError = state.pinCodeInput.isEmpty(), - ) + MifosPasswordField( + value = state.confirmPasswordInput, + label = stringResource(Res.string.feature_auth_confirm_password), + modifier = Modifier.fillMaxWidth(), + onValueChange = { + onAction(SignUpAction.ConfirmPasswordInputChange(it)) + }, + showPassword = showPassword, + showPasswordChange = { showPassword = !showPassword }, + ) + } - Row( - modifier = Modifier.fillMaxWidth(), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.spacedBy(8.dp), - ) { + item { MifosOutlinedTextField( - value = state.countryInput, - label = stringResource(Res.string.feature_auth_country), + value = state.addressLine1Input, + label = stringResource(Res.string.feature_auth_address_line_1), + modifier = Modifier.fillMaxWidth(), + isError = state.addressLine1Input.isEmpty(), onValueChange = { - onAction(SignUpAction.CountryInputChange(it)) + onAction(SignUpAction.AddressLine1InputChange(it)) }, - modifier = Modifier.weight(1.5f), - isError = state.countryInput.isEmpty(), ) + } + item { MifosOutlinedTextField( - value = state.stateInput, - label = stringResource(Res.string.feature_auth_state), + value = state.addressLine2Input, + modifier = Modifier.fillMaxWidth(), + label = stringResource(Res.string.feature_auth_address_line_2), + isError = state.addressLine2Input.isEmpty(), onValueChange = { - onAction(SignUpAction.StateInputChange(it)) + onAction(SignUpAction.AddressLine2InputChange(it)) }, - modifier = Modifier.weight(1.5f), - isError = state.stateInput.isEmpty(), ) } - MifosButton( - modifier = Modifier - .fillMaxWidth(), - color = MaterialTheme.colorScheme.primary, - enabled = true, - onClick = { - onAction(SignUpAction.SubmitClick) - }, - contentPadding = PaddingValues(12.dp), - ) { - Text( - text = stringResource(Res.string.feature_auth_complete), + item { + MifosOutlinedTextField( + value = state.pinCodeInput, + label = stringResource(Res.string.feature_auth_pin_code), + modifier = Modifier.fillMaxWidth(), + isError = state.pinCodeInput.isEmpty(), + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Number, + ), + onValueChange = { + onAction(SignUpAction.PinCodeInputChange(it)) + }, ) } + + item { + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(8.dp), + ) { + MifosOutlinedTextField( + value = state.countryInput, + label = stringResource(Res.string.feature_auth_country), + onValueChange = { + onAction(SignUpAction.CountryInputChange(it)) + }, + modifier = Modifier.weight(1.5f), + isError = state.countryInput.isEmpty(), + ) + + MifosOutlinedTextField( + value = state.stateInput, + label = stringResource(Res.string.feature_auth_state), + onValueChange = { + onAction(SignUpAction.StateInputChange(it)) + }, + modifier = Modifier.weight(1.5f), + isError = state.stateInput.isEmpty(), + ) + } + } + + item { + MifosButton( + modifier = Modifier + .fillMaxWidth(), + color = MaterialTheme.colorScheme.primary, + enabled = true, + onClick = { + onAction(SignUpAction.SubmitClick) + }, + contentPadding = PaddingValues(12.dp), + ) { + Text( + text = stringResource(Res.string.feature_auth_complete), + ) + } + } + } +} + +@Composable +private fun SignUpDialogs( + dialogState: SignUpDialog?, + onDismissRequest: () -> Unit, +) { + when (dialogState) { + is SignUpDialog.Error -> MifosBasicDialog( + visibilityState = BasicDialogState.Shown( + message = dialogState.message, + ), + onDismissRequest = onDismissRequest, + ) + + is SignUpDialog.Loading -> MifosLoadingDialog( + visibilityState = LoadingDialogState.Shown, + ) + + null -> Unit } } diff --git a/feature/home/build.gradle.kts b/feature/home/build.gradle.kts index 6f819bc4b..7d1fd3669 100644 --- a/feature/home/build.gradle.kts +++ b/feature/home/build.gradle.kts @@ -25,9 +25,6 @@ kotlin { implementation(compose.material3) implementation(compose.components.resources) implementation(compose.components.uiToolingPreview) - - implementation(libs.koin.compose.viewmodel) - implementation(libs.koin.compose) } } } \ No newline at end of file diff --git a/feature/merchants/src/commonMain/kotlin/org/mifospay/feature/merchants/ui/MerchantScreen.kt b/feature/merchants/src/commonMain/kotlin/org/mifospay/feature/merchants/ui/MerchantScreen.kt index ef9b3aa28..c1559bbd0 100644 --- a/feature/merchants/src/commonMain/kotlin/org/mifospay/feature/merchants/ui/MerchantScreen.kt +++ b/feature/merchants/src/commonMain/kotlin/org/mifospay/feature/merchants/ui/MerchantScreen.kt @@ -21,6 +21,7 @@ import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.SearchBar +import androidx.compose.material3.SearchBarDefaults import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -212,34 +213,48 @@ private fun SearchBarScreen( modifier: Modifier = Modifier, ) { SearchBar( + inputField = { + SearchBarDefaults.InputField( + query = query, + onQueryChange = onQueryChange, + onSearch = onSearch, + expanded = false, + onExpandedChange = {}, + enabled = true, + placeholder = { + Text(text = stringResource(Res.string.feature_merchants_search)) + }, + leadingIcon = { + Icon( + imageVector = MifosIcons.Search, + contentDescription = stringResource(Res.string.feature_merchants_search), + ) + }, + trailingIcon = { + IconButton( + onClick = onClearQuery, + ) { + Icon( + imageVector = MifosIcons.Close, + contentDescription = stringResource(Res.string.feature_merchants_close), + ) + } + }, + interactionSource = null, + ) + }, + expanded = false, + onExpandedChange = {}, modifier = modifier .fillMaxWidth() .padding(vertical = 16.dp, horizontal = 16.dp), - query = query, - onQueryChange = onQueryChange, - onSearch = onSearch, - active = false, - onActiveChange = { }, - placeholder = { - Text(text = stringResource(Res.string.feature_merchants_search)) - }, - leadingIcon = { - Icon( - imageVector = MifosIcons.Search, - contentDescription = stringResource(Res.string.feature_merchants_search), - ) - }, - trailingIcon = { - IconButton( - onClick = onClearQuery, - ) { - Icon( - imageVector = MifosIcons.Close, - contentDescription = stringResource(Res.string.feature_merchants_close), - ) - } - }, - ) {} + shape = SearchBarDefaults.inputFieldShape, + colors = SearchBarDefaults.colors(), + tonalElevation = SearchBarDefaults.TonalElevation, + shadowElevation = SearchBarDefaults.ShadowElevation, + windowInsets = SearchBarDefaults.windowInsets, + content = {}, + ) } @Preview diff --git a/feature/profile/build.gradle.kts b/feature/profile/build.gradle.kts index c8316537d..3025104ba 100644 --- a/feature/profile/build.gradle.kts +++ b/feature/profile/build.gradle.kts @@ -34,14 +34,4 @@ kotlin { implementation(libs.filekit.compose) } } -} - -compose.desktop { - application { - nativeDistributions { - linux { - modules("jdk.security.auth") - } - } - } } \ No newline at end of file diff --git a/feature/qr/build.gradle.kts b/feature/qr/build.gradle.kts index ec3069ca8..aeb1583d4 100644 --- a/feature/qr/build.gradle.kts +++ b/feature/qr/build.gradle.kts @@ -47,13 +47,3 @@ kotlin { } } } - -compose.desktop { - application { - nativeDistributions { - linux { - modules("jdk.security.auth") - } - } - } -} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 577ab461e..41da833cc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -52,4 +52,5 @@ org.jetbrains.compose.experimental.jscanvas.enabled=true RblClientIdProp=a RblClientSecretProp=b -kotlin.native.ignoreDisabledTargets=true \ No newline at end of file +kotlin.native.ignoreDisabledTargets=true +kotlin.mpp.androidGradlePluginCompatibility.nowarn=true \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 17bed6764..88a3b49e7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,26 +2,26 @@ accompanist = "0.34.0" # Android -androidDesugarJdkLibs = "2.1.2" -androidGradlePlugin = "8.5.2" -androidTools = "31.5.2" +androidDesugarJdkLibs = "2.1.3" +androidGradlePlugin = "8.7.2" +androidTools = "31.7.2" # AndroidX Dependencies androidx-test-ext-junit = "1.2.1" androidxActivity = "1.9.3" androidxBrowser = "1.8.0" -androidxComposeBom = "2024.10.01" +androidxComposeBom = "2024.11.00" androidxComposeCompiler = "1.5.15" androidxComposeMaterial3Adaptive = "1.0.0" androidxComposeRuntimeTracing = "1.7.5" androidxCoreSplashscreen = "1.0.1" androidxLifecycle = "2.8.7" androidxMetrics = "1.0.0-beta01" -androidxNavigation = "2.8.3" +androidxNavigation = "2.8.4" androidxProfileinstaller = "1.4.1" androidxTracing = "1.3.0-alpha02" appcompatVersion = "1.7.0" -coreKtxVersion = "1.13.1" +coreKtxVersion = "1.15.0" # KotlinX Dependencies lifecycleExtensionsVersion = "2.2.0" @@ -65,28 +65,27 @@ versionCatalogLinterVersion = "1.0.3" fineractSdk = "1.0.3" # Firebase -firebaseBom = "33.5.1" +firebaseBom = "33.6.0" firebaseCrashlyticsPlugin = "3.0.2" firebasePerfPlugin = "1.4.2" # Kotlin KMP Dependencies -kotlin = "2.0.20" +kotlin = "2.0.21" kotlinInject = "0.7.2" kotlinxCoroutines = "1.9.0" kotlinxDatetime = "0.6.1" kotlinxImmutable = "0.3.8" -kotlinxSerializationJson = "1.7.2" -ksp = "2.0.20-1.0.25" +kotlinxSerializationJson = "1.7.3" +ksp = "2.0.21-1.0.27" # Ktor & Ktorfit -ktorVersion = "3.0.0-rc-1" -ktorfit = "2.1.0" -ktorfitKsp = "2.1.0-1.0.25" +ktorVersion = "3.0.1" +ktorfit = "2.2.0" +ktorfitKsp = "2.2.0-1.0.27" # Koin CMP Dependencies -koin = "4.0.0-RC2" +koin = "4.0.0" koinAnnotationsVersion = "1.4.0-RC4" -koinComposeMultiplatform = "1.2.0-Beta4" # CMP Libraries compose-plugin = "1.7.0-rc01" @@ -232,9 +231,9 @@ koin-androidx-compose = { group = "io.insert-koin", name = "koin-androidx-compos 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 = "koinComposeMultiplatform" } -koin-compose-viewmodel = { group = "io.insert-koin", name = "koin-compose-viewmodel", version.ref = "koinComposeMultiplatform" } -koin-compose-navigation = { group = "io.insert-koin", name = "koin-compose-viewmodel-navigation", version.ref = "koinComposeMultiplatform" } +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" } @@ -278,9 +277,9 @@ ktor-client-winhttp = { group = "io.ktor", name = "ktor-client-winhttp", version 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-converters-flow = { group = "de.jensklingenberg.ktorfit", name = "ktorfit-converters-flow", version.ref = "ktorfit" } ktorfit-ksp = { group = "de.jensklingenberg.ktorfit", name = "ktorfit-ksp", version.ref = "ktorfitKsp" } -ktorfit-lib = { group = "de.jensklingenberg.ktorfit", name = "ktorfit-lib-ktor-3.0.0-beta-2", version.ref = "ktorfit" } +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" } diff --git a/mifospay-android/dependencies/prodReleaseRuntimeClasspath.tree.txt b/mifospay-android/dependencies/prodReleaseRuntimeClasspath.tree.txt index d6f4a656b..553c93d77 100644 --- a/mifospay-android/dependencies/prodReleaseRuntimeClasspath.tree.txt +++ b/mifospay-android/dependencies/prodReleaseRuntimeClasspath.tree.txt @@ -1,19 +1,19 @@ -+--- androidx.databinding:databinding-common:8.5.2 -+--- androidx.databinding:databinding-runtime:8.5.2 ++--- androidx.databinding:databinding-common:8.7.2 ++--- androidx.databinding:databinding-runtime:8.7.2 | +--- androidx.collection:collection:1.0.0 -> 1.4.4 | | \--- androidx.collection:collection-jvm:1.4.4 | | +--- androidx.annotation:annotation:1.8.1 | | | \--- androidx.annotation:annotation-jvm:1.8.1 -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.0.20 +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.0.21 | | | +--- org.jetbrains:annotations:13.0 -> 23.0.0 -| | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 2.0.20 (c) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0 -> 2.0.20 (c) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib-common:2.0.20 (c) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 1.9.20 (c) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0 -> 1.9.20 (c) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21 (c) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | +--- androidx.collection:collection-ktx:1.4.4 (c) | | \--- androidx.collection:collection-ktx:1.3.0 -> 1.4.4 (c) -| +--- androidx.databinding:databinding-common:8.5.2 -| +--- androidx.databinding:viewbinding:8.5.2 +| +--- androidx.databinding:databinding-common:8.7.2 +| +--- androidx.databinding:viewbinding:8.7.2 | | \--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*) | \--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.8.7 | \--- androidx.lifecycle:lifecycle-runtime-android:2.8.7 @@ -26,17 +26,17 @@ | +--- androidx.lifecycle:lifecycle-common:2.8.7 | | \--- androidx.lifecycle:lifecycle-common-jvm:2.8.7 | | +--- androidx.annotation:annotation:1.8.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.9.0 | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0 | | | +--- org.jetbrains:annotations:23.0.0 -| | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0 -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 (c) -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0 (c) -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (c) -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.9.0 (c) -| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.9.0 (c) -| | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.9.0 (c) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0 +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 (c) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0 (c) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (c) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.9.0 (c) +| | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.9.0 (c) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.21 (*) | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c) | | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c) | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.7 (c) @@ -61,11 +61,11 @@ | | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*) | | | \--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (c) | | \--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava -| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.9.0 | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0 (*) -| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.21 (*) | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c) | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c) | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c) @@ -79,21 +79,21 @@ | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (c) | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7 (c) | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c) -+--- androidx.databinding:databinding-adapters:8.5.2 -| +--- androidx.databinding:databinding-runtime:8.5.2 (*) -| \--- androidx.databinding:databinding-common:8.5.2 -+--- androidx.databinding:databinding-ktx:8.5.2 -| +--- androidx.databinding:databinding-runtime:8.5.2 (*) -| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20 -> 2.0.20 -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 -| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) ++--- androidx.databinding:databinding-adapters:8.7.2 +| +--- androidx.databinding:databinding-runtime:8.7.2 (*) +| \--- androidx.databinding:databinding-common:8.7.2 ++--- androidx.databinding:databinding-ktx:8.7.2 +| +--- androidx.databinding:databinding-runtime:8.7.2 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20 +| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.20 -> 2.0.21 (*) +| | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.20 +| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.20 -> 2.0.21 (*) | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1 -> 1.9.0 (*) | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.1 -> 2.8.7 | | \--- androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.7 | | +--- androidx.annotation:annotation:1.8.0 -> 1.8.1 (*) | | +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.9.0 (*) | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c) | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c) @@ -115,7 +115,7 @@ | | | +--- androidx.arch.core:core-common:2.2.0 (*) | | | +--- androidx.arch.core:core-runtime:2.2.0 (*) | | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c) | | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c) | | | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c) @@ -131,7 +131,7 @@ | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c) | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7 | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.7 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c) | | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c) | | | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c) @@ -145,7 +145,7 @@ | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (c) | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7 (c) | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.9.0 (*) | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c) | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c) @@ -164,7 +164,7 @@ | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*) | | +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (*) | | +--- androidx.startup:startup-runtime:1.1.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c) | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c) | | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c) @@ -180,7 +180,7 @@ | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c) | +--- androidx.lifecycle:lifecycle-service:2.6.1 -> 2.8.7 | | +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c) | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c) | | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c) @@ -197,7 +197,7 @@ | \--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.8.7 | \--- androidx.lifecycle:lifecycle-viewmodel-android:2.8.7 | +--- androidx.annotation:annotation:1.8.0 -> 1.8.1 (*) -| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.9.0 (*) | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.9.0 (*) | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c) @@ -213,8 +213,8 @@ | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (c) | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7 (c) | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c) -+--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -+--- androidx.compose:compose-bom:2024.10.01 ++--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) ++--- androidx.compose:compose-bom:2024.11.00 | +--- androidx.compose.material3:material3:1.3.1 (c) | +--- androidx.compose.material3.adaptive:adaptive:1.0.0 (c) | +--- androidx.compose.material3.adaptive:adaptive-layout:1.0.0 (c) @@ -262,9 +262,9 @@ | +--- androidx.compose.runtime:runtime:1.7.5 | | \--- androidx.compose.runtime:runtime-android:1.7.5 | | +--- androidx.annotation:annotation-experimental:1.4.1 -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.0.20 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.0.21 (*) | | +--- androidx.collection:collection:1.4.4 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.9.0 (*) | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.9.0 (*) | | +--- androidx.compose.runtime:runtime-tracing:1.7.5 (c) @@ -305,37 +305,38 @@ | | | | +--- androidx.activity:activity:1.9.3 | | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*) | | | | | +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*) -| | | | | +--- androidx.core:core:1.13.0 -> 1.13.1 -| | | | | | +--- androidx.annotation:annotation:1.6.0 -> 1.8.1 (*) -| | | | | | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*) -| | | | | | +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*) +| | | | | +--- androidx.core:core:1.13.0 -> 1.15.0 +| | | | | | +--- androidx.annotation:annotation:1.8.1 (*) +| | | | | | +--- androidx.annotation:annotation-experimental:1.4.1 (*) +| | | | | | +--- androidx.collection:collection:1.4.2 -> 1.4.4 (*) | | | | | | +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*) | | | | | | +--- androidx.interpolator:interpolator:1.0.0 | | | | | | | \--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*) | | | | | | +--- androidx.lifecycle:lifecycle-runtime:2.6.2 -> 2.8.7 (*) +| | | | | | +--- androidx.tracing:tracing:1.2.0 -> 1.3.0-alpha02 (*) | | | | | | +--- androidx.versionedparcelable:versionedparcelable:1.1.1 | | | | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*) | | | | | | | \--- androidx.collection:collection:1.0.0 -> 1.4.4 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) -| | | | | | \--- androidx.core:core-ktx:1.13.1 (c) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) +| | | | | | \--- androidx.core:core-ktx:1.15.0 (c) | | | | | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.8.7 (*) | | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.8.7 (*) | | | | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.1 -> 2.8.7 | | | | | | +--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*) -| | | | | | +--- androidx.core:core-ktx:1.2.0 -> 1.13.1 -| | | | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*) -| | | | | | | +--- androidx.core:core:1.13.1 (*) -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) -| | | | | | | \--- androidx.core:core:1.13.1 (c) +| | | | | | +--- androidx.core:core-ktx:1.2.0 -> 1.15.0 +| | | | | | | +--- androidx.annotation:annotation:1.8.1 (*) +| | | | | | | +--- androidx.core:core:1.15.0 (*) +| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) +| | | | | | | \--- androidx.core:core:1.15.0 (c) | | | | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.8.7 (*) | | | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (*) | | | | | | +--- androidx.savedstate:savedstate:1.2.1 | | | | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*) | | | | | | | +--- androidx.arch.core:core-common:2.1.0 -> 2.2.0 (*) | | | | | | | +--- androidx.lifecycle:lifecycle-common:2.6.1 -> 2.8.7 (*) -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.10 -> 2.0.20 (*) +| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.10 -> 2.0.21 (*) | | | | | | | \--- androidx.savedstate:savedstate-ktx:1.2.1 (c) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.9.0 (*) | | | | | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c) | | | | | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c) @@ -353,14 +354,14 @@ | | | | | +--- androidx.profileinstaller:profileinstaller:1.3.1 -> 1.4.1 (*) | | | | | +--- androidx.savedstate:savedstate:1.2.1 (*) | | | | | +--- androidx.tracing:tracing:1.0.0 -> 1.3.0-alpha02 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | | +--- androidx.activity:activity-compose:1.9.3 (c) | | | | | \--- androidx.activity:activity-ktx:1.9.3 (c) -| | | | +--- androidx.core:core-ktx:1.13.0 -> 1.13.1 (*) +| | | | +--- androidx.core:core-ktx:1.13.0 -> 1.15.0 (*) | | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.1 -> 2.8.7 (*) | | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1 -> 2.8.7 | | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.9.0 (*) | | | | | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c) | | | | | +--- androidx.lifecycle:lifecycle-process:2.8.7 (c) @@ -377,15 +378,15 @@ | | | | | \--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7 (c) | | | | +--- androidx.savedstate:savedstate-ktx:1.2.1 | | | | | +--- androidx.savedstate:savedstate:1.2.1 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.10 -> 2.0.20 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.10 -> 2.0.21 (*) | | | | | \--- androidx.savedstate:savedstate:1.2.1 (c) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | +--- androidx.activity:activity:1.9.3 (c) | | | | \--- androidx.activity:activity-compose:1.9.3 (c) | | | +--- androidx.annotation:annotation:1.8.0 -> 1.8.1 (*) | | | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*) | | | +--- androidx.autofill:autofill:1.0.0 -| | | | \--- androidx.core:core:1.1.0 -> 1.13.1 (*) +| | | | \--- androidx.core:core:1.1.0 -> 1.15.0 (*) | | | +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*) | | | +--- androidx.collection:collection:1.4.0 -> 1.4.4 (*) | | | +--- androidx.compose.runtime:runtime:1.7.5 (*) @@ -394,7 +395,7 @@ | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*) | | | | +--- androidx.collection:collection:1.4.0 -> 1.4.4 (*) | | | | +--- androidx.compose.runtime:runtime:1.7.5 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | +--- androidx.compose.runtime:runtime:1.7.5 (c) | | | | \--- androidx.compose.runtime:runtime-tracing:1.7.5 (c) | | | +--- androidx.compose.ui:ui-geometry:1.7.5 @@ -404,14 +405,14 @@ | | | | +--- androidx.compose.ui:ui-util:1.7.5 | | | | | \--- androidx.compose.ui:ui-util-android:1.7.5 | | | | | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | | +--- androidx.compose.ui:ui:1.7.5 (c) | | | | | +--- androidx.compose.ui:ui-geometry:1.7.5 (c) | | | | | +--- androidx.compose.ui:ui-graphics:1.7.5 (c) | | | | | +--- androidx.compose.ui:ui-text:1.7.5 (c) | | | | | +--- androidx.compose.ui:ui-tooling-preview:1.7.5 (c) | | | | | \--- androidx.compose.ui:ui-unit:1.7.5 (c) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | +--- androidx.compose.ui:ui:1.7.5 (c) | | | | +--- androidx.compose.ui:ui-graphics:1.7.5 (c) | | | | +--- androidx.compose.ui:ui-text:1.7.5 (c) @@ -436,7 +437,7 @@ | | | | | +--- androidx.compose.runtime:runtime:1.7.5 (*) | | | | | +--- androidx.compose.ui:ui-geometry:1.7.5 (*) | | | | | +--- androidx.compose.ui:ui-util:1.7.5 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | | +--- androidx.compose.ui:ui:1.7.5 (c) | | | | | +--- androidx.compose.ui:ui-geometry:1.7.5 (c) | | | | | +--- androidx.compose.ui:ui-graphics:1.7.5 (c) @@ -444,11 +445,11 @@ | | | | | +--- androidx.compose.ui:ui-tooling-preview:1.7.5 (c) | | | | | \--- androidx.compose.ui:ui-util:1.7.5 (c) | | | | +--- androidx.compose.ui:ui-util:1.7.5 (*) -| | | | +--- androidx.core:core:1.12.0 -> 1.13.1 (*) +| | | | +--- androidx.core:core:1.12.0 -> 1.15.0 (*) | | | | +--- androidx.graphics:graphics-path:1.0.1 -| | | | | +--- androidx.core:core:1.12.0 -> 1.13.1 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | | +--- androidx.core:core:1.12.0 -> 1.15.0 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | +--- androidx.compose.ui:ui:1.7.5 (c) | | | | +--- androidx.compose.ui:ui-geometry:1.7.5 (c) | | | | +--- androidx.compose.ui:ui-text:1.7.5 (c) @@ -465,15 +466,15 @@ | | | | +--- androidx.compose.ui:ui-graphics:1.7.5 (*) | | | | +--- androidx.compose.ui:ui-unit:1.7.5 (*) | | | | +--- androidx.compose.ui:ui-util:1.7.5 (*) -| | | | +--- androidx.core:core:1.7.0 -> 1.13.1 (*) +| | | | +--- androidx.core:core:1.7.0 -> 1.15.0 (*) | | | | +--- androidx.emoji2:emoji2:1.2.0 -> 1.3.0 | | | | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*) | | | | | +--- androidx.collection:collection:1.1.0 -> 1.4.4 (*) -| | | | | +--- androidx.core:core:1.3.0 -> 1.13.1 (*) +| | | | | +--- androidx.core:core:1.3.0 -> 1.15.0 (*) | | | | | +--- androidx.lifecycle:lifecycle-process:2.4.1 -> 2.8.7 (*) | | | | | +--- androidx.startup:startup-runtime:1.0.0 -> 1.1.1 (*) | | | | | \--- androidx.emoji2:emoji2-views-helper:1.3.0 (c) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.9.0 (*) | | | | +--- androidx.compose.ui:ui:1.7.5 (c) | | | | +--- androidx.compose.ui:ui-geometry:1.7.5 (c) @@ -483,16 +484,16 @@ | | | | \--- androidx.compose.ui:ui-util:1.7.5 (c) | | | +--- androidx.compose.ui:ui-unit:1.7.5 (*) | | | +--- androidx.compose.ui:ui-util:1.7.5 (*) -| | | +--- androidx.core:core:1.12.0 -> 1.13.1 (*) +| | | +--- androidx.core:core:1.12.0 -> 1.15.0 (*) | | | +--- androidx.customview:customview-poolingcontainer:1.0.0 -| | | | +--- androidx.core:core-ktx:1.5.0 -> 1.13.1 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 -> 2.0.20 (*) +| | | | +--- androidx.core:core-ktx:1.5.0 -> 1.15.0 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 -> 2.0.21 (*) | | | +--- androidx.emoji2:emoji2:1.2.0 -> 1.3.0 (*) | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.3 -> 2.8.7 (*) | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.8.7 (*) | | | +--- androidx.profileinstaller:profileinstaller:1.3.1 -> 1.4.1 (*) | | | +--- androidx.savedstate:savedstate-ktx:1.2.1 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.9.0 (*) | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.9.0 (*) | | | +--- androidx.compose.ui:ui-geometry:1.7.5 (c) @@ -505,7 +506,7 @@ | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c) | | +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c) | | +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c) @@ -521,52 +522,52 @@ | | \--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7 (c) | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 | | +--- androidx.tracing:tracing:1.3.0-alpha02 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | \--- androidx.tracing:tracing:1.3.0-alpha02 (c) -| +--- io.insert-koin:koin-bom:4.0.0-RC2 -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (c) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (c) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (c) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (c) -| | +--- io.insert-koin:koin-compose:4.0.0-RC2 (c) -| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0-RC2 (c) -| | \--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (c) -| +--- io.insert-koin:koin-android:4.0.0-RC2 -| | +--- io.insert-koin:koin-core:4.0.0-RC2 -| | | \--- io.insert-koin:koin-core-jvm:4.0.0-RC2 -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | +--- co.touchlab:stately-concurrency:2.0.7 -| | | | \--- co.touchlab:stately-concurrency-jvm:2.0.7 -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.0.20 (*) -| | | | \--- co.touchlab:stately-strict:2.0.7 -| | | | \--- co.touchlab:stately-strict-jvm:2.0.7 -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.0.20 (*) -| | | \--- co.touchlab:stately-concurrent-collections:2.0.7 -| | | \--- co.touchlab:stately-concurrent-collections-jvm:2.0.7 -| | | +--- co.touchlab:stately-concurrency:2.0.7 (*) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.0.20 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 -| | | \--- io.insert-koin:koin-core-viewmodel-jvm:4.0.0-RC2 -| | | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| +--- io.insert-koin:koin-bom:4.0.0 +| | +--- io.insert-koin:koin-core:4.0.0 (c) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (c) +| | +--- io.insert-koin:koin-android:4.0.0 (c) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (c) +| | +--- io.insert-koin:koin-compose:4.0.0 (c) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (c) +| | \--- io.insert-koin:koin-androidx-compose:4.0.0 (c) +| +--- io.insert-koin:koin-android:4.0.0 +| | +--- io.insert-koin:koin-core:4.0.0 +| | | \--- io.insert-koin:koin-core-jvm:4.0.0 +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.0.21 (*) +| | | +--- co.touchlab:stately-concurrency:2.1.0 +| | | | \--- co.touchlab:stately-concurrency-jvm:2.1.0 +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.0.21 (*) +| | | | \--- co.touchlab:stately-strict:2.1.0 +| | | | \--- co.touchlab:stately-strict-jvm:2.1.0 +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.0.21 (*) +| | | \--- co.touchlab:stately-concurrent-collections:2.1.0 +| | | \--- co.touchlab:stately-concurrent-collections-jvm:2.1.0 +| | | +--- co.touchlab:stately-concurrency:2.1.0 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.0.21 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 +| | | \--- io.insert-koin:koin-core-viewmodel-jvm:4.0.0 +| | | +--- io.insert-koin:koin-core:4.0.0 (*) | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.0 -> 2.8.3-rc01 | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.8.5 -> 2.8.7 (*) | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.6.11 -> 1.7.0 | | | | | +--- androidx.annotation:annotation:1.8.0 -> 1.8.1 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.21 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.21 (*) | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.9.0 (*) | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.0 -> 2.8.2 -| | | | +--- androidx.core:core-ktx:1.2.0 -> 1.13.1 (*) +| | | | +--- androidx.core:core-ktx:1.2.0 -> 1.15.0 (*) | | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.7.0 -> 2.8.7 (*) | | | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.4 -> 2.8.7 (*) | | | | +--- org.jetbrains.androidx.core:core-bundle:1.0.1 | | | | | \--- org.jetbrains.androidx.core:core-bundle-android:1.0.1 -| | | | | +--- androidx.core:core-ktx:1.2.0 -> 1.13.1 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*) +| | | | | +--- androidx.core:core-ktx:1.2.0 -> 1.15.0 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.21 (*) | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.2 -> 2.8.3-rc01 | | | | | +--- androidx.lifecycle:lifecycle-common:2.8.5 -> 2.8.7 (*) | | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.6.11 -> 1.7.0 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.21 (*) | | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.9.0 (*) | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) | | | | +--- org.jetbrains.androidx.savedstate:savedstate:1.2.2 @@ -575,23 +576,23 @@ | | | | | +--- org.jetbrains.androidx.core:core-bundle:1.0.1 (*) | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.2 -> 2.8.3-rc01 (*) | | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.6.11 -> 1.7.0 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.21 (*) | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.6.11 -> 1.7.0 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.21 (*) | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.0 -> 1.9.0 (*) | | | +--- org.jetbrains.androidx.core:core-bundle:1.0.0 -> 1.0.1 (*) | | | +--- org.jetbrains.androidx.savedstate:savedstate:1.2.0 -> 1.2.2 (*) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.0.21 (*) | | +--- androidx.appcompat:appcompat:1.7.0 | | | +--- androidx.activity:activity:1.7.0 -> 1.9.3 (*) | | | +--- androidx.annotation:annotation:1.3.0 -> 1.8.1 (*) | | | +--- androidx.appcompat:appcompat-resources:1.7.0 | | | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*) | | | | +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*) -| | | | +--- androidx.core:core:1.6.0 -> 1.13.1 (*) +| | | | +--- androidx.core:core:1.6.0 -> 1.15.0 (*) | | | | +--- androidx.vectordrawable:vectordrawable:1.1.0 | | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*) -| | | | | +--- androidx.core:core:1.1.0 -> 1.13.1 (*) +| | | | | +--- androidx.core:core:1.1.0 -> 1.15.0 (*) | | | | | \--- androidx.collection:collection:1.1.0 -> 1.4.4 (*) | | | | +--- androidx.vectordrawable:vectordrawable-animated:1.1.0 | | | | | +--- androidx.vectordrawable:vectordrawable:1.1.0 (*) @@ -599,36 +600,36 @@ | | | | | \--- androidx.collection:collection:1.1.0 -> 1.4.4 (*) | | | | \--- androidx.appcompat:appcompat:1.7.0 (c) | | | +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*) -| | | +--- androidx.core:core:1.13.0 -> 1.13.1 (*) -| | | +--- androidx.core:core-ktx:1.13.0 -> 1.13.1 (*) +| | | +--- androidx.core:core:1.13.0 -> 1.15.0 (*) +| | | +--- androidx.core:core-ktx:1.13.0 -> 1.15.0 (*) | | | +--- androidx.cursoradapter:cursoradapter:1.0.0 | | | | \--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*) | | | +--- androidx.drawerlayout:drawerlayout:1.0.0 | | | | +--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*) -| | | | +--- androidx.core:core:1.0.0 -> 1.13.1 (*) +| | | | +--- androidx.core:core:1.0.0 -> 1.15.0 (*) | | | | \--- androidx.customview:customview:1.0.0 -> 1.1.0 | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*) -| | | | +--- androidx.core:core:1.3.0 -> 1.13.1 (*) +| | | | +--- androidx.core:core:1.3.0 -> 1.15.0 (*) | | | | \--- androidx.collection:collection:1.1.0 -> 1.4.4 (*) | | | +--- androidx.emoji2:emoji2:1.3.0 (*) | | | +--- androidx.emoji2:emoji2-views-helper:1.2.0 -> 1.3.0 | | | | +--- androidx.collection:collection:1.1.0 -> 1.4.4 (*) -| | | | +--- androidx.core:core:1.3.0 -> 1.13.1 (*) +| | | | +--- androidx.core:core:1.3.0 -> 1.15.0 (*) | | | | +--- androidx.emoji2:emoji2:1.3.0 (*) | | | | \--- androidx.emoji2:emoji2:1.3.0 (c) -| | | +--- androidx.fragment:fragment:1.5.4 -> 1.8.2 +| | | +--- androidx.fragment:fragment:1.5.4 -> 1.8.3 | | | | +--- androidx.activity:activity:1.8.1 -> 1.9.3 (*) | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*) | | | | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*) | | | | +--- androidx.collection:collection:1.1.0 -> 1.4.4 (*) -| | | | +--- androidx.core:core-ktx:1.2.0 -> 1.13.1 (*) +| | | | +--- androidx.core:core-ktx:1.2.0 -> 1.15.0 (*) | | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.6.1 -> 2.8.7 (*) | | | | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.8.7 (*) | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.8.7 (*) | | | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.1 -> 2.8.7 (*) | | | | +--- androidx.loader:loader:1.0.0 -> 1.1.0 | | | | | +--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*) -| | | | | +--- androidx.core:core:1.0.0 -> 1.13.1 (*) +| | | | | +--- androidx.core:core:1.0.0 -> 1.15.0 (*) | | | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.0.0 -> 2.8.7 (*) | | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.0.0 -> 2.8.7 (*) | | | | | \--- androidx.collection:collection:1.0.0 -> 1.4.4 (*) @@ -636,31 +637,31 @@ | | | | +--- androidx.savedstate:savedstate:1.2.1 (*) | | | | +--- androidx.viewpager:viewpager:1.0.0 | | | | | +--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*) -| | | | | +--- androidx.core:core:1.0.0 -> 1.13.1 (*) +| | | | | +--- androidx.core:core:1.0.0 -> 1.15.0 (*) | | | | | \--- androidx.customview:customview:1.0.0 -> 1.1.0 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) -| | | | \--- androidx.fragment:fragment-ktx:1.8.2 (c) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) +| | | | \--- androidx.fragment:fragment-ktx:1.8.3 (c) | | | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.8.7 (*) | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.8.7 (*) | | | +--- androidx.profileinstaller:profileinstaller:1.3.1 -> 1.4.1 (*) | | | +--- androidx.resourceinspection:resourceinspection-annotation:1.0.1 | | | | \--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*) | | | +--- androidx.savedstate:savedstate:1.2.1 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | \--- androidx.appcompat:appcompat-resources:1.7.0 (c) -| | +--- androidx.activity:activity-ktx:1.9.1 -> 1.9.3 (*) -| | +--- androidx.fragment:fragment-ktx:1.8.2 +| | +--- androidx.activity:activity-ktx:1.9.2 -> 1.9.3 (*) +| | +--- androidx.fragment:fragment-ktx:1.8.3 | | | +--- androidx.activity:activity-ktx:1.8.1 -> 1.9.3 (*) | | | +--- androidx.collection:collection-ktx:1.1.0 -> 1.4.4 (*) -| | | +--- androidx.core:core-ktx:1.2.0 -> 1.13.1 (*) -| | | +--- androidx.fragment:fragment:1.8.2 (*) +| | | +--- androidx.core:core-ktx:1.2.0 -> 1.15.0 (*) +| | | +--- androidx.fragment:fragment:1.8.3 (*) | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.6.1 -> 2.8.7 (*) | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1 -> 2.8.7 (*) | | | +--- androidx.savedstate:savedstate-ktx:1.2.1 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) -| | | \--- androidx.fragment:fragment:1.8.2 (c) -| | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4 -> 2.8.7 (*) -| | +--- androidx.lifecycle:lifecycle-common-java8:2.8.4 -> 2.8.7 +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) +| | | \--- androidx.fragment:fragment:1.8.3 (c) +| | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.5 -> 2.8.7 (*) +| | +--- androidx.lifecycle:lifecycle-common-java8:2.8.5 -> 2.8.7 | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*) | | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (*) | | | +--- androidx.lifecycle:lifecycle-common:2.8.7 (c) @@ -676,129 +677,129 @@ | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (c) | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7 (c) | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c) -| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose:4.0.0-RC2 -| | | \--- io.insert-koin:koin-compose-jvm:4.0.0-RC2 -| | | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.0.21 (*) +| +--- io.insert-koin:koin-androidx-compose:4.0.0 +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 +| | | \--- io.insert-koin:koin-compose-jvm:4.0.0 +| | | +--- io.insert-koin:koin-core:4.0.0 (*) | | | +--- org.jetbrains.compose.runtime:runtime:1.6.11 -> 1.7.0 | | | | +--- androidx.compose.runtime:runtime:1.7.1 -> 1.7.5 (*) | | | | +--- org.jetbrains.compose.collection-internal:collection:1.7.0 | | | | | +--- androidx.collection:collection:1.4.0 -> 1.4.4 (*) | | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.7.0 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.21 (*) | | | | | \--- org.jetbrains.kotlinx:atomicfu:0.23.2 | | | | | \--- org.jetbrains.kotlinx:atomicfu-jvm:0.23.2 -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:{prefer 1.9.21} -> 2.0.20 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.9.24 -> 2.0.20 -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:{prefer 1.9.21} -> 2.0.21 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.9.24 -> 2.0.21 +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) | | | | +--- org.jetbrains.kotlinx:atomicfu:0.23.2 (*) | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.9.0 (*) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.0.21 (*) | | +--- androidx.compose.runtime:runtime:1.6.8 -> 1.7.5 (*) -| | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 -> 2.8.7 (*) -| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- androidx.navigation:navigation-fragment-ktx:2.7.7 -> 2.8.3 -| | | +--- androidx.navigation:navigation-fragment:2.8.3 -| | | | +--- androidx.fragment:fragment-ktx:1.6.2 -> 1.8.2 (*) -| | | | +--- androidx.navigation:navigation-runtime:2.8.3 +| | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.5 -> 2.8.7 (*) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.0.21 (*) +| +--- io.insert-koin:koin-androidx-navigation:4.0.0 +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- androidx.navigation:navigation-fragment-ktx:2.8.0 -> 2.8.4 +| | | +--- androidx.navigation:navigation-fragment:2.8.4 +| | | | +--- androidx.fragment:fragment-ktx:1.6.2 -> 1.8.3 (*) +| | | | +--- androidx.navigation:navigation-runtime:2.8.4 | | | | | +--- androidx.activity:activity-ktx:1.7.1 -> 1.9.3 (*) | | | | | +--- androidx.annotation:annotation-experimental:1.4.1 (*) | | | | | +--- androidx.collection:collection:1.4.2 -> 1.4.4 (*) | | | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.2 -> 2.8.7 (*) | | | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2 -> 2.8.7 (*) -| | | | | +--- androidx.navigation:navigation-common:2.8.3 +| | | | | +--- androidx.navigation:navigation-common:2.8.4 | | | | | | +--- androidx.annotation:annotation:1.8.1 (*) | | | | | | +--- androidx.collection:collection-ktx:1.4.2 -> 1.4.4 (*) -| | | | | | +--- androidx.core:core-ktx:1.1.0 -> 1.13.1 (*) +| | | | | | +--- androidx.core:core-ktx:1.1.0 -> 1.15.0 (*) | | | | | | +--- androidx.lifecycle:lifecycle-common:2.6.2 -> 2.8.7 (*) | | | | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.2 -> 2.8.7 (*) | | | | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2 -> 2.8.7 (*) | | | | | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.2 -> 2.8.7 (*) | | | | | | +--- androidx.profileinstaller:profileinstaller:1.3.1 -> 1.4.1 (*) | | | | | | +--- androidx.savedstate:savedstate-ktx:1.2.1 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 -> 1.7.2 -| | | | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.2 -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.0.20 (*) -| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.2 -| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.2 (c) -| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.2 (c) -| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.2 (c) -| | | | | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.2 (c) -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (c) -| | | | | | +--- androidx.navigation:navigation-common-ktx:2.8.3 (c) -| | | | | | +--- androidx.navigation:navigation-compose:2.8.3 (c) -| | | | | | +--- androidx.navigation:navigation-fragment:2.8.3 (c) -| | | | | | +--- androidx.navigation:navigation-fragment-ktx:2.8.3 (c) -| | | | | | +--- androidx.navigation:navigation-runtime:2.8.3 (c) -| | | | | | \--- androidx.navigation:navigation-runtime-ktx:2.8.3 (c) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 -> 1.7.2 (*) -| | | | | +--- androidx.navigation:navigation-common:2.8.3 (c) -| | | | | +--- androidx.navigation:navigation-common-ktx:2.8.3 (c) -| | | | | +--- androidx.navigation:navigation-compose:2.8.3 (c) -| | | | | +--- androidx.navigation:navigation-fragment:2.8.3 (c) -| | | | | +--- androidx.navigation:navigation-fragment-ktx:2.8.3 (c) -| | | | | \--- androidx.navigation:navigation-runtime-ktx:2.8.3 (c) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) +| | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 -> 1.7.3 +| | | | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3 +| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3 +| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3 (c) +| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 (c) +| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3 (c) +| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 (c) +| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.7.3 (c) +| | | | | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.7.3 (c) +| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.0.21 (*) +| | | | | | +--- androidx.navigation:navigation-common-ktx:2.8.4 (c) +| | | | | | +--- androidx.navigation:navigation-compose:2.8.4 (c) +| | | | | | +--- androidx.navigation:navigation-fragment:2.8.4 (c) +| | | | | | +--- androidx.navigation:navigation-fragment-ktx:2.8.4 (c) +| | | | | | +--- androidx.navigation:navigation-runtime:2.8.4 (c) +| | | | | | \--- androidx.navigation:navigation-runtime-ktx:2.8.4 (c) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 -> 1.7.3 (*) +| | | | | +--- androidx.navigation:navigation-common:2.8.4 (c) +| | | | | +--- androidx.navigation:navigation-common-ktx:2.8.4 (c) +| | | | | +--- androidx.navigation:navigation-compose:2.8.4 (c) +| | | | | +--- androidx.navigation:navigation-fragment:2.8.4 (c) +| | | | | +--- androidx.navigation:navigation-fragment-ktx:2.8.4 (c) +| | | | | \--- androidx.navigation:navigation-runtime-ktx:2.8.4 (c) | | | | +--- androidx.slidingpanelayout:slidingpanelayout:1.2.0 | | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*) | | | | | +--- androidx.customview:customview:1.1.0 (*) -| | | | | +--- androidx.core:core:1.1.0 -> 1.13.1 (*) +| | | | | +--- androidx.core:core:1.1.0 -> 1.15.0 (*) | | | | | +--- androidx.window:window:1.0.0 -> 1.3.0 | | | | | | +--- androidx.annotation:annotation:1.3.0 -> 1.8.1 (*) | | | | | | +--- androidx.collection:collection:1.1.0 -> 1.4.4 (*) -| | | | | | +--- androidx.core:core:1.8.0 -> 1.13.1 (*) +| | | | | | +--- androidx.core:core:1.8.0 -> 1.15.0 (*) | | | | | | +--- androidx.window.extensions.core:core:1.0.0 | | | | | | | +--- androidx.annotation:annotation:1.6.0 -> 1.8.1 (*) -| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.20 -> 2.0.20 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.20 -> 2.0.21 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.9.0 (*) | | | | | | \--- androidx.window:window-core:1.3.0 (c) | | | | | \--- androidx.transition:transition:1.4.1 | | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.1 (*) -| | | | | +--- androidx.core:core:1.1.0 -> 1.13.1 (*) +| | | | | +--- androidx.core:core:1.1.0 -> 1.15.0 (*) | | | | | \--- androidx.collection:collection:1.1.0 -> 1.4.4 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 -> 1.7.2 (*) -| | | | +--- androidx.navigation:navigation-common:2.8.3 (c) -| | | | +--- androidx.navigation:navigation-common-ktx:2.8.3 (c) -| | | | +--- androidx.navigation:navigation-compose:2.8.3 (c) -| | | | +--- androidx.navigation:navigation-fragment-ktx:2.8.3 (c) -| | | | +--- androidx.navigation:navigation-runtime:2.8.3 (c) -| | | | \--- androidx.navigation:navigation-runtime-ktx:2.8.3 (c) -| | | +--- androidx.navigation:navigation-runtime-ktx:2.8.3 -| | | | +--- androidx.navigation:navigation-common-ktx:2.8.3 -| | | | | +--- androidx.navigation:navigation-common:2.8.3 (*) -| | | | | +--- androidx.navigation:navigation-common:2.8.3 (c) -| | | | | +--- androidx.navigation:navigation-compose:2.8.3 (c) -| | | | | +--- androidx.navigation:navigation-fragment:2.8.3 (c) -| | | | | +--- androidx.navigation:navigation-fragment-ktx:2.8.3 (c) -| | | | | +--- androidx.navigation:navigation-runtime:2.8.3 (c) -| | | | | \--- androidx.navigation:navigation-runtime-ktx:2.8.3 (c) -| | | | +--- androidx.navigation:navigation-runtime:2.8.3 (*) -| | | | +--- androidx.navigation:navigation-common-ktx:2.8.3 (c) -| | | | +--- androidx.navigation:navigation-compose:2.8.3 (c) -| | | | +--- androidx.navigation:navigation-fragment-ktx:2.8.3 (c) -| | | | +--- androidx.navigation:navigation-runtime:2.8.3 (c) -| | | | +--- androidx.navigation:navigation-fragment:2.8.3 (c) -| | | | \--- androidx.navigation:navigation-common:2.8.3 (c) -| | | +--- androidx.navigation:navigation-common-ktx:2.8.3 (c) -| | | +--- androidx.navigation:navigation-compose:2.8.3 (c) -| | | +--- androidx.navigation:navigation-fragment:2.8.3 (c) -| | | +--- androidx.navigation:navigation-runtime:2.8.3 (c) -| | | +--- androidx.navigation:navigation-runtime-ktx:2.8.3 (c) -| | | \--- androidx.navigation:navigation-common:2.8.3 (c) -| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 -> 1.7.3 (*) +| | | | +--- androidx.navigation:navigation-common:2.8.4 (c) +| | | | +--- androidx.navigation:navigation-common-ktx:2.8.4 (c) +| | | | +--- androidx.navigation:navigation-compose:2.8.4 (c) +| | | | +--- androidx.navigation:navigation-fragment-ktx:2.8.4 (c) +| | | | +--- androidx.navigation:navigation-runtime:2.8.4 (c) +| | | | \--- androidx.navigation:navigation-runtime-ktx:2.8.4 (c) +| | | +--- androidx.navigation:navigation-runtime-ktx:2.8.4 +| | | | +--- androidx.navigation:navigation-common-ktx:2.8.4 +| | | | | +--- androidx.navigation:navigation-common:2.8.4 (*) +| | | | | +--- androidx.navigation:navigation-common:2.8.4 (c) +| | | | | +--- androidx.navigation:navigation-compose:2.8.4 (c) +| | | | | +--- androidx.navigation:navigation-fragment:2.8.4 (c) +| | | | | +--- androidx.navigation:navigation-fragment-ktx:2.8.4 (c) +| | | | | +--- androidx.navigation:navigation-runtime:2.8.4 (c) +| | | | | \--- androidx.navigation:navigation-runtime-ktx:2.8.4 (c) +| | | | +--- androidx.navigation:navigation-runtime:2.8.4 (*) +| | | | +--- androidx.navigation:navigation-common-ktx:2.8.4 (c) +| | | | +--- androidx.navigation:navigation-compose:2.8.4 (c) +| | | | +--- androidx.navigation:navigation-fragment-ktx:2.8.4 (c) +| | | | +--- androidx.navigation:navigation-runtime:2.8.4 (c) +| | | | +--- androidx.navigation:navigation-fragment:2.8.4 (c) +| | | | \--- androidx.navigation:navigation-common:2.8.4 (c) +| | | +--- androidx.navigation:navigation-common-ktx:2.8.4 (c) +| | | +--- androidx.navigation:navigation-compose:2.8.4 (c) +| | | +--- androidx.navigation:navigation-fragment:2.8.4 (c) +| | | +--- androidx.navigation:navigation-runtime:2.8.4 (c) +| | | +--- androidx.navigation:navigation-runtime-ktx:2.8.4 (c) +| | | \--- androidx.navigation:navigation-common:2.8.4 (c) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.0.21 (*) +| +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) | +--- project :core:data -| | +--- androidx.core:core-ktx:1.13.1 (*) +| | +--- androidx.core:core-ktx:1.15.0 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) | | +--- project :core:common | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 (*) | | | +--- io.coil-kt.coil3:coil:3.0.0-alpha10 @@ -808,348 +809,263 @@ | | | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.4 -> 2.8.7 (*) | | | | | +--- androidx.annotation:annotation:1.8.1 (*) | | | | | +--- androidx.appcompat:appcompat-resources:1.7.0 (*) -| | | | | +--- androidx.core:core-ktx:1.13.1 (*) +| | | | | +--- androidx.core:core-ktx:1.13.1 -> 1.15.0 (*) | | | | | +--- androidx.exifinterface:exifinterface:1.3.7 | | | | | | \--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*) | | | | | +--- androidx.profileinstaller:profileinstaller:1.3.1 -> 1.4.1 (*) | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1 -> 1.9.0 (*) | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.9.0 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.10 -> 2.0.20 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.10 -> 2.0.21 (*) | | | | | \--- com.squareup.okio:okio:3.9.0 -> 3.9.1 | | | | | \--- com.squareup.okio:okio-jvm:3.9.1 -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.25 -> 2.0.20 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.10 -> 2.0.20 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.25 -> 2.0.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.10 -> 2.0.21 (*) | | | +--- io.coil-kt.coil3:coil-core:3.0.0-alpha10 (*) | | | +--- io.coil-kt.coil3:coil-svg:3.0.0-alpha10 | | | | \--- io.coil-kt.coil3:coil-svg-android:3.0.0-alpha10 -| | | | +--- androidx.core:core-ktx:1.13.1 (*) +| | | | +--- androidx.core:core-ktx:1.13.1 -> 1.15.0 (*) | | | | +--- com.caverock:androidsvg-aar:1.4 | | | | +--- io.coil-kt.coil3:coil-core:3.0.0-alpha10 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.10 -> 2.0.20 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.10 -> 2.0.21 (*) | | | +--- io.coil-kt.coil3:coil-network-ktor3:3.0.0-alpha10 | | | | \--- io.coil-kt.coil3:coil-network-ktor3-android:3.0.0-alpha10 | | | | +--- io.coil-kt.coil3:coil-core:3.0.0-alpha10 (*) | | | | +--- io.coil-kt.coil3:coil-network-core:3.0.0-alpha10 | | | | | \--- io.coil-kt.coil3:coil-network-core-android:3.0.0-alpha10 -| | | | | +--- androidx.core:core-ktx:1.13.1 (*) +| | | | | +--- androidx.core:core-ktx:1.13.1 -> 1.15.0 (*) | | | | | +--- io.coil-kt.coil3:coil-core:3.0.0-alpha10 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.10 -> 2.0.20 (*) -| | | | +--- io.ktor:ktor-client-core:3.0.0-beta-2 -> 3.0.0-rc-1 -| | | | | \--- io.ktor:ktor-client-core-jvm:3.0.0-rc-1 -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.20 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1 -> 1.9.0 -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) -| | | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.10 -> 2.0.21 (*) +| | | | +--- io.ktor:ktor-client-core:3.0.0-beta-2 -> 3.0.1 +| | | | | \--- io.ktor:ktor-client-core-jvm:3.0.1 | | | | | +--- org.slf4j:slf4j-api:2.0.16 -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.9.0 (*) -| | | | | +--- io.ktor:ktor-http:3.0.0-rc-1 -| | | | | | \--- io.ktor:ktor-http-jvm:3.0.0-rc-1 -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.20 (*) -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1 -> 1.9.0 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) +| | | | | +--- io.ktor:ktor-http:3.0.1 +| | | | | | \--- io.ktor:ktor-http-jvm:3.0.1 | | | | | | +--- org.slf4j:slf4j-api:2.0.16 -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.9.0 (*) -| | | | | | +--- io.ktor:ktor-utils:3.0.0-rc-1 -| | | | | | | \--- io.ktor:ktor-utils-jvm:3.0.0-rc-1 -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 (*) -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.20 (*) -| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1 -> 1.9.0 (*) +| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) +| | | | | | +--- io.ktor:ktor-utils:3.0.1 +| | | | | | | \--- io.ktor:ktor-utils-jvm:3.0.1 | | | | | | | +--- org.slf4j:slf4j-api:2.0.16 -| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.9.0 (*) -| | | | | | | +--- io.ktor:ktor-io:3.0.0-rc-1 -| | | | | | | | \--- io.ktor:ktor-io-jvm:3.0.0-rc-1 -| | | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 (*) -| | | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.20 (*) -| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1 -> 1.9.0 (*) +| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) +| | | | | | | +--- io.ktor:ktor-io:3.0.1 +| | | | | | | | \--- io.ktor:ktor-io-jvm:3.0.1 | | | | | | | | +--- org.slf4j:slf4j-api:2.0.16 -| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.9.0 (*) -| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-io-core:0.5.3 -| | | | | | | | | \--- org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.5.3 -| | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-io-bytestring:0.5.3 -| | | | | | | | | | \--- org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.5.3 -| | | | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.20 (*) -| | | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.20 (*) -| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.2 (*) -| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.2 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | | | +--- io.ktor:ktor-events:3.0.0-rc-1 -| | | | | | \--- io.ktor:ktor-events-jvm:3.0.0-rc-1 -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.20 (*) -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1 -> 1.9.0 (*) +| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) +| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-io-core:0.5.4 +| | | | | | | | | \--- org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.5.4 +| | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-io-bytestring:0.5.4 +| | | | | | | | | | \--- org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.5.4 +| | | | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.21 (*) +| | | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.21 (*) +| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 (*) +| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | | | +--- io.ktor:ktor-events:3.0.1 +| | | | | | \--- io.ktor:ktor-events-jvm:3.0.1 | | | | | | +--- org.slf4j:slf4j-api:2.0.16 -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.9.0 (*) -| | | | | | +--- io.ktor:ktor-http:3.0.0-rc-1 (*) -| | | | | | +--- io.ktor:ktor-utils:3.0.0-rc-1 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | | | +--- io.ktor:ktor-websocket-serialization:3.0.0-rc-1 -| | | | | | \--- io.ktor:ktor-websocket-serialization-jvm:3.0.0-rc-1 -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.20 (*) -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1 -> 1.9.0 (*) +| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) +| | | | | | +--- io.ktor:ktor-http:3.0.1 (*) +| | | | | | +--- io.ktor:ktor-utils:3.0.1 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | | | +--- io.ktor:ktor-websocket-serialization:3.0.1 +| | | | | | \--- io.ktor:ktor-websocket-serialization-jvm:3.0.1 | | | | | | +--- org.slf4j:slf4j-api:2.0.16 -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.9.0 (*) -| | | | | | +--- io.ktor:ktor-http:3.0.0-rc-1 (*) -| | | | | | +--- io.ktor:ktor-serialization:3.0.0-rc-1 -| | | | | | | \--- io.ktor:ktor-serialization-jvm:3.0.0-rc-1 -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 (*) -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.20 (*) -| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1 -> 1.9.0 (*) +| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) +| | | | | | +--- io.ktor:ktor-http:3.0.1 (*) +| | | | | | +--- io.ktor:ktor-serialization:3.0.1 +| | | | | | | \--- io.ktor:ktor-serialization-jvm:3.0.1 | | | | | | | +--- org.slf4j:slf4j-api:2.0.16 -| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.9.0 (*) -| | | | | | | +--- io.ktor:ktor-http:3.0.0-rc-1 (*) -| | | | | | | +--- io.ktor:ktor-websockets:3.0.0-rc-1 -| | | | | | | | \--- io.ktor:ktor-websockets-jvm:3.0.0-rc-1 -| | | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 (*) -| | | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.20 (*) -| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1 -> 1.9.0 (*) +| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) +| | | | | | | +--- io.ktor:ktor-http:3.0.1 (*) +| | | | | | | +--- io.ktor:ktor-websockets:3.0.1 +| | | | | | | | \--- io.ktor:ktor-websockets-jvm:3.0.1 | | | | | | | | +--- org.slf4j:slf4j-api:2.0.16 -| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.9.0 (*) -| | | | | | | | +--- io.ktor:ktor-http:3.0.0-rc-1 (*) -| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | | | +--- io.ktor:ktor-sse:3.0.0-rc-1 -| | | | | | \--- io.ktor:ktor-sse-jvm:3.0.0-rc-1 -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.20 (*) -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1 -> 1.9.0 (*) +| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) +| | | | | | | | +--- io.ktor:ktor-http:3.0.1 (*) +| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | | | +--- io.ktor:ktor-sse:3.0.1 +| | | | | | \--- io.ktor:ktor-sse-jvm:3.0.1 | | | | | | +--- org.slf4j:slf4j-api:2.0.16 -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.9.0 (*) -| | | | | | +--- io.ktor:ktor-http:3.0.0-rc-1 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.8.1 -> 1.9.0 +| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) +| | | | | | +--- io.ktor:ktor-http:3.0.1 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.9.0 | | | | | +--- org.slf4j:slf4j-api:1.7.32 -> 2.0.16 | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.20 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.10 -> 2.0.20 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.10 -> 2.0.21 (*) | | | +--- co.touchlab:kermit:2.0.4 | | | | \--- co.touchlab:kermit-android:2.0.4 | | | | +--- co.touchlab:kermit-core:2.0.4 | | | | | \--- co.touchlab:kermit-core-android:2.0.4 -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.20 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.20 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.21 (*) | | | +--- com.squareup.okio:okio:3.9.1 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) | | | +--- org.jetbrains.kotlinx:kotlinx-datetime:0.6.1 | | | | \--- org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.1 -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.0.20 (*) -| | | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.0.21 (*) +| | | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | | +--- io.insert-koin:koin-core:4.0.0 (*) | | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 | | | | \--- io.insert-koin:koin-annotations-jvm:1.4.0-RC4 -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.21 (*) | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) -| | | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | \--- org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.0.20 -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) +| | | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | \--- org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.0.21 +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) | | +--- project :core:datastore -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | | +--- io.insert-koin:koin-core:4.0.0 (*) | | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | | +--- com.russhwolf:multiplatform-settings-no-arg:1.2.0 | | | | \--- com.russhwolf:multiplatform-settings-no-arg-android:1.2.0 | | | | +--- androidx.startup:startup-runtime:1.1.1 (*) | | | | +--- com.russhwolf:multiplatform-settings:1.2.0 | | | | | \--- com.russhwolf:multiplatform-settings-android:1.2.0 -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.20 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.20 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.21 (*) | | | +--- com.russhwolf:multiplatform-settings-serialization:1.2.0 | | | | \--- com.russhwolf:multiplatform-settings-serialization-android:1.2.0 -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.20 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.21 (*) | | | | +--- com.russhwolf:multiplatform-settings:1.2.0 (*) -| | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 -> 1.7.2 (*) +| | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 -> 1.7.3 (*) | | | +--- com.russhwolf:multiplatform-settings-coroutines:1.2.0 | | | | \--- com.russhwolf:multiplatform-settings-coroutines-android:1.2.0 -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.20 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.21 (*) | | | | +--- com.russhwolf:multiplatform-settings:1.2.0 (*) | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.9.0 (*) | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) -| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.2 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 (*) | | | +--- project :core:model -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | | | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | | | +--- io.insert-koin:koin-core:4.0.0 (*) | | | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | | | +--- project :core:common (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.2 -| | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.2 -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.0.20 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.2 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.2 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (c) -| | | | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 +| | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3 +| | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.0.21 (*) +| | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | | | +--- project :core:common (*) | | | \--- project :core:datastore-proto | | | +--- com.google.protobuf:protobuf-kotlin-lite:4.26.0 | | | | +--- com.google.protobuf:protobuf-javalite:4.26.0 -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.0 -> 2.0.20 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.0 -> 2.0.21 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | | +--- io.insert-koin:koin-core:4.0.0 (*) | | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) -| | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.2 (*) +| | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 (*) | | +--- project :core:model (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:network -| | | +--- io.ktor:ktor-client-okhttp:3.0.0-rc-1 -| | | | \--- io.ktor:ktor-client-okhttp-jvm:3.0.0-rc-1 -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.20 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1 -> 1.9.0 (*) +| | | +--- io.ktor:ktor-client-okhttp:3.0.1 +| | | | \--- io.ktor:ktor-client-okhttp-jvm:3.0.1 | | | | +--- org.slf4j:slf4j-api:2.0.16 -| | | | +--- io.ktor:ktor-client-core:3.0.0-rc-1 (*) +| | | | +--- io.ktor:ktor-client-core:3.0.1 (*) | | | | +--- com.squareup.okhttp3:okhttp:4.12.0 | | | | | +--- com.squareup.okio:okio:3.6.0 -> 3.9.1 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21 -> 2.0.20 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21 -> 1.9.20 (*) | | | | +--- com.squareup.okhttp3:okhttp-sse:4.12.0 | | | | | +--- com.squareup.okhttp3:okhttp:4.12.0 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21 -> 2.0.20 (*) -| | | | +--- com.squareup.okio:okio:3.9.0 -> 3.9.1 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.9.0 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21 -> 1.9.20 (*) +| | | | +--- com.squareup.okio:okio:3.9.1 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | +--- io.insert-koin:koin-android:4.0.0 (*) | | | +--- project :core:common (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | | +--- io.insert-koin:koin-core:4.0.0 (*) | | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | | +--- project :core:model (*) | | | +--- project :core:datastore (*) -| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.2 (*) -| | | +--- io.ktor:ktor-client-core:3.0.0-rc-1 (*) -| | | +--- io.ktor:ktor-client-json:3.0.0-rc-1 -| | | | \--- io.ktor:ktor-client-json-jvm:3.0.0-rc-1 -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.20 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1 -> 1.9.0 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 (*) +| | | +--- io.ktor:ktor-client-core:3.0.1 (*) +| | | +--- io.ktor:ktor-client-json:3.0.1 +| | | | \--- io.ktor:ktor-client-json-jvm:3.0.1 | | | | +--- org.slf4j:slf4j-api:2.0.16 -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.9.0 (*) -| | | | +--- io.ktor:ktor-client-core:3.0.0-rc-1 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | +--- io.ktor:ktor-client-logging:3.0.0-rc-1 -| | | | \--- io.ktor:ktor-client-logging-jvm:3.0.0-rc-1 -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.20 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1 -> 1.9.0 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) +| | | | +--- io.ktor:ktor-client-core:3.0.1 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | +--- io.ktor:ktor-client-logging:3.0.1 +| | | | \--- io.ktor:ktor-client-logging-jvm:3.0.1 | | | | +--- org.slf4j:slf4j-api:2.0.16 -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.8.1 -> 1.9.0 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.9.0 (*) -| | | | +--- io.ktor:ktor-client-core:3.0.0-rc-1 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | +--- io.ktor:ktor-client-serialization:3.0.0-rc-1 -| | | | \--- io.ktor:ktor-client-serialization-jvm:3.0.0-rc-1 -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.20 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1 -> 1.9.0 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.9.0 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) +| | | | +--- io.ktor:ktor-client-core:3.0.1 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | +--- io.ktor:ktor-client-serialization:3.0.1 +| | | | \--- io.ktor:ktor-client-serialization-jvm:3.0.1 | | | | +--- org.slf4j:slf4j-api:2.0.16 -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.9.0 (*) -| | | | +--- io.ktor:ktor-client-core:3.0.0-rc-1 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.2 (*) -| | | | +--- io.ktor:ktor-client-json:3.0.0-rc-1 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | +--- io.ktor:ktor-client-content-negotiation:3.0.0-rc-1 -| | | | \--- io.ktor:ktor-client-content-negotiation-jvm:3.0.0-rc-1 -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.20 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1 -> 1.9.0 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) +| | | | +--- io.ktor:ktor-client-core:3.0.1 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 (*) +| | | | +--- io.ktor:ktor-client-json:3.0.1 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | +--- io.ktor:ktor-client-content-negotiation:3.0.1 +| | | | \--- io.ktor:ktor-client-content-negotiation-jvm:3.0.1 | | | | +--- org.slf4j:slf4j-api:2.0.16 -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.9.0 (*) -| | | | +--- io.ktor:ktor-client-core:3.0.0-rc-1 (*) -| | | | +--- io.ktor:ktor-serialization:3.0.0-rc-1 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | +--- io.ktor:ktor-client-auth:3.0.0-rc-1 -| | | | \--- io.ktor:ktor-client-auth-jvm:3.0.0-rc-1 -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.20 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1 -> 1.9.0 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) +| | | | +--- io.ktor:ktor-client-core:3.0.1 (*) +| | | | +--- io.ktor:ktor-serialization:3.0.1 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | +--- io.ktor:ktor-client-auth:3.0.1 +| | | | \--- io.ktor:ktor-client-auth-jvm:3.0.1 | | | | +--- org.slf4j:slf4j-api:2.0.16 -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.9.0 (*) -| | | | +--- io.ktor:ktor-client-core:3.0.0-rc-1 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | +--- io.ktor:ktor-serialization-kotlinx-json:3.0.0-rc-1 -| | | | \--- io.ktor:ktor-serialization-kotlinx-json-jvm:3.0.0-rc-1 -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.20 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1 -> 1.9.0 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) +| | | | +--- io.ktor:ktor-client-core:3.0.1 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | +--- io.ktor:ktor-serialization-kotlinx-json:3.0.1 +| | | | \--- io.ktor:ktor-serialization-kotlinx-json-jvm:3.0.1 | | | | +--- org.slf4j:slf4j-api:2.0.16 -| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.9.0 (*) -| | | | +--- io.ktor:ktor-http:3.0.0-rc-1 (*) -| | | | +--- io.ktor:ktor-serialization-kotlinx:3.0.0-rc-1 -| | | | | \--- io.ktor:ktor-serialization-kotlinx-jvm:3.0.0-rc-1 -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.20 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1 -> 1.9.0 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) +| | | | +--- io.ktor:ktor-http:3.0.1 (*) +| | | | +--- io.ktor:ktor-serialization-kotlinx:3.0.1 +| | | | | \--- io.ktor:ktor-serialization-kotlinx-jvm:3.0.1 | | | | | +--- org.slf4j:slf4j-api:2.0.16 -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.9.0 (*) -| | | | | +--- io.ktor:ktor-http:3.0.0-rc-1 (*) -| | | | | +--- io.ktor:ktor-serialization:3.0.0-rc-1 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.2 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.2 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | +--- de.jensklingenberg.ktorfit:ktorfit-lib-ktor-3.0.0-beta-2:2.1.0 -| | | | \--- de.jensklingenberg.ktorfit:ktorfit-lib-ktor-3.0.0-beta-2-android:2.1.0 -| | | | +--- io.ktor:ktor-client-cio-jvm:3.0.0-beta-2 -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.0 -> 2.0.20 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.0 -> 2.0.20 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.0 -> 1.9.0 (*) -| | | | | +--- org.slf4j:slf4j-api:2.0.13 -> 2.0.16 -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.9.0 (*) -| | | | | +--- io.ktor:ktor-client-core:3.0.0-beta-2 -> 3.0.0-rc-1 (*) -| | | | | +--- io.ktor:ktor-http-cio:3.0.0-beta-2 -| | | | | | \--- io.ktor:ktor-http-cio-jvm:3.0.0-beta-2 -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.0 -> 2.0.20 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.0 -> 2.0.20 (*) -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.0 -> 1.9.0 (*) -| | | | | | +--- org.slf4j:slf4j-api:2.0.13 -> 2.0.16 -| | | | | | +--- io.ktor:ktor-network:3.0.0-beta-2 -| | | | | | | \--- io.ktor:ktor-network-jvm:3.0.0-beta-2 -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.0 -> 2.0.20 (*) -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.0 -> 2.0.20 (*) -| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.0 -> 1.9.0 (*) -| | | | | | | +--- org.slf4j:slf4j-api:2.0.13 -> 2.0.16 -| | | | | | | +--- io.ktor:ktor-utils:3.0.0-beta-2 -> 3.0.0-rc-1 (*) -| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.9.0 (*) -| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.20 (*) -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.9.0 (*) -| | | | | | +--- io.ktor:ktor-http:3.0.0-beta-2 -> 3.0.0-rc-1 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.20 (*) -| | | | | +--- io.ktor:ktor-websockets:3.0.0-beta-2 -> 3.0.0-rc-1 (*) -| | | | | +--- io.ktor:ktor-network-tls:3.0.0-beta-2 -| | | | | | \--- io.ktor:ktor-network-tls-jvm:3.0.0-beta-2 -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.0 -> 2.0.20 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.0 -> 2.0.20 (*) -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.0 -> 1.9.0 (*) -| | | | | | +--- org.slf4j:slf4j-api:2.0.13 -> 2.0.16 -| | | | | | +--- io.ktor:ktor-http:3.0.0-beta-2 -> 3.0.0-rc-1 (*) -| | | | | | +--- io.ktor:ktor-network:3.0.0-beta-2 (*) -| | | | | | +--- io.ktor:ktor-utils:3.0.0-beta-2 -> 3.0.0-rc-1 (*) -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.9.0 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.20 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.20 (*) -| | | | +--- de.jensklingenberg.ktorfit:ktorfit-lib-light-ktor-3.0.0-beta-2:2.1.0 -| | | | | \--- de.jensklingenberg.ktorfit:ktorfit-lib-light-ktor-3.0.0-beta-2-android:2.1.0 -| | | | | +--- de.jensklingenberg.ktorfit:ktorfit-annotations:2.1.0 -| | | | | | \--- de.jensklingenberg.ktorfit:ktorfit-annotations-android:2.1.0 -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.20 (*) -| | | | | +--- io.ktor:ktor-client-core:3.0.0-beta-2 -> 3.0.0-rc-1 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.20 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.20 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) +| | | | | +--- io.ktor:ktor-http:3.0.1 (*) +| | | | | +--- io.ktor:ktor-serialization:3.0.1 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.7.3 +| | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.7.3 +| | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.0.21 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 (*) +| | | | | \--- org.jetbrains.kotlinx:kotlinx-io-core:0.4.0 -> 0.5.4 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | +--- de.jensklingenberg.ktorfit:ktorfit-lib:2.2.0 +| | | | \--- de.jensklingenberg.ktorfit:ktorfit-lib-android:2.2.0 +| | | | +--- io.ktor:ktor-client-okhttp:3.0.1 (*) +| | | | +--- de.jensklingenberg.ktorfit:ktorfit-lib-light:2.2.0 +| | | | | \--- de.jensklingenberg.ktorfit:ktorfit-lib-light-android:2.2.0 +| | | | | +--- de.jensklingenberg.ktorfit:ktorfit-annotations:2.2.0 +| | | | | | \--- de.jensklingenberg.ktorfit:ktorfit-annotations-android:2.2.0 +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | | | +--- io.ktor:ktor-client-core:3.0.1 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) | | | \--- com.squareup.okio:okio:3.9.1 (*) | | +--- project :core:analytics -| | | +--- com.google.firebase:firebase-bom:33.5.1 +| | | +--- com.google.firebase:firebase-bom:33.6.0 | | | | +--- com.google.firebase:firebase-encoders:17.0.0 (c) | | | | +--- com.google.firebase:firebase-analytics-ktx:22.1.2 (c) | | | | +--- com.google.firebase:firebase-analytics:22.1.2 (c) @@ -1162,7 +1078,7 @@ | | | | | | +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*) | | | | | | +--- androidx.legacy:legacy-support-core-utils:1.0.0 | | | | | | | +--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*) -| | | | | | | +--- androidx.core:core:1.0.0 -> 1.13.1 (*) +| | | | | | | +--- androidx.core:core:1.0.0 -> 1.15.0 (*) | | | | | | | +--- androidx.documentfile:documentfile:1.0.0 | | | | | | | | \--- androidx.annotation:annotation:1.0.0 -> 1.8.1 (*) | | | | | | | +--- androidx.loader:loader:1.0.0 -> 1.1.0 (*) @@ -1173,24 +1089,24 @@ | | | | | | +--- com.google.android.gms:play-services-ads-identifier:18.0.0 | | | | | | | \--- com.google.android.gms:play-services-basement:18.0.0 -> 18.4.0 | | | | | | | +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*) -| | | | | | | +--- androidx.core:core:1.2.0 -> 1.13.1 (*) -| | | | | | | \--- androidx.fragment:fragment:1.1.0 -> 1.8.2 (*) +| | | | | | | +--- androidx.core:core:1.2.0 -> 1.15.0 (*) +| | | | | | | \--- androidx.fragment:fragment:1.1.0 -> 1.8.3 (*) | | | | | | +--- com.google.android.gms:play-services-basement:18.4.0 (*) | | | | | | +--- com.google.android.gms:play-services-measurement-base:22.1.2 | | | | | | | \--- com.google.android.gms:play-services-basement:18.4.0 (*) | | | | | | +--- com.google.android.gms:play-services-measurement-impl:22.1.2 | | | | | | | +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*) -| | | | | | | +--- androidx.core:core:1.9.0 -> 1.13.1 (*) +| | | | | | | +--- androidx.core:core:1.9.0 -> 1.15.0 (*) | | | | | | | +--- androidx.privacysandbox.ads:ads-adservices:1.0.0-beta05 | | | | | | | | +--- androidx.annotation:annotation:1.6.0 -> 1.8.1 (*) -| | | | | | | | +--- androidx.core:core-ktx:1.8.0 -> 1.13.1 (*) -| | | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.21 -> 2.0.20 (*) +| | | | | | | | +--- androidx.core:core-ktx:1.8.0 -> 1.15.0 (*) +| | | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.21 -> 2.0.21 (*) | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1 -> 1.9.0 (*) | | | | | | | | \--- androidx.privacysandbox.ads:ads-adservices-java:1.0.0-beta05 (c) | | | | | | | +--- androidx.privacysandbox.ads:ads-adservices-java:1.0.0-beta05 | | | | | | | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*) | | | | | | | | +--- androidx.concurrent:concurrent-futures:1.1.0 (*) -| | | | | | | | +--- androidx.core:core-ktx:1.8.0 -> 1.13.1 (*) +| | | | | | | | +--- androidx.core:core-ktx:1.8.0 -> 1.15.0 (*) | | | | | | | | +--- androidx.privacysandbox.ads:ads-adservices:1.0.0-beta05 (*) | | | | | | | | +--- com.google.guava:guava:31.1-android -> 33.3.1-android | | | | | | | | | +--- com.google.guava:failureaccess:1.0.2 @@ -1200,14 +1116,14 @@ | | | | | | | | | +--- com.google.errorprone:error_prone_annotations:2.28.0 | | | | | | | | | \--- com.google.j2objc:j2objc-annotations:3.0.0 | | | | | | | | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava -| | | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.21 -> 2.0.20 (*) +| | | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.21 -> 2.0.21 (*) | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1 -> 1.9.0 (*) | | | | | | | | \--- androidx.privacysandbox.ads:ads-adservices:1.0.0-beta05 (c) | | | | | | | +--- com.google.android.gms:play-services-ads-identifier:18.0.0 (*) | | | | | | | +--- com.google.android.gms:play-services-base:18.5.0 | | | | | | | | +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*) -| | | | | | | | +--- androidx.core:core:1.2.0 -> 1.13.1 (*) -| | | | | | | | +--- androidx.fragment:fragment:1.0.0 -> 1.8.2 (*) +| | | | | | | | +--- androidx.core:core:1.2.0 -> 1.15.0 (*) +| | | | | | | | +--- androidx.fragment:fragment:1.0.0 -> 1.8.3 (*) | | | | | | | | +--- com.google.android.gms:play-services-basement:18.4.0 (*) | | | | | | | | \--- com.google.android.gms:play-services-tasks:18.2.0 | | | | | | | | \--- com.google.android.gms:play-services-basement:18.4.0 (*) @@ -1232,7 +1148,7 @@ | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0 (*) | | | | | | | | +--- com.google.android.gms:play-services-tasks:16.0.1 -> 18.2.0 (*) -| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.20 (*) +| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.21 (*) | | | | | | | +--- com.google.firebase:firebase-components:18.0.0 | | | | | | | | +--- com.google.firebase:firebase-annotations:16.2.0 | | | | | | | | | \--- javax.inject:javax.inject:1 @@ -1241,12 +1157,12 @@ | | | | | | | +--- com.google.firebase:firebase-annotations:16.2.0 (*) | | | | | | | +--- androidx.annotation:annotation:1.5.0 -> 1.8.1 (*) | | | | | | | +--- androidx.concurrent:concurrent-futures:1.1.0 (*) -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | | | | +--- com.google.android.gms:play-services-basement:18.3.0 -> 18.4.0 (*) | | | | | | | \--- com.google.android.gms:play-services-tasks:18.1.0 -> 18.2.0 (*) | | | | | | +--- com.google.firebase:firebase-common-ktx:21.0.0 | | | | | | | +--- com.google.firebase:firebase-common:21.0.0 (*) -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 -> 2.0.20 (*) +| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 -> 1.9.20 (*) | | | | | | | +--- com.google.firebase:firebase-components:18.0.0 (*) | | | | | | | \--- com.google.firebase:firebase-annotations:16.2.0 (*) | | | | | | +--- com.google.firebase:firebase-components:18.0.0 (*) @@ -1259,13 +1175,13 @@ | | | | | | | +--- com.google.firebase:firebase-installations-interop:17.1.1 | | | | | | | | +--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.2.0 (*) | | | | | | | | \--- com.google.firebase:firebase-annotations:16.2.0 (*) -| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | | | +--- com.google.firebase:firebase-installations-interop:17.0.0 -> 17.1.1 (*) | | | | | | +--- com.google.firebase:firebase-measurement-connector:19.0.0 | | | | | | | +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.4.0 (*) | | | | | | | \--- com.google.firebase:firebase-annotations:16.0.0 -> 16.2.0 (*) | | | | | | +--- com.google.guava:guava:31.1-android -> 33.3.1-android (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.0.20 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.0.21 (*) | | | | | \--- com.google.android.gms:play-services-measurement-sdk:22.1.2 | | | | | +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*) | | | | | +--- com.google.android.gms:play-services-basement:18.4.0 (*) @@ -1274,29 +1190,29 @@ | | | | +--- com.google.firebase:firebase-common:21.0.0 (*) | | | | +--- com.google.firebase:firebase-common-ktx:21.0.0 (*) | | | | +--- com.google.firebase:firebase-components:18.0.0 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.0.20 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.0.21 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | | +--- io.insert-koin:koin-core:4.0.0 (*) | | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | | \--- org.jetbrains.compose.runtime:runtime:1.7.0-rc01 -> 1.7.0 (*) -| | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.2 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :core:network (*) -| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| +--- io.insert-koin:koin-core:4.0.0 (*) | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | +--- project :core:ui | | +--- androidx.metrics:metrics-performance:1.0.0-beta01 | | | +--- androidx.collection:collection:1.1.0 -> 1.4.4 (*) -| | | +--- androidx.core:core:1.5.0 -> 1.13.1 (*) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | +--- androidx.core:core:1.5.0 -> 1.15.0 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | +--- androidx.browser:browser:1.8.0 | | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*) | | | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*) | | | +--- androidx.collection:collection:1.1.0 -> 1.4.4 (*) | | | +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*) -| | | +--- androidx.core:core:1.1.0 -> 1.13.1 (*) +| | | +--- androidx.core:core:1.1.0 -> 1.15.0 (*) | | | +--- androidx.interpolator:interpolator:1.0.0 (*) | | | \--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava | | +--- androidx.compose.runtime:runtime -> 1.7.5 (*) @@ -1321,7 +1237,7 @@ | | | | | | +--- androidx.compose.ui:ui-graphics:1.7.5 (*) | | | | | | +--- androidx.compose.ui:ui-unit:1.7.5 (*) | | | | | | +--- androidx.compose.ui:ui-util:1.7.5 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.9.0 (*) | | | | | | \--- androidx.compose.animation:animation:1.7.5 (c) | | | | | +--- androidx.compose.foundation:foundation-layout:1.7.5 @@ -1334,29 +1250,29 @@ | | | | | | +--- androidx.compose.ui:ui:1.7.5 (*) | | | | | | +--- androidx.compose.ui:ui-unit:1.7.5 (*) | | | | | | +--- androidx.compose.ui:ui-util:1.7.5 (*) -| | | | | | +--- androidx.core:core:1.7.0 -> 1.13.1 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | | | +--- androidx.core:core:1.7.0 -> 1.15.0 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | | | \--- androidx.compose.foundation:foundation:1.7.5 (c) | | | | | +--- androidx.compose.runtime:runtime:1.7.5 (*) | | | | | +--- androidx.compose.ui:ui:1.7.5 (*) | | | | | +--- androidx.compose.ui:ui-geometry:1.7.5 (*) | | | | | +--- androidx.compose.ui:ui-graphics:1.7.5 (*) | | | | | +--- androidx.compose.ui:ui-util:1.7.5 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | | \--- androidx.compose.animation:animation-core:1.7.5 (c) | | | | +--- androidx.compose.foundation:foundation-layout:1.7.5 (*) | | | | +--- androidx.compose.runtime:runtime:1.7.5 (*) | | | | +--- androidx.compose.ui:ui:1.7.5 (*) | | | | +--- androidx.compose.ui:ui-text:1.7.5 (*) | | | | +--- androidx.compose.ui:ui-util:1.7.5 (*) -| | | | +--- androidx.core:core:1.13.1 (*) +| | | | +--- androidx.core:core:1.13.1 -> 1.15.0 (*) | | | | +--- androidx.emoji2:emoji2:1.3.0 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | \--- androidx.compose.foundation:foundation-layout:1.7.5 (c) | | | +--- dev.chrisbanes.snapper:snapper:0.2.2 | | | | +--- androidx.compose.foundation:foundation:1.1.1 -> 1.7.5 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10 -> 2.0.20 (*) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.20 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10 -> 1.9.20 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.21 (*) | | +--- project :core:analytics (*) | | +--- project :core:designsystem | | | +--- androidx.compose.ui:ui-tooling-preview -> 1.7.5 (*) @@ -1366,17 +1282,17 @@ | | | | +--- androidx.compose.runtime:runtime-saveable:1.0.1 -> 1.7.5 (*) | | | | +--- androidx.compose.ui:ui:1.0.1 -> 1.7.5 (*) | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.8.7 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | +--- androidx.activity:activity:1.9.3 (c) | | | | \--- androidx.activity:activity-ktx:1.9.3 (c) | | | +--- project :core:model (*) | | | +--- com.arkivanov.essenty:back-handler:2.1.0 | | | | \--- com.arkivanov.essenty:back-handler-android:2.1.0 | | | | +--- androidx.activity:activity-ktx:1.8.1 -> 1.9.3 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.20 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.21 (*) | | | | \--- com.arkivanov.essenty:utils-internal:2.1.0 | | | | \--- com.arkivanov.essenty:utils-internal-android:2.1.0 -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.20 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.0.21 (*) | | | +--- dev.chrisbanes.material3:material3-window-size-class-multiplatform:0.5.0 | | | | \--- dev.chrisbanes.material3:material3-window-size-class-multiplatform-android:0.5.0 | | | | +--- androidx.window:window:1.2.0 -> 1.3.0 (*) @@ -1388,7 +1304,7 @@ | | | | | | +--- androidx.lifecycle:lifecycle-runtime:2.8.5 -> 2.8.7 (*) | | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.3-rc01 (*) | | | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.6.11 -> 1.7.0 (*) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.21 (*) | | | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.9.0 (*) | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.3-rc01 | | | | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.5 -> 2.8.7 (*) @@ -1396,7 +1312,7 @@ | | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.3-rc01 (*) | | | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.6.11 -> 1.7.0 (*) | | | | | | +--- org.jetbrains.compose.runtime:runtime:1.6.11 -> 1.7.0 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.21 (*) | | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.3-rc01 (*) | | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.7.0-rc01 -> 1.7.0 (*) | | | | | +--- org.jetbrains.compose.collection-internal:collection:1.7.0-rc01 -> 1.7.0 (*) @@ -1404,7 +1320,7 @@ | | | | | +--- org.jetbrains.compose.runtime:runtime-saveable:1.7.0-rc01 | | | | | | +--- androidx.compose.runtime:runtime-saveable:1.7.1 -> 1.7.5 (*) | | | | | | +--- org.jetbrains.compose.runtime:runtime:1.7.0-rc01 -> 1.7.0 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.9.24 -> 2.0.20 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.9.24 -> 2.0.21 (*) | | | | | +--- org.jetbrains.compose.ui:ui-geometry:1.7.0-rc01 | | | | | | +--- androidx.compose.ui:ui-geometry:1.7.1 -> 1.7.5 (*) | | | | | | +--- org.jetbrains.compose.runtime:runtime:1.7.0-rc01 -> 1.7.0 (*) @@ -1436,20 +1352,20 @@ | | | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.9.0 (*) | | | | | +--- org.jetbrains.compose.ui:ui-unit:1.7.0-rc01 (*) | | | | | +--- org.jetbrains.compose.ui:ui-util:1.7.0-rc01 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.9.24 -> 2.0.20 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.9.24 -> 2.0.21 (*) | | | | | +--- org.jetbrains.kotlinx:atomicfu:0.23.2 (*) | | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.9.0 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.20 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.21 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | | +--- io.insert-koin:koin-core:4.0.0 (*) | | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | | +--- io.coil-kt.coil3:coil-compose-core:3.0.0-alpha10 | | | | \--- io.coil-kt.coil3:coil-compose-core-android:3.0.0-alpha10 | | | | +--- com.google.accompanist:accompanist-drawablepainter:0.34.0 | | | | | +--- androidx.compose.ui:ui:1.6.0 -> 1.7.5 (*) | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4 -> 1.9.0 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.20 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.21 (*) | | | | +--- io.coil-kt.coil3:coil-core:3.0.0-alpha10 (*) | | | | +--- org.jetbrains.compose.foundation:foundation:1.6.11 -> 1.7.0-rc01 | | | | | +--- androidx.compose.foundation:foundation:1.7.1 -> 1.7.5 (*) @@ -1483,7 +1399,7 @@ | | | | | +--- org.jetbrains.compose.ui:ui:1.7.0-rc01 (*) | | | | | +--- org.jetbrains.compose.ui:ui-text:1.7.0-rc01 (*) | | | | | \--- org.jetbrains.compose.ui:ui-util:1.7.0-rc01 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.10 -> 2.0.20 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.10 -> 2.0.21 (*) | | | +--- org.jetbrains.compose.runtime:runtime:1.7.0-rc01 -> 1.7.0 (*) | | | +--- org.jetbrains.compose.foundation:foundation:1.7.0-rc01 (*) | | | +--- org.jetbrains.compose.material3:material3:1.7.0-rc01 @@ -1499,7 +1415,7 @@ | | | | | +--- androidx.compose.material:material-icons-core:1.6.0 -> 1.7.5 | | | | | | \--- androidx.compose.material:material-icons-core-android:1.7.5 | | | | | | +--- androidx.compose.ui:ui:1.6.0 -> 1.7.5 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | | +--- androidx.compose.material:material-ripple:1.7.0 -> 1.7.5 | | | | | | \--- androidx.compose.material:material-ripple-android:1.7.5 | | | | | | +--- androidx.collection:collection:1.4.0 -> 1.4.4 (*) @@ -1507,7 +1423,7 @@ | | | | | | +--- androidx.compose.foundation:foundation:1.7.5 (*) | | | | | | +--- androidx.compose.runtime:runtime:1.7.5 (*) | | | | | | +--- androidx.compose.ui:ui-util:1.7.5 (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | | +--- androidx.compose.runtime:runtime:1.7.0 -> 1.7.5 (*) | | | | | +--- androidx.compose.ui:ui:1.6.0 -> 1.7.5 (*) | | | | | +--- androidx.compose.ui:ui-text:1.6.0 -> 1.7.5 (*) @@ -1545,18 +1461,18 @@ | | | +--- org.jetbrains.compose.ui:ui-util:1.7.0-rc01 (*) | | | +--- org.jetbrains.compose.components:components-resources:1.7.0-rc01 | | | | \--- org.jetbrains.compose.components:components-resources-android:1.7.0-rc01 -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.0.20 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.0.21 (*) | | | | +--- org.jetbrains.compose.runtime:runtime:1.7.0-rc01 -> 1.7.0 (*) | | | | +--- org.jetbrains.compose.foundation:foundation:1.7.0-rc01 (*) | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 -> 1.9.0 (*) | | | \--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 | | | \--- org.jetbrains.compose.components:components-ui-tooling-preview-android:1.7.0-rc01 -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.0.20 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.0.21 (*) | | +--- project :core:model (*) | | +--- project :core:common (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4 -> 2.8.7 (*) @@ -1568,7 +1484,7 @@ | | | +--- org.jetbrains.compose.runtime:runtime:1.6.11 -> 1.7.0 (*) | | | +--- org.jetbrains.compose.runtime:runtime-saveable:1.6.11 -> 1.7.0-rc01 (*) | | | +--- org.jetbrains.compose.ui:ui:1.6.11 -> 1.7.0-rc01 (*) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.21 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.2 (*) | | +--- io.coil-kt.coil3:coil:3.0.0-alpha10 (*) @@ -1578,7 +1494,7 @@ | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) | | +--- org.jetbrains.androidx.navigation:navigation-compose:2.8.0-alpha10 | | | +--- androidx.activity:activity-compose:1.8.0 -> 1.9.3 (*) -| | | +--- androidx.navigation:navigation-compose:2.8.0-rc01 -> 2.8.3 +| | | +--- androidx.navigation:navigation-compose:2.8.0-rc01 -> 2.8.4 | | | | +--- androidx.activity:activity-compose:1.8.0 -> 1.9.3 (*) | | | | +--- androidx.compose.animation:animation:1.7.2 -> 1.7.5 (*) | | | | +--- androidx.compose.foundation:foundation-layout:1.7.2 -> 1.7.5 (*) @@ -1586,15 +1502,15 @@ | | | | +--- androidx.compose.runtime:runtime-saveable:1.7.2 -> 1.7.5 (*) | | | | +--- androidx.compose.ui:ui:1.7.2 -> 1.7.5 (*) | | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2 -> 2.8.7 (*) -| | | | +--- androidx.navigation:navigation-runtime-ktx:2.8.3 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) -| | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 -> 1.7.2 (*) -| | | | +--- androidx.navigation:navigation-runtime-ktx:2.8.3 (c) -| | | | +--- androidx.navigation:navigation-fragment-ktx:2.8.3 (c) -| | | | +--- androidx.navigation:navigation-common-ktx:2.8.3 (c) -| | | | +--- androidx.navigation:navigation-runtime:2.8.3 (c) -| | | | +--- androidx.navigation:navigation-fragment:2.8.3 (c) -| | | | \--- androidx.navigation:navigation-common:2.8.3 (c) +| | | | +--- androidx.navigation:navigation-runtime-ktx:2.8.4 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 -> 1.7.3 (*) +| | | | +--- androidx.navigation:navigation-runtime-ktx:2.8.4 (c) +| | | | +--- androidx.navigation:navigation-fragment-ktx:2.8.4 (c) +| | | | +--- androidx.navigation:navigation-common-ktx:2.8.4 (c) +| | | | +--- androidx.navigation:navigation-runtime:2.8.4 (c) +| | | | +--- androidx.navigation:navigation-fragment:2.8.4 (c) +| | | | \--- androidx.navigation:navigation-common:2.8.4 (c) | | | +--- org.jetbrains.androidx.core:core-bundle:1.0.1 (*) | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.2 -> 2.8.3-rc01 (*) | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.2 -> 2.8.3-rc01 (*) @@ -1603,8 +1519,8 @@ | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.2 (*) | | | +--- org.jetbrains.androidx.navigation:navigation-common:2.8.0-alpha10 -| | | | +--- androidx.core:core-ktx:1.1.0 -> 1.13.1 (*) -| | | | +--- androidx.navigation:navigation-common:2.8.0-rc01 -> 2.8.3 (*) +| | | | +--- androidx.core:core-ktx:1.1.0 -> 1.15.0 (*) +| | | | +--- androidx.navigation:navigation-common:2.8.0-rc01 -> 2.8.4 (*) | | | | +--- androidx.profileinstaller:profileinstaller:1.3.0 -> 1.4.1 (*) | | | | +--- org.jetbrains.androidx.core:core-bundle:1.0.1 (*) | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.2 -> 2.8.3-rc01 (*) @@ -1614,11 +1530,11 @@ | | | | +--- org.jetbrains.androidx.savedstate:savedstate:1.2.2 (*) | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.7.0-beta02 -> 1.7.0 (*) | | | | +--- org.jetbrains.compose.collection-internal:collection:1.7.0-beta02 -> 1.7.0 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*) -| | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2 -> 1.7.2 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.21 (*) +| | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2 -> 1.7.3 (*) | | | +--- org.jetbrains.androidx.navigation:navigation-runtime:2.8.0-alpha10 | | | | +--- androidx.activity:activity-ktx:1.7.1 -> 1.9.3 (*) -| | | | +--- androidx.navigation:navigation-runtime:2.8.0-rc01 -> 2.8.3 (*) +| | | | +--- androidx.navigation:navigation-runtime:2.8.0-rc01 -> 2.8.4 (*) | | | | +--- org.jetbrains.androidx.core:core-bundle:1.0.1 (*) | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.2 -> 2.8.3-rc01 (*) | | | | +--- org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.2 -> 2.8.3-rc01 (*) @@ -1628,8 +1544,8 @@ | | | | +--- org.jetbrains.androidx.savedstate:savedstate:1.2.2 (*) | | | | +--- org.jetbrains.compose.annotation-internal:annotation:1.7.0-beta02 -> 1.7.0 (*) | | | | +--- org.jetbrains.compose.collection-internal:collection:1.7.0-beta02 -> 1.7.0 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*) -| | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2 -> 1.7.2 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.21 (*) +| | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2 -> 1.7.3 (*) | | | +--- org.jetbrains.androidx.savedstate:savedstate:1.2.2 (*) | | | +--- org.jetbrains.compose.animation:animation:1.7.0-beta02 -> 1.7.0-rc01 (*) | | | +--- org.jetbrains.compose.animation:animation-core:1.7.0-beta02 -> 1.7.0-rc01 (*) @@ -1637,28 +1553,28 @@ | | | +--- org.jetbrains.compose.runtime:runtime:1.7.0-beta02 -> 1.7.0 (*) | | | +--- org.jetbrains.compose.runtime:runtime-saveable:1.7.0-beta02 -> 1.7.0-rc01 (*) | | | +--- org.jetbrains.compose.ui:ui:1.7.0-beta02 -> 1.7.0-rc01 (*) -| | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2 -> 1.7.2 (*) +| | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2 -> 1.7.3 (*) | | +--- io.github.vinceglb:filekit-compose:0.8.7 | | | \--- io.github.vinceglb:filekit-compose-android:0.8.7 | | | +--- androidx.activity:activity-compose:1.9.2 -> 1.9.3 (*) | | | +--- io.github.vinceglb:filekit-core:0.8.7 | | | | \--- io.github.vinceglb:filekit-core-android:0.8.7 | | | | +--- androidx.activity:activity-ktx:1.9.2 -> 1.9.3 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.0.21 (*) | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.0.21 (*) | | | +--- org.jetbrains.compose.runtime:runtime:1.6.11 -> 1.7.0 (*) | | | +--- org.jetbrains.compose.ui:ui:1.6.11 -> 1.7.0-rc01 (*) | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) | | \--- io.github.vinceglb:filekit-core:0.8.7 (*) | +--- project :core:designsystem (*) -| +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 -| | \--- io.insert-koin:koin-compose-viewmodel-jvm:4.0.0-RC2 -| | +--- io.insert-koin:koin-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) +| +--- io.insert-koin:koin-compose:4.0.0 (*) +| +--- io.insert-koin:koin-compose-viewmodel:4.0.0 +| | \--- io.insert-koin:koin-compose-viewmodel-jvm:4.0.0 +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.0 -> 2.8.2 (*) -| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.0.21 (*) | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -1668,11 +1584,11 @@ | +--- org.jetbrains.androidx.navigation:navigation-compose:2.8.0-alpha10 (*) | +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 | | \--- org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8 -| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.0.21 (*) | +--- project :core:domain -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:common (*) | | +--- project :core:data (*) @@ -1687,20 +1603,20 @@ | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) | | +--- androidx.credentials:credentials:1.3.0 | | | +--- androidx.annotation:annotation:1.5.0 -> 1.8.1 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.9.0 (*) | | | \--- androidx.credentials:credentials-play-services-auth:1.3.0 (c) | | +--- androidx.credentials:credentials-play-services-auth:1.3.0 | | | +--- androidx.credentials:credentials:1.3.0 (*) | | | +--- com.google.android.gms:play-services-auth:21.1.1 -> 21.2.0 -| | | | +--- androidx.fragment:fragment:1.5.7 -> 1.8.2 (*) +| | | | +--- androidx.fragment:fragment:1.5.7 -> 1.8.3 (*) | | | | +--- androidx.loader:loader:1.1.0 (*) | | | | +--- com.google.android.gms:play-services-auth-api-phone:18.0.2 | | | | | +--- com.google.android.gms:play-services-base:18.0.1 -> 18.5.0 (*) @@ -1717,25 +1633,25 @@ | | | | | +--- com.google.android.gms:play-services-base:18.3.0 -> 18.5.0 (*) | | | | | +--- com.google.android.gms:play-services-basement:18.3.0 -> 18.4.0 (*) | | | | | +--- com.google.android.gms:play-services-tasks:18.1.0 -> 18.2.0 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.0 -> 2.0.20 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.0 -> 1.9.20 (*) | | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.9.0 (*) | | | | \--- com.google.android.gms:play-services-tasks:18.1.0 -> 18.2.0 (*) | | | +--- com.google.android.gms:play-services-fido:21.0.0 (*) | | | +--- com.google.android.libraries.identity.googleid:googleid:1.1.0 -> 1.1.1 | | | | +--- androidx.credentials:credentials:1.3.0-beta01 -> 1.3.0 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.0 -> 2.0.20 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 2.0.20 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.0 -> 2.0.21 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 1.9.20 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | \--- androidx.credentials:credentials:1.3.0 (c) | | +--- com.google.android.libraries.identity.googleid:googleid:1.1.1 (*) | | +--- com.google.android.gms:play-services-auth:21.2.0 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -1750,27 +1666,27 @@ | | +--- org.jetbrains.compose.ui:ui:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-resources:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- org.jetbrains.kotlin:kotlin-reflect:2.0.20 -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-reflect:2.0.21 +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :libs:mifos-passcode | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) | | +--- com.google.protobuf:protobuf-kotlin-lite:4.26.0 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -1785,31 +1701,31 @@ | | +--- org.jetbrains.compose.material:material-icons-extended:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-resources:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- org.jetbrains.kotlin:kotlin-reflect:2.0.20 (*) -| | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.2 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- org.jetbrains.kotlin:kotlin-reflect:2.0.21 (*) +| | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 (*) | | +--- com.russhwolf:multiplatform-settings-no-arg:1.2.0 (*) | | +--- com.russhwolf:multiplatform-settings-serialization:1.2.0 (*) | | +--- com.russhwolf:multiplatform-settings-coroutines:1.2.0 (*) | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:home | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -1823,24 +1739,24 @@ | | +--- org.jetbrains.compose.material3:material3:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-resources:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:settings | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -1854,24 +1770,24 @@ | | +--- org.jetbrains.compose.material3:material3:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-resources:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:faq | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -1885,24 +1801,24 @@ | | +--- org.jetbrains.compose.material3:material3:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-resources:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:editpassword | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -1916,24 +1832,24 @@ | | +--- org.jetbrains.compose.material3:material3:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-resources:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:profile | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -1950,24 +1866,24 @@ | | +--- io.coil-kt.coil3:coil-compose-core:3.0.0-alpha10 (*) | | +--- io.github.vinceglb:filekit-core:0.8.7 (*) | | +--- io.github.vinceglb:filekit-compose:0.8.7 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:history | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -1981,24 +1897,24 @@ | | +--- org.jetbrains.compose.material3:material3:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-resources:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:payments | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -2012,24 +1928,24 @@ | | +--- org.jetbrains.compose.material3:material3:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-resources:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:finance | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -2043,24 +1959,24 @@ | | +--- org.jetbrains.compose.material3:material3:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-resources:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:accounts | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -2074,25 +1990,25 @@ | | +--- org.jetbrains.compose.material3:material3:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-resources:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) -| | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.2 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:invoices | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -2106,24 +2022,24 @@ | | +--- org.jetbrains.compose.material3:material3:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-resources:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:kyc | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -2139,24 +2055,24 @@ | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) | | +--- io.github.vinceglb:filekit-compose:0.8.7 (*) | | +--- io.coil-kt.coil3:coil-compose-core:3.0.0-alpha10 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:notification | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -2170,24 +2086,24 @@ | | +--- org.jetbrains.compose.material3:material3:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-resources:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:savedcards | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -2207,26 +2123,26 @@ | | | +--- org.jetbrains.compose.ui:ui-util:1.6.10 -> 1.7.0-rc01 (*) | | | +--- org.jetbrains.compose.foundation:foundation:1.6.10 -> 1.7.0-rc01 (*) | | | +--- org.jetbrains.compose.runtime:runtime:1.6.10 -> 1.7.0 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.20 (*) -| | | \--- org.jetbrains.kotlin:kotlin-reflect:1.9.24 -> 2.0.20 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.21 (*) +| | | \--- org.jetbrains.kotlin:kotlin-reflect:1.9.24 -> 2.0.21 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:receipt | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -2241,24 +2157,24 @@ | | +--- org.jetbrains.compose.components:components-resources:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) | | +--- com.squareup.okio:okio:3.9.1 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:standing-instruction | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -2272,24 +2188,24 @@ | | +--- org.jetbrains.compose.material3:material3:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-resources:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:request-money | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -2308,21 +2224,21 @@ | | | \--- io.github.alexzhirkevich:qrose-android:1.0.1 | | | +--- io.github.alexzhirkevich:qrose-core:1.0.1 | | | | \--- io.github.alexzhirkevich:qrose-core-android:1.0.1 -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.20 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.21 (*) | | | | \--- org.jetbrains.compose.ui:ui:1.6.0 -> 1.7.0-rc01 (*) -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.20 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.21 (*) | | | \--- org.jetbrains.compose.ui:ui:1.6.0 -> 1.7.0-rc01 (*) | | +--- com.google.zxing:core:3.5.3 -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:send-money | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) | | +--- com.google.android.gms:play-services-code-scanner:16.1.0 | | | +--- androidx.activity:activity:1.3.1 -> 1.9.3 (*) | | | +--- com.google.android.datatransport:transport-api:2.2.1 @@ -2362,7 +2278,7 @@ | | | | +--- com.google.firebase:firebase-encoders-json:17.1.0 (*) | | | | \--- com.google.mlkit:common:18.6.0 -> 18.11.0 | | | | +--- androidx.appcompat:appcompat:1.6.1 -> 1.7.0 (*) -| | | | +--- androidx.core:core:1.0.0 -> 1.13.1 (*) +| | | | +--- androidx.core:core:1.0.0 -> 1.15.0 (*) | | | | +--- com.google.android.datatransport:transport-api:2.2.1 (*) | | | | +--- com.google.android.datatransport:transport-backend-cct:2.3.3 (*) | | | | +--- com.google.android.datatransport:transport-runtime:2.2.6 (*) @@ -2373,14 +2289,14 @@ | | | | +--- com.google.firebase:firebase-encoders:16.1.0 -> 17.0.0 (*) | | | | \--- com.google.firebase:firebase-encoders-json:17.1.0 (*) | | | \--- com.google.mlkit:common:18.9.0 -> 18.11.0 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -2394,24 +2310,24 @@ | | +--- org.jetbrains.compose.material3:material3:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-resources:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:make-transfer | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -2425,16 +2341,16 @@ | | +--- org.jetbrains.compose.material3:material3:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-resources:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:qr | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) | | +--- androidx.camera:camera-view:1.4.0 | | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*) | | | +--- androidx.annotation:annotation-experimental:1.4.1 (*) @@ -2445,16 +2361,16 @@ | | | | +--- androidx.concurrent:concurrent-futures:1.1.0 (*) | | | | +--- androidx.concurrent:concurrent-futures-ktx:1.1.0 | | | | | +--- androidx.concurrent:concurrent-futures:1.1.0 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.71 -> 2.0.20 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.71 -> 2.0.21 (*) | | | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.4 -> 1.9.0 (*) -| | | | +--- androidx.core:core:1.1.0 -> 1.13.1 (*) +| | | | +--- androidx.core:core:1.1.0 -> 1.15.0 (*) | | | | +--- androidx.exifinterface:exifinterface:1.3.2 -> 1.3.7 (*) | | | | +--- androidx.lifecycle:lifecycle-common:2.1.0 -> 2.8.7 (*) | | | | +--- androidx.lifecycle:lifecycle-livedata:2.1.0 -> 2.8.7 (*) | | | | +--- androidx.tracing:tracing:1.2.0 -> 1.3.0-alpha02 (*) | | | | +--- com.google.auto.value:auto-value-annotations:1.6.3 | | | | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.9.0 (*) | | | | +--- androidx.camera:camera-camera2:1.4.0 (c) | | | | +--- androidx.camera:camera-lifecycle:1.4.0 (c) @@ -2464,7 +2380,7 @@ | | | | +--- androidx.camera:camera-core:1.4.0 (*) | | | | +--- androidx.concurrent:concurrent-futures:1.1.0 (*) | | | | +--- androidx.concurrent:concurrent-futures-ktx:1.1.0 (*) -| | | | +--- androidx.core:core:1.1.0 -> 1.13.1 (*) +| | | | +--- androidx.core:core:1.1.0 -> 1.15.0 (*) | | | | +--- androidx.lifecycle:lifecycle-common:2.1.0 -> 2.8.7 (*) | | | | +--- androidx.tracing:tracing-ktx:1.2.0 -> 1.3.0-alpha02 (*) | | | | +--- com.google.auto.value:auto-value-annotations:1.6.3 @@ -2478,14 +2394,14 @@ | | | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*) | | | | +--- androidx.camera:camera-core:1.4.0 (*) | | | | +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*) -| | | | +--- androidx.core:core:1.1.0 -> 1.13.1 (*) +| | | | +--- androidx.core:core:1.1.0 -> 1.15.0 (*) | | | | +--- com.google.auto.value:auto-value-annotations:1.6.3 | | | | +--- androidx.camera:camera-camera2:1.4.0 (c) | | | | +--- androidx.camera:camera-core:1.4.0 (c) | | | | +--- androidx.camera:camera-lifecycle:1.4.0 (c) | | | | \--- androidx.camera:camera-view:1.4.0 (c) | | | +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*) -| | | +--- androidx.core:core:1.3.2 -> 1.13.1 (*) +| | | +--- androidx.core:core:1.3.2 -> 1.15.0 (*) | | | +--- androidx.lifecycle:lifecycle-common:2.0.0 -> 2.8.7 (*) | | | +--- com.google.auto.value:auto-value-annotations:1.6.3 | | | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava @@ -2497,7 +2413,7 @@ | | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*) | | | +--- androidx.camera:camera-core:1.4.0 (*) | | | +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*) -| | | +--- androidx.core:core:1.1.0 -> 1.13.1 (*) +| | | +--- androidx.core:core:1.1.0 -> 1.15.0 (*) | | | +--- androidx.tracing:tracing:1.2.0 -> 1.3.0-alpha02 (*) | | | +--- com.google.auto.value:auto-value-annotations:1.6.3 | | | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava @@ -2510,7 +2426,7 @@ | | | +--- androidx.activity:activity-compose:1.7.2 -> 1.9.3 (*) | | | +--- androidx.compose.foundation:foundation:1.6.0 -> 1.7.5 (*) | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4 -> 1.9.0 (*) -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.20 (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.21 (*) | | +--- com.google.mlkit:barcode-scanning:17.3.0 | | | +--- com.google.android.gms:play-services-basement:18.4.0 (*) | | | +--- com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1 @@ -2534,14 +2450,14 @@ | | | +--- com.google.mlkit:common:18.11.0 (*) | | | \--- com.google.mlkit:vision-common:17.3.0 (*) | | +--- com.google.guava:guava:33.3.1-android (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -2558,24 +2474,24 @@ | | +--- io.coil-kt.coil3:coil-compose-core:3.0.0-alpha10 (*) | | +--- io.github.vinceglb:filekit-core:0.8.7 (*) | | +--- io.github.vinceglb:filekit-compose:0.8.7 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:merchants | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -2589,24 +2505,24 @@ | | +--- org.jetbrains.compose.material3:material3:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-resources:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) | +--- project :feature:upi-setup | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (*) | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7 (*) | | +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -| | +--- io.insert-koin:koin-bom:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-android:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-compose:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-androidx-navigation:4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-core-viewmodel:4.0.0-RC2 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 (*) -| | +--- io.insert-koin:koin-core:4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-bom:4.0.0 (*) +| | +--- io.insert-koin:koin-android:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-androidx-navigation:4.0.0 (*) +| | +--- io.insert-koin:koin-core-viewmodel:4.0.0 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*) +| | +--- io.insert-koin:koin-core:4.0.0 (*) | | +--- io.insert-koin:koin-annotations:1.4.0-RC4 (*) | | +--- project :core:ui (*) | | +--- project :core:designsystem (*) | | +--- project :core:data (*) -| | +--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -| | +--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) +| | +--- io.insert-koin:koin-compose:4.0.0 (*) +| | +--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) | | +--- org.jetbrains.compose.runtime:runtime:1.7.0 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2 (*) | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.2 -> 2.8.3-rc01 (*) @@ -2620,17 +2536,17 @@ | | +--- org.jetbrains.compose.material3:material3:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-resources:1.7.0-rc01 (*) | | +--- org.jetbrains.compose.components:components-ui-tooling-preview:1.7.0-rc01 (*) -| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) -| \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) +| \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 (*) +--- project :core:data (*) +--- project :core:ui (*) -+--- androidx.core:core-ktx:1.13.1 (*) ++--- androidx.core:core-ktx:1.15.0 (*) +--- androidx.appcompat:appcompat:1.7.0 (*) +--- androidx.activity:activity-compose:1.9.3 (*) +--- androidx.activity:activity-ktx:1.9.3 (*) +--- androidx.core:core-splashscreen:1.0.1 | +--- androidx.annotation:annotation:1.2.0 -> 1.8.1 (*) -| \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 -> 2.0.20 (*) +| \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 -> 2.0.21 (*) +--- androidx.compose.material3:material3 -> 1.3.1 (*) +--- androidx.compose.material3.adaptive:adaptive:1.0.0 | \--- androidx.compose.material3.adaptive:adaptive-android:1.0.0 @@ -2642,10 +2558,10 @@ | +--- androidx.window:window-core:1.3.0 | | \--- androidx.window:window-core-android:1.3.0 | | +--- androidx.annotation:annotation:1.7.0 -> 1.8.1 (*) -| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | | \--- androidx.window:window:1.3.0 (c) -| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) -| +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.8.22 -> 2.0.20 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.8.22 -> 2.0.21 (*) | +--- androidx.compose.material3.adaptive:adaptive-layout:1.0.0 (c) | \--- androidx.compose.material3.adaptive:adaptive-navigation:1.0.0 (c) +--- androidx.compose.material3.adaptive:adaptive-layout:1.0.0 @@ -2661,8 +2577,8 @@ | +--- androidx.compose.ui:ui-geometry:1.6.5 -> 1.7.5 (*) | +--- androidx.compose.ui:ui-util:1.6.5 -> 1.7.5 (*) | +--- androidx.window:window-core:1.3.0 (*) -| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) -| +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.8.22 -> 2.0.20 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.8.22 -> 2.0.21 (*) | +--- androidx.compose.material3.adaptive:adaptive:1.0.0 (c) | \--- androidx.compose.material3.adaptive:adaptive-navigation:1.0.0 (c) +--- androidx.compose.material3.adaptive:adaptive-navigation:1.0.0 @@ -2673,8 +2589,8 @@ | +--- androidx.compose.foundation:foundation:1.6.5 -> 1.7.5 (*) | +--- androidx.compose.material3.adaptive:adaptive-layout:1.0.0 (*) | +--- androidx.compose.ui:ui-util:1.6.5 -> 1.7.5 (*) -| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) -| +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.8.22 -> 2.0.20 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.8.22 -> 2.0.21 (*) | +--- androidx.compose.material3.adaptive:adaptive:1.0.0 (c) | \--- androidx.compose.material3.adaptive:adaptive-layout:1.0.0 (c) +--- androidx.compose.runtime:runtime-tracing:1.7.5 @@ -2684,8 +2600,8 @@ | +--- androidx.tracing:tracing-perfetto:1.0.0 | | +--- androidx.annotation:annotation:1.3.0 -> 1.8.1 (*) | | +--- androidx.startup:startup-runtime:1.1.1 (*) -| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) -| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.20 (*) +| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*) | +--- androidx.compose.runtime:runtime:1.7.5 (c) | \--- androidx.compose.runtime:runtime-saveable:1.7.5 (c) +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 (*) @@ -2697,17 +2613,17 @@ | +--- androidx.lifecycle:lifecycle-runtime:2.2.0 -> 2.8.7 (*) | +--- androidx.arch.core:core-common:2.1.0 -> 2.2.0 (*) | +--- androidx.arch.core:core-runtime:2.1.0 -> 2.2.0 (*) -| +--- androidx.fragment:fragment:1.2.0 -> 1.8.2 (*) +| +--- androidx.fragment:fragment:1.2.0 -> 1.8.3 (*) | +--- androidx.lifecycle:lifecycle-common:2.2.0 -> 2.8.7 (*) | +--- androidx.lifecycle:lifecycle-livedata:2.2.0 -> 2.8.7 (*) | +--- androidx.lifecycle:lifecycle-process:2.2.0 -> 2.8.7 (*) | +--- androidx.lifecycle:lifecycle-service:2.2.0 -> 2.8.7 (*) | \--- androidx.lifecycle:lifecycle-viewmodel:2.2.0 -> 2.8.7 (*) -+--- androidx.navigation:navigation-compose:2.8.3 (*) ++--- androidx.navigation:navigation-compose:2.8.4 (*) +--- androidx.profileinstaller:profileinstaller:1.4.1 (*) +--- androidx.tracing:tracing-ktx:1.3.0-alpha02 (*) -+--- io.insert-koin:koin-core:4.0.0-RC2 (*) -+--- io.insert-koin:koin-android:4.0.0-RC2 (*) -+--- io.insert-koin:koin-compose:1.2.0-Beta4 -> 4.0.0-RC2 (*) -+--- io.insert-koin:koin-compose-viewmodel:1.2.0-Beta4 -> 4.0.0-RC2 (*) ++--- io.insert-koin:koin-core:4.0.0 (*) ++--- io.insert-koin:koin-android:4.0.0 (*) ++--- io.insert-koin:koin-compose:4.0.0 (*) ++--- io.insert-koin:koin-compose-viewmodel:4.0.0 (*) \--- androidx.compose.runtime:runtime -> 1.7.5 (*) diff --git a/mifospay-android/dependencies/prodReleaseRuntimeClasspath.txt b/mifospay-android/dependencies/prodReleaseRuntimeClasspath.txt index d2c9b26e5..39e629960 100644 --- a/mifospay-android/dependencies/prodReleaseRuntimeClasspath.txt +++ b/mifospay-android/dependencies/prodReleaseRuntimeClasspath.txt @@ -93,29 +93,29 @@ androidx.compose.ui:ui-unit:1.7.5 androidx.compose.ui:ui-util-android:1.7.5 androidx.compose.ui:ui-util:1.7.5 androidx.compose.ui:ui:1.7.5 -androidx.compose:compose-bom:2024.10.01 +androidx.compose:compose-bom:2024.11.00 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 -androidx.core:core-ktx:1.13.1 +androidx.core:core-ktx:1.15.0 androidx.core:core-splashscreen:1.0.1 -androidx.core:core:1.13.1 +androidx.core:core:1.15.0 androidx.credentials:credentials-play-services-auth:1.3.0 androidx.credentials:credentials:1.3.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 androidx.customview:customview:1.1.0 -androidx.databinding:databinding-adapters:8.5.2 -androidx.databinding:databinding-common:8.5.2 -androidx.databinding:databinding-ktx:8.5.2 -androidx.databinding:databinding-runtime:8.5.2 -androidx.databinding:viewbinding:8.5.2 +androidx.databinding:databinding-adapters:8.7.2 +androidx.databinding:databinding-common:8.7.2 +androidx.databinding:databinding-ktx:8.7.2 +androidx.databinding:databinding-runtime:8.7.2 +androidx.databinding:viewbinding:8.7.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.7 -androidx.fragment:fragment-ktx:1.8.2 -androidx.fragment:fragment:1.8.2 +androidx.fragment:fragment-ktx:1.8.3 +androidx.fragment:fragment:1.8.3 androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 @@ -143,13 +143,13 @@ androidx.lifecycle:lifecycle-viewmodel:2.8.7 androidx.loader:loader:1.1.0 androidx.localbroadcastmanager:localbroadcastmanager:1.0.0 androidx.metrics:metrics-performance:1.0.0-beta01 -androidx.navigation:navigation-common-ktx:2.8.3 -androidx.navigation:navigation-common:2.8.3 -androidx.navigation:navigation-compose:2.8.3 -androidx.navigation:navigation-fragment-ktx:2.8.3 -androidx.navigation:navigation-fragment:2.8.3 -androidx.navigation:navigation-runtime-ktx:2.8.3 -androidx.navigation:navigation-runtime:2.8.3 +androidx.navigation:navigation-common-ktx:2.8.4 +androidx.navigation:navigation-common:2.8.4 +androidx.navigation:navigation-compose:2.8.4 +androidx.navigation:navigation-fragment-ktx:2.8.4 +androidx.navigation:navigation-fragment:2.8.4 +androidx.navigation:navigation-runtime-ktx:2.8.4 +androidx.navigation:navigation-runtime:2.8.4 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 @@ -175,12 +175,12 @@ co.touchlab:kermit-android:2.0.4 co.touchlab:kermit-core-android:2.0.4 co.touchlab:kermit-core:2.0.4 co.touchlab:kermit:2.0.4 -co.touchlab:stately-concurrency-jvm:2.0.7 -co.touchlab:stately-concurrency:2.0.7 -co.touchlab:stately-concurrent-collections-jvm:2.0.7 -co.touchlab:stately-concurrent-collections:2.0.7 -co.touchlab:stately-strict-jvm:2.0.7 -co.touchlab:stately-strict:2.0.7 +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.arkivanov.essenty:back-handler-android:2.1.0 com.arkivanov.essenty:back-handler:2.1.0 com.arkivanov.essenty:utils-internal-android:2.1.0 @@ -217,7 +217,7 @@ com.google.errorprone:error_prone_annotations:2.28.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.5.1 +com.google.firebase:firebase-bom:33.6.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 @@ -250,12 +250,12 @@ com.squareup.okhttp3:okhttp-sse:4.12.0 com.squareup.okhttp3:okhttp:4.12.0 com.squareup.okio:okio-jvm:3.9.1 com.squareup.okio:okio:3.9.1 -de.jensklingenberg.ktorfit:ktorfit-annotations-android:2.1.0 -de.jensklingenberg.ktorfit:ktorfit-annotations:2.1.0 -de.jensklingenberg.ktorfit:ktorfit-lib-ktor-3.0.0-beta-2-android:2.1.0 -de.jensklingenberg.ktorfit:ktorfit-lib-ktor-3.0.0-beta-2:2.1.0 -de.jensklingenberg.ktorfit:ktorfit-lib-light-ktor-3.0.0-beta-2-android:2.1.0 -de.jensklingenberg.ktorfit:ktorfit-lib-light-ktor-3.0.0-beta-2:2.1.0 +de.jensklingenberg.ktorfit:ktorfit-annotations-android:2.2.0 +de.jensklingenberg.ktorfit:ktorfit-annotations:2.2.0 +de.jensklingenberg.ktorfit:ktorfit-lib-android:2.2.0 +de.jensklingenberg.ktorfit:ktorfit-lib-light-android:2.2.0 +de.jensklingenberg.ktorfit:ktorfit-lib-light:2.2.0 +de.jensklingenberg.ktorfit:ktorfit-lib:2.2.0 dev.chrisbanes.material3:material3-window-size-class-multiplatform-android:0.5.0 dev.chrisbanes.material3:material3-window-size-class-multiplatform:0.5.0 dev.chrisbanes.snapper:snapper:0.2.2 @@ -279,61 +279,54 @@ io.github.vinceglb:filekit-compose-android:0.8.7 io.github.vinceglb:filekit-compose:0.8.7 io.github.vinceglb:filekit-core-android:0.8.7 io.github.vinceglb:filekit-core:0.8.7 -io.insert-koin:koin-android:4.0.0-RC2 -io.insert-koin:koin-androidx-compose:4.0.0-RC2 -io.insert-koin:koin-androidx-navigation:4.0.0-RC2 +io.insert-koin:koin-android:4.0.0 +io.insert-koin:koin-androidx-compose:4.0.0 +io.insert-koin:koin-androidx-navigation:4.0.0 io.insert-koin:koin-annotations-jvm:1.4.0-RC4 io.insert-koin:koin-annotations:1.4.0-RC4 -io.insert-koin:koin-bom:4.0.0-RC2 -io.insert-koin:koin-compose-jvm:4.0.0-RC2 -io.insert-koin:koin-compose-viewmodel-jvm:4.0.0-RC2 -io.insert-koin:koin-compose-viewmodel:4.0.0-RC2 -io.insert-koin:koin-compose:4.0.0-RC2 -io.insert-koin:koin-core-jvm:4.0.0-RC2 -io.insert-koin:koin-core-viewmodel-jvm:4.0.0-RC2 -io.insert-koin:koin-core-viewmodel:4.0.0-RC2 -io.insert-koin:koin-core:4.0.0-RC2 -io.ktor:ktor-client-auth-jvm:3.0.0-rc-1 -io.ktor:ktor-client-auth:3.0.0-rc-1 -io.ktor:ktor-client-cio-jvm:3.0.0-beta-2 -io.ktor:ktor-client-content-negotiation-jvm:3.0.0-rc-1 -io.ktor:ktor-client-content-negotiation:3.0.0-rc-1 -io.ktor:ktor-client-core-jvm:3.0.0-rc-1 -io.ktor:ktor-client-core:3.0.0-rc-1 -io.ktor:ktor-client-json-jvm:3.0.0-rc-1 -io.ktor:ktor-client-json:3.0.0-rc-1 -io.ktor:ktor-client-logging-jvm:3.0.0-rc-1 -io.ktor:ktor-client-logging:3.0.0-rc-1 -io.ktor:ktor-client-okhttp-jvm:3.0.0-rc-1 -io.ktor:ktor-client-okhttp:3.0.0-rc-1 -io.ktor:ktor-client-serialization-jvm:3.0.0-rc-1 -io.ktor:ktor-client-serialization:3.0.0-rc-1 -io.ktor:ktor-events-jvm:3.0.0-rc-1 -io.ktor:ktor-events:3.0.0-rc-1 -io.ktor:ktor-http-cio-jvm:3.0.0-beta-2 -io.ktor:ktor-http-cio:3.0.0-beta-2 -io.ktor:ktor-http-jvm:3.0.0-rc-1 -io.ktor:ktor-http:3.0.0-rc-1 -io.ktor:ktor-io-jvm:3.0.0-rc-1 -io.ktor:ktor-io:3.0.0-rc-1 -io.ktor:ktor-network-jvm:3.0.0-beta-2 -io.ktor:ktor-network-tls-jvm:3.0.0-beta-2 -io.ktor:ktor-network-tls:3.0.0-beta-2 -io.ktor:ktor-network:3.0.0-beta-2 -io.ktor:ktor-serialization-jvm:3.0.0-rc-1 -io.ktor:ktor-serialization-kotlinx-json-jvm:3.0.0-rc-1 -io.ktor:ktor-serialization-kotlinx-json:3.0.0-rc-1 -io.ktor:ktor-serialization-kotlinx-jvm:3.0.0-rc-1 -io.ktor:ktor-serialization-kotlinx:3.0.0-rc-1 -io.ktor:ktor-serialization:3.0.0-rc-1 -io.ktor:ktor-sse-jvm:3.0.0-rc-1 -io.ktor:ktor-sse:3.0.0-rc-1 -io.ktor:ktor-utils-jvm:3.0.0-rc-1 -io.ktor:ktor-utils:3.0.0-rc-1 -io.ktor:ktor-websocket-serialization-jvm:3.0.0-rc-1 -io.ktor:ktor-websocket-serialization:3.0.0-rc-1 -io.ktor:ktor-websockets-jvm:3.0.0-rc-1 -io.ktor:ktor-websockets:3.0.0-rc-1 +io.insert-koin:koin-bom:4.0.0 +io.insert-koin:koin-compose-jvm:4.0.0 +io.insert-koin:koin-compose-viewmodel-jvm:4.0.0 +io.insert-koin:koin-compose-viewmodel:4.0.0 +io.insert-koin:koin-compose:4.0.0 +io.insert-koin:koin-core-jvm:4.0.0 +io.insert-koin:koin-core-viewmodel-jvm:4.0.0 +io.insert-koin:koin-core-viewmodel:4.0.0 +io.insert-koin:koin-core:4.0.0 +io.ktor:ktor-client-auth-jvm:3.0.1 +io.ktor:ktor-client-auth:3.0.1 +io.ktor:ktor-client-content-negotiation-jvm:3.0.1 +io.ktor:ktor-client-content-negotiation:3.0.1 +io.ktor:ktor-client-core-jvm:3.0.1 +io.ktor:ktor-client-core:3.0.1 +io.ktor:ktor-client-json-jvm:3.0.1 +io.ktor:ktor-client-json:3.0.1 +io.ktor:ktor-client-logging-jvm:3.0.1 +io.ktor:ktor-client-logging:3.0.1 +io.ktor:ktor-client-okhttp-jvm:3.0.1 +io.ktor:ktor-client-okhttp:3.0.1 +io.ktor:ktor-client-serialization-jvm:3.0.1 +io.ktor:ktor-client-serialization:3.0.1 +io.ktor:ktor-events-jvm:3.0.1 +io.ktor:ktor-events:3.0.1 +io.ktor:ktor-http-jvm:3.0.1 +io.ktor:ktor-http:3.0.1 +io.ktor:ktor-io-jvm:3.0.1 +io.ktor:ktor-io:3.0.1 +io.ktor:ktor-serialization-jvm:3.0.1 +io.ktor:ktor-serialization-kotlinx-json-jvm:3.0.1 +io.ktor:ktor-serialization-kotlinx-json:3.0.1 +io.ktor:ktor-serialization-kotlinx-jvm:3.0.1 +io.ktor:ktor-serialization-kotlinx:3.0.1 +io.ktor:ktor-serialization:3.0.1 +io.ktor:ktor-sse-jvm:3.0.1 +io.ktor:ktor-sse:3.0.1 +io.ktor:ktor-utils-jvm:3.0.1 +io.ktor:ktor-utils:3.0.1 +io.ktor:ktor-websocket-serialization-jvm:3.0.1 +io.ktor:ktor-websocket-serialization:3.0.1 +io.ktor:ktor-websockets-jvm:3.0.1 +io.ktor:ktor-websockets:3.0.1 javax.inject:javax.inject:1 org.checkerframework:checker-qual:3.43.0 org.jetbrains.androidx.core:core-bundle-android:1.0.1 @@ -370,13 +363,13 @@ org.jetbrains.compose.ui:ui-text: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.0.20 -org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.20 -org.jetbrains.kotlin:kotlin-reflect:2.0.20 -org.jetbrains.kotlin:kotlin-stdlib-common:2.0.20 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.20 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.20 -org.jetbrains.kotlin:kotlin-stdlib:2.0.20 +org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.0.21 +org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 +org.jetbrains.kotlin:kotlin-reflect:2.0.21 +org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.20 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20 +org.jetbrains.kotlin:kotlin-stdlib:2.0.21 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 @@ -385,20 +378,21 @@ org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0 org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0 org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.9.0 org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.9.0 org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.9.0 org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.1 org.jetbrains.kotlinx:kotlinx-datetime:0.6.1 -org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.5.3 -org.jetbrains.kotlinx:kotlinx-io-bytestring:0.5.3 -org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.5.3 -org.jetbrains.kotlinx:kotlinx-io-core:0.5.3 -org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.2 -org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.2 -org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.2 -org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.2 -org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.2 +org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.5.4 +org.jetbrains.kotlinx:kotlinx-io-bytestring:0.5.4 +org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.5.4 +org.jetbrains.kotlinx:kotlinx-io-core:0.5.4 +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-io-jvm:1.7.3 +org.jetbrains.kotlinx:kotlinx-serialization-json-io: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.slf4j:slf4j-api:2.0.16 tech.annexflow.compose:constraintlayout-compose-multiplatform-android:0.4.0 diff --git a/mifospay-android/prodRelease-badging.txt b/mifospay-android/prodRelease-badging.txt index 7d11a2720..fbaccbcfc 100644 --- a/mifospay-android/prodRelease-badging.txt +++ b/mifospay-android/prodRelease-badging.txt @@ -1,4 +1,4 @@ -package: name='org.mifospay' versionCode='1' versionName='0.0.4-beta.0.7' platformBuildVersionName='14' platformBuildVersionCode='34' compileSdkVersion='34' compileSdkVersionCodename='14' +package: name='org.mifospay' versionCode='1' versionName='0.0.4-beta.0.57' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15' sdkVersion:'26' targetSdkVersion:'34' uses-permission: name='android.permission.INTERNET' @@ -6,13 +6,13 @@ uses-permission: name='android.permission.CAMERA' uses-permission: name='android.permission.READ_EXTERNAL_STORAGE' uses-permission: name='android.permission.WRITE_EXTERNAL_STORAGE' uses-permission: name='android.permission.READ_CONTACTS' +uses-permission: name='android.permission.VIBRATE' +uses-permission: name='android.permission.FLASHLIGHT' uses-permission: name='android.permission.ACCESS_NETWORK_STATE' -uses-permission: name='android.permission.POST_NOTIFICATIONS' uses-permission: name='android.permission.WAKE_LOCK' -uses-permission: name='com.google.android.c2dm.permission.RECEIVE' +uses-permission: name='com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE' uses-permission: name='android.permission.ACCESS_ADSERVICES_ATTRIBUTION' uses-permission: name='android.permission.ACCESS_ADSERVICES_AD_ID' -uses-permission: name='com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE' uses-permission: name='org.mifospay.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION' application-label:'Mifos Pay' application-label-af:'Mifos Pay' @@ -51,7 +51,6 @@ application-label-hy:'Mifos Pay' application-label-in:'Mifos Pay' application-label-is:'Mifos Pay' application-label-it:'Mifos Pay' -application-label-it-IT:'Mifos Pay' application-label-iw:'Mifos Pay' application-label-ja:'Mifos Pay' application-label-ka:'Mifos Pay' @@ -80,11 +79,9 @@ application-label-pt-BR:'Mifos Pay' application-label-pt-PT:'Mifos Pay' application-label-ro:'Mifos Pay' application-label-ru:'Mifos Pay' -application-label-ru-RU:'Mifos Pay' application-label-si:'Mifos Pay' application-label-sk:'Mifos Pay' application-label-sl:'Mifos Pay' -application-label-so:'Mifos Pay' application-label-sq:'Mifos Pay' application-label-sr:'Mifos Pay' application-label-sr-Latn:'Mifos Pay' @@ -95,12 +92,10 @@ application-label-te:'Mifos Pay' application-label-th:'Mifos Pay' application-label-tl:'Mifos Pay' application-label-tr:'Mifos Pay' -application-label-tr-TR:'Mifos Pay' application-label-uk:'Mifos Pay' application-label-ur:'Mifos Pay' application-label-uz:'Mifos Pay' application-label-vi:'Mifos Pay' -application-label-zh:'Mifos Pay' application-label-zh-CN:'Mifos Pay' application-label-zh-HK:'Mifos Pay' application-label-zh-TW:'Mifos Pay' @@ -117,15 +112,18 @@ uses-library-not-required:'androidx.window.extensions' uses-library-not-required:'androidx.window.sidecar' uses-library-not-required:'android.ext.adservices' feature-group: label='' - uses-feature-not-required: name='android.hardware.camera' + uses-feature: name='android.hardware.camera' + uses-feature: name='android.hardware.camera.autofocus' uses-feature: name='android.hardware.faketouch' uses-implied-feature: name='android.hardware.faketouch' reason='default feature for all apps' + uses-feature: name='android.hardware.screen.portrait' + uses-implied-feature: name='android.hardware.screen.portrait' reason='one or more activities have specified a portrait orientation' main other-activities other-receivers other-services supports-screens: 'small' 'normal' 'large' 'xlarge' supports-any-density: 'true' -locales: '--_--' 'af' 'am' 'ar' 'as' 'az' 'be' 'bg' 'bn' 'bs' 'ca' 'cs' 'da' 'de' 'el' 'en-AU' 'en-CA' 'en-GB' 'en-IN' 'en-XC' 'es' 'es-US' 'et' 'eu' 'fa' 'fi' 'fr' 'fr-CA' 'gl' 'gu' 'hi' 'hr' 'hu' 'hy' 'in' 'is' 'it' 'it-IT' 'iw' 'ja' 'ka' 'kk' 'km' 'kn' 'ko' 'ky' 'lo' 'lt' 'lv' 'mk' 'ml' 'mn' 'mr' 'ms' 'my' 'nb' 'ne' 'nl' 'or' 'pa' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'ru-RU' 'si' 'sk' 'sl' 'so' 'sq' 'sr' 'sr-Latn' 'sv' 'sw' 'ta' 'te' 'th' 'tl' 'tr' 'tr-TR' 'uk' 'ur' 'uz' 'vi' 'zh' 'zh-CN' 'zh-HK' 'zh-TW' 'zu' +locales: '--_--' 'af' 'am' 'ar' 'as' 'az' 'be' 'bg' 'bn' 'bs' 'ca' 'cs' 'da' 'de' 'el' 'en-AU' 'en-CA' 'en-GB' 'en-IN' 'en-XC' 'es' 'es-US' 'et' 'eu' 'fa' 'fi' 'fr' 'fr-CA' 'gl' 'gu' 'hi' 'hr' 'hu' 'hy' 'in' 'is' 'it' 'iw' 'ja' 'ka' 'kk' 'km' 'kn' 'ko' 'ky' 'lo' 'lt' 'lv' 'mk' 'ml' 'mn' 'mr' 'ms' 'my' 'nb' 'ne' 'nl' 'or' 'pa' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'si' 'sk' 'sl' 'sq' 'sr' 'sr-Latn' 'sv' 'sw' 'ta' 'te' 'th' 'tl' 'tr' 'uk' 'ur' 'uz' 'vi' 'zh-CN' 'zh-HK' 'zh-TW' 'zu' densities: '160' '240' '320' '480' '640' native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64' diff --git a/mifospay-android/proguard-rules.pro b/mifospay-android/proguard-rules.pro index a767f4e67..1a0407117 100644 --- a/mifospay-android/proguard-rules.pro +++ b/mifospay-android/proguard-rules.pro @@ -1,62 +1,120 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in /home/naman/sdk/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle.kts. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile +-ignorewarnings # Rules for: uCrop - Image Cropping Library for Android -dontwarn com.yalantis.ucrop** +-dontwarn java.lang.management.ManagementFactory -keep class com.yalantis.ucrop** { *; } -keep interface com.yalantis.ucrop** { *; } --dontwarn com.sun.tools.javac.code.Symbol$ClassSymbol --dontwarn com.sun.tools.javac.code.Symbol$PackageSymbol --dontwarn com.sun.tools.javac.code.Symbol --dontwarn com.sun.tools.javac.tree.TreeScanner --dontwarn com.sun.tools.javac.util.Name --dontwarn javax.lang.model.SourceVersion --dontwarn javax.lang.model.element.Element --dontwarn javax.lang.model.element.Modifier --dontwarn javax.lang.model.type.TypeMirror --dontwarn javax.lang.model.type.TypeVisitor --dontwarn javax.lang.model.util.SimpleTypeVisitor7 --dontwarn groovy.lang.GroovyObject --dontwarn groovy.lang.MetaClass --dontwarn java.lang.management.ManagementFactory --dontwarn javax.management.InstanceNotFoundException --dontwarn javax.management.MBeanRegistrationException --dontwarn javax.management.MBeanServer --dontwarn javax.management.MalformedObjectNameException --dontwarn javax.management.ObjectInstance --dontwarn javax.management.ObjectName --dontwarn javax.naming.Context --dontwarn javax.naming.InitialContext --dontwarn javax.naming.NamingException --dontwarn javax.servlet.ServletContainerInitializer --dontwarn org.codehaus.groovy.reflection.ClassInfo --dontwarn org.codehaus.groovy.runtime.BytecodeInterface8 --dontwarn org.codehaus.groovy.runtime.ScriptBytecodeAdapter --dontwarn org.codehaus.groovy.runtime.callsite.CallSite --dontwarn org.codehaus.groovy.runtime.callsite.CallSiteArray --dontwarn org.codehaus.janino.ClassBodyEvaluator --dontwarn sun.reflect.Reflection \ No newline at end of file +# Proguard Kotlin Example https://github.com/Guardsquare/proguard/blob/master/examples/application-kotlin/proguard.pro + +-keepattributes *Annotation* + +-keep class kotlin.Metadata { *; } + +# Kotlin + +-keep class kotlin.reflect.jvm.internal.** { *; } +-keep class kotlin.text.RegexOption { *; } + +-keep class kotlin.** { *; } +-keep class org.jetbrains.skia.** { *; } +-keep class org.jetbrains.skiko.** { *; } + +-assumenosideeffects public class androidx.compose.runtime.ComposerKt { + void sourceInformation(androidx.compose.runtime.Composer,java.lang.String); + void sourceInformationMarkerStart(androidx.compose.runtime.Composer,int,java.lang.String); + void sourceInformationMarkerEnd(androidx.compose.runtime.Composer); + boolean isTraceInProgress(); + void traceEventEnd(); +} + +# Kotlinx Coroutines Rules +# https://github.com/Kotlin/kotlinx.coroutines/blob/master/kotlinx-coroutines-core/jvm/resources/META-INF/proguard/coroutines.pro + +-keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {} +-keepnames class kotlinx.coroutines.CoroutineExceptionHandler {} +-keepclassmembers class kotlinx.coroutines.** { + volatile ; +} +-keepclassmembers class kotlin.coroutines.SafeContinuation { + volatile ; +} +-dontwarn java.lang.instrument.ClassFileTransformer +-dontwarn sun.misc.SignalHandler +-dontwarn java.lang.instrument.Instrumentation +-dontwarn sun.misc.Signal +-dontwarn java.lang.ClassValue +-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement + +# https://github.com/Kotlin/kotlinx.coroutines/issues/2046 +-dontwarn android.annotation.SuppressLint + +# https://github.com/JetBrains/compose-jb/issues/2393 +-dontnote kotlin.coroutines.jvm.internal.** +-dontnote kotlin.internal.** +-dontnote kotlin.jvm.internal.** +-dontnote kotlin.reflect.** +-dontnote kotlinx.coroutines.debug.internal.** +-dontnote kotlinx.coroutines.internal.** +-keep class kotlin.coroutines.Continuation +-keep class kotlinx.coroutines.CancellableContinuation +-keep class kotlinx.coroutines.channels.Channel +-keep class kotlinx.coroutines.CoroutineDispatcher +-keep class kotlinx.coroutines.CoroutineScope +# this is a weird one, but breaks build on some combinations of OS and JDK (reproduced on Windows 10 + Corretto 16) +-dontwarn org.graalvm.compiler.core.aarch64.AArch64NodeMatchRules_MatchStatementSet* + +### kotlinx.serialization rules + +# Keep `Companion` object fields of serializable classes. +# This avoids serializer lookup through `getDeclaredClasses` as done for named companion objects. +-if @kotlinx.serialization.Serializable class ** +-keepclassmembers class <1> { + static <1>$Companion Companion; +} + +# Keep `serializer()` on companion objects (both default and named) of serializable classes. +-if @kotlinx.serialization.Serializable class ** { + static **$* *; +} +-keepclassmembers class <2>$<3> { + kotlinx.serialization.KSerializer serializer(...); +} + +# Keep `INSTANCE.serializer()` of serializable objects. +-if @kotlinx.serialization.Serializable class ** { + public static ** INSTANCE; +} +-keepclassmembers class <1> { + public static <1> INSTANCE; + kotlinx.serialization.KSerializer serializer(...); +} + +# @Serializable and @Polymorphic are used at runtime for polymorphic serialization. +-keepattributes RuntimeVisibleAnnotations,AnnotationDefault + +# Don't print notes about potential mistakes or omissions in the configuration for kotlinx-serialization classes +# See also https://github.com/Kotlin/kotlinx.serialization/issues/1900 +-dontnote kotlinx.serialization.** + +# Serialization core uses `java.lang.ClassValue` for caching inside these specified classes. +# If there is no `java.lang.ClassValue` (for example, in Android), then R8/ProGuard will print a warning. +# However, since in this case they will not be used, we can disable these warnings +-dontwarn kotlinx.serialization.internal.ClassValueReferences + +# JSR 305 annotations are for embedding nullability information. +-dontwarn javax.annotation.** + +# A resource is loaded with a relative path so the package of this class must be preserved. +-keeppackagenames okhttp3.internal.publicsuffix.* +-adaptresourcefilenames okhttp3/internal/publicsuffix/PublicSuffixDatabase.gz + +# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java. +-dontwarn org.codehaus.mojo.animal_sniffer.* + +# OkHttp platform used only on JVM and when Conscrypt and other security providers are available. +-dontwarn okhttp3.internal.platform.** +-dontwarn org.conscrypt.** +-dontwarn org.bouncycastle.** +-dontwarn org.openjsse.** \ No newline at end of file diff --git a/mifospay-desktop/build.gradle.kts b/mifospay-desktop/build.gradle.kts index 50acb149a..054d165cb 100644 --- a/mifospay-desktop/build.gradle.kts +++ b/mifospay-desktop/build.gradle.kts @@ -21,7 +21,7 @@ kotlin { withJava() } - jvmToolchain(21) + jvmToolchain(17) sourceSets { val desktopMain by getting { @@ -42,22 +42,74 @@ kotlin { } } +fun String.formatToValidVersion(): String { + // Remove any text after '-' or '+' + val cleanVersion = this.split(Regex("[-+]")).first() + + // Split version numbers + val parts = cleanVersion.split(".") + + return when { + // If starts with 0, change to 1 + parts[0] == "0" -> { + val newParts = parts.toMutableList() + newParts[0] = "1" + // Take only up to 3 parts (MAJOR.MINOR.PATCH) + newParts.take(3).joinToString(".") + } + // If valid, take only up to 3 parts + else -> parts.take(3).joinToString(".") + } +} + +val Project.dynamicVersion + get() = project.version.toString().formatToValidVersion() + +val productName = "MifosWallet" +val productNameSpace = "org.mifos.pay" + compose.desktop { application { mainClass = "MainKt" nativeDistributions { - targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) - packageName = "org.mifospay.desktop" - packageVersion = "1.0.0" + targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Exe, TargetFormat.Deb) + packageName = productName + packageVersion = project.dynamicVersion + description = "Mifos Wallet Desktop Application" + copyright = "© 2024 Mifos Initiative. All rights reserved." + vendor = "Mifos Initiative" + licenseFile.set(project.file("../LICENSE")) + includeAllModules = true + + macOS { + bundleID = productNameSpace + dockName = productName + iconFile.set(project.file("icons/ic_launcher.icns")) + notarization { + val providers = project.providers + appleID.set(providers.environmentVariable("NOTARIZATION_APPLE_ID")) + password.set(providers.environmentVariable("NOTARIZATION_PASSWORD")) + teamID.set(providers.environmentVariable("NOTARIZATION_TEAM_ID")) + } + } + windows { - // a version for all Windows distributables - packageVersion = "1.0.0" - // a version only for the msi package - msiPackageVersion = "1.0.0" - // a version only for the exe package - exePackageVersion = "1.0.0" - menu = true + menuGroup = productName + shortcut = true + dirChooser = true + perUserInstall = true + iconFile.set(project.file("icons/ic_launcher.ico")) } + + linux { + modules("jdk.security.auth") + iconFile.set(project.file("icons/ic_launcher.png")) + } + } + buildTypes.release.proguard { + configurationFiles.from(file("compose-desktop.pro")) + obfuscate.set(true) + optimize.set(true) } } -} \ No newline at end of file +} diff --git a/mifospay-desktop/compose-desktop.pro b/mifospay-desktop/compose-desktop.pro new file mode 100644 index 000000000..4fb6b309a --- /dev/null +++ b/mifospay-desktop/compose-desktop.pro @@ -0,0 +1,170 @@ +-ignorewarnings +-dontwarn kotlinx.coroutines.debug.* + +-keep class kotlin.** { *; } +-keep class kotlinx.coroutines.** { *; } +-keep class org.jetbrains.skia.** { *; } +-keep class org.jetbrains.skiko.** { *; } +-keep class com.arkivanov.essenty.** { *; } +-keep class org.sqlite.** { *; } + +# Webcam +-keep class com.github.sarxos.webcam.** { *; } +-keep class org.bridj.** { *; } + +# Windows folders +-keep class com.sun.jna.* { *; } +-keepclassmembers class * extends com.sun.jna.* { public *; } + +# Keep Ktor classes +-keep class io.ktor.** { *; } +-dontnote io.ktor.** + +# Keep all DTO classes in the package +-keep class com.rwmobi.kunigami.data.source.network.dto.** { *; } +-dontnote com.rwmobi.kunigami.data.source.network.dto.** +-keep class com.rwmobi.kunigami.domain.model.** { *; } +-dontnote com.rwmobi.kunigami.domain.model.** + +# Apollo workarounds +-dontnote okio.** +-keep class com.apollographql.apollo.** { *; } +-dontnote com.apollographql.** +-keep class okhttp3.** { *; } +-keep class org.bouncycastle.** { *; } +-dontnote okhttp3.internal.platform.** +-dontwarn okhttp3.internal.platform.** + +# JSR 305 annotations are for embedding nullability information. +-dontwarn javax.annotation.** + +# A resource is loaded with a relative path so the package of this class must be preserved. +-keeppackagenames okhttp3.internal.publicsuffix.* +-adaptresourcefilenames okhttp3/internal/publicsuffix/PublicSuffixDatabase.gz + +# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java. +-dontwarn org.codehaus.mojo.animal_sniffer.* + +# OkHttp platform used only on JVM and when Conscrypt and other security providers are available. +-dontwarn okhttp3.internal.platform.** +-dontwarn org.conscrypt.** +-dontwarn org.bouncycastle.** +-dontwarn org.openjsse.** + +# Keep the class and fields of kotlinx.datetime.Instant +-keep class kotlinx.datetime.Instant { *; } +-dontnote kotlinx.datetime.Instant + +# Kotlinx Serialization +-keep class kotlinx.serialization.** { *; } +-dontwarn kotlinx.serialization.** +-keepnames class kotlinx.serialization.internal.** { *; } + +# Do not warn about missing annotations and metadata +-dontwarn kotlin.Metadata +-dontwarn kotlin.jvm.internal.** +-dontwarn kotlin.reflect.jvm.internal.** + +# Keep necessary Kotlin attributes +-keepattributes Signature, *Annotation* + +# JNA classes +-keep class com.sun.jna.** { *; } +-keepclassmembers class * extends com.sun.jna.** { public *; } +-keep class * implements com.sun.jna.** { *; } +-dontnote com.sun.** + +# Logging classes, if logging is required +-keep class org.slf4j.** { *; } +-keep class org.slf4j.impl.** { *; } +-keep class ch.qos.logback.** { *; } +-dontwarn org.slf4j.** + +# OSHI classes +-keep class oshi.** { *; } +-dontnote oshi.** + +# Keep the entire MacOSThemeDetector class and its nested classes +-keep class com.jthemedetecor.** { *; } +-keep class com.jthemedetecor.MacOSThemeDetector$* { *; } + +# Annotated interfaces (including methods which are also kept in implementing classes) +-keepattributes Annotation +-keepattributes *Annotation* + +# ServiceLoader support for kotlinx.coroutines +-keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {} +-keepnames class kotlinx.coroutines.CoroutineExceptionHandler {} + +# Keeping the implementations of exception handlers and Main dispatchers +-keep class * implements kotlinx.coroutines.internal.MainDispatcherFactory +-keep class * implements kotlinx.coroutines.CoroutineExceptionHandler + +# Most of volatile fields are updated with AFU and should not be mangled +-keepclassmembers class kotlinx.coroutines.** { + volatile ; +} + +# Same story for the standard library's SafeContinuation that also uses AtomicReferenceFieldUpdater +-keepclassmembers class kotlin.coroutines.SafeContinuation { + volatile ; +} + +# These classes are only required by kotlinx.coroutines.debug.AgentPremain, which is only loaded when +# kotlinx-coroutines-core is used as a Java agent, so these are not needed in contexts where ProGuard is used. +-dontwarn java.lang.instrument.ClassFileTransformer +-dontwarn sun.misc.SignalHandler +-dontwarn java.lang.instrument.Instrumentation +-dontwarn sun.misc.Signal + +# Only used in `kotlinx.coroutines.internal.ExceptionsConstructor`. +# The case when it is not available is hidden in a `try`-`catch`, as well as a check for Android. +-dontwarn java.lang.ClassValue + +# An annotation used for build tooling, won't be directly accessed. +-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement + +# Additional dontwarn rules for common issues +-dontwarn java.awt.** +-dontwarn javax.annotation.** + +-keeppackagenames com.google.protobuf.** + +-keep class com.sun.jna.** { *; } +-keep class * implements com.sun.jna.** { *; } + + +# Keep `serializer()` on companion objects (both default and named) of serializable classes. +-if @kotlinx.serialization.Serializable class ** { + static **$* *; +} +-keepclassmembers class <2>$<3> { + kotlinx.serialization.KSerializer serializer(...); +} + +# Keep `INSTANCE.serializer()` of serializable objects. +-if @kotlinx.serialization.Serializable class ** { + public static ** INSTANCE; +} +-keepclassmembers class <1> { + public static <1> INSTANCE; + kotlinx.serialization.KSerializer serializer(...); +} + +# @Serializable and @Polymorphic are used at runtime for polymorphic serialization. +-keepattributes RuntimeVisibleAnnotations,AnnotationDefault + +# Don't print notes about potential mistakes or omissions in the configuration for kotlinx-serialization classes +# See also https://github.com/Kotlin/kotlinx.serialization/issues/1900 +-dontnote kotlinx.serialization.** + +# Serialization core uses `java.lang.ClassValue` for caching inside these specified classes. +# If there is no `java.lang.ClassValue` (for example, in Android), then R8/ProGuard will print a warning. +# However, since in this case they will not be used, we can disable these warnings +-dontwarn kotlinx.serialization.internal.ClassValueReferences + +# disable optimisation for descriptor field because in some versions of ProGuard, optimization generates incorrect bytecode that causes a verification error +# see https://github.com/Kotlin/kotlinx.serialization/issues/2719 +-keepclassmembers public class **$$serializer { + private ** descriptor; +} \ No newline at end of file diff --git a/mifospay-desktop/icons/ic_launcher.icns b/mifospay-desktop/icons/ic_launcher.icns new file mode 100644 index 0000000000000000000000000000000000000000..2481b88e501a4b506b34393a25a40cb78bf010c2 GIT binary patch literal 46961 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 literal 0 HcmV?d00001 diff --git a/mifospay-desktop/icons/ic_launcher.png b/mifospay-desktop/icons/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c6aaa48cab741690c6720f7efec1d12a5f1df151 GIT binary patch literal 10291 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 k|38UumC4AWb0Y#JVcK`qY literal 0 HcmV?d00001 diff --git a/mifospay-ios/iosApp/ContentView.swift b/mifospay-ios/iosApp/ContentView.swift index 6c5b7759f..1942522f0 100644 --- a/mifospay-ios/iosApp/ContentView.swift +++ b/mifospay-ios/iosApp/ContentView.swift @@ -1,20 +1,17 @@ -// -// ContentView.swift -// mifospay-ios -// -// Created by Apple on 14/08/24. -// - +import UIKit import SwiftUI -import shared +import ComposeApp -struct ContentView: View { - var body: some View { - Text(Greeting().greet()) - .padding() +struct ComposeView: UIViewControllerRepresentable { + func makeUIViewController(context: Context) -> UIViewController { + MifosViewControllerKt.MifosViewController() } -} -#Preview { - ContentView() + func updateUIViewController(_ uiViewController: UIViewController, context: Context) {} } + +struct ContentView: View { + var body: some View { + ComposeView().ignoresSafeArea(.all) + } +} \ No newline at end of file diff --git a/mifospay-ios/iosApp/iosAppApp.swift b/mifospay-ios/iosApp/iosAppApp.swift index c3f629220..1c1def9d3 100644 --- a/mifospay-ios/iosApp/iosAppApp.swift +++ b/mifospay-ios/iosApp/iosAppApp.swift @@ -1,10 +1,3 @@ -// -// iosAppApp.swift -// mifospay-ios -// -// Created by Apple on 14/08/24. -// - import SwiftUI @main diff --git a/mifospay-shared/src/nativeMain/kotlin/org/mifospay/shared/MifosViewController.kt b/mifospay-shared/src/nativeMain/kotlin/org/mifospay/shared/MifosViewController.kt new file mode 100644 index 000000000..67abdac90 --- /dev/null +++ b/mifospay-shared/src/nativeMain/kotlin/org/mifospay/shared/MifosViewController.kt @@ -0,0 +1,22 @@ +/* + * Copyright 2024 Mifos Initiative + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md + */ +package org.mifospay.shared + +import androidx.compose.ui.window.ComposeUIViewController +import org.mifospay.shared.di.initKoin + +@Suppress("ktlint:standard:function-naming") +fun MifosViewController() = ComposeUIViewController( + configure = { + initKoin() + }, +) { + MifosPaySharedApp() +} diff --git a/mifospay-web/build.gradle.kts b/mifospay-web/build.gradle.kts index 7cf41fe39..46bc4de05 100644 --- a/mifospay-web/build.gradle.kts +++ b/mifospay-web/build.gradle.kts @@ -1,4 +1,5 @@ import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl +import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig plugins { alias(libs.plugins.kotlinMultiplatform) @@ -20,9 +21,19 @@ kotlin { @OptIn(ExperimentalWasmDsl::class) wasmJs { moduleName = "mifospay-wasm" + val projectPath: String = project.rootDir.path browser { commonWebpackConfig { outputFileName = "mifospay-wasm.js" + devServer = (devServer ?: KotlinWebpackConfig.DevServer()).apply { + static = (static ?: mutableListOf()).apply { + add(projectPath) + add("$projectPath/mifospay-shared/") + add("$projectPath/mifospay-web/") + add("$projectPath/core/designsystem") + add("$projectPath/core/ui") + } + } } } binaries.executable() diff --git a/mifospay-web/src/wasmJsMain/kotlin/Main.kt b/mifospay-web/src/wasmJsMain/kotlin/Main.kt index 56eb47cdc..e2294c1e0 100644 --- a/mifospay-web/src/wasmJsMain/kotlin/Main.kt +++ b/mifospay-web/src/wasmJsMain/kotlin/Main.kt @@ -1,11 +1,10 @@ import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.window.CanvasBasedWindow -import org.jetbrains.compose.resources.ExperimentalResourceApi import org.jetbrains.compose.resources.configureWebResources import org.mifospay.shared.MifosPaySharedApp import org.mifospay.shared.di.initKoin -@OptIn(ExperimentalComposeUiApi::class, ExperimentalResourceApi::class) +@OptIn(ExperimentalComposeUiApi::class) fun main() { initKoin() diff --git a/mifospay-web/src/wasmJsMain/resources/index.html b/mifospay-web/src/wasmJsMain/resources/index.html index 4948b645f..a75f3dde5 100644 --- a/mifospay-web/src/wasmJsMain/resources/index.html +++ b/mifospay-web/src/wasmJsMain/resources/index.html @@ -10,17 +10,4 @@ - \ No newline at end of file diff --git a/mifospay-web/src/webpack.config.d/cleanupSourcemap.js b/mifospay-web/src/webpack.config.d/cleanupSourcemap.js new file mode 100644 index 000000000..7e6900186 --- /dev/null +++ b/mifospay-web/src/webpack.config.d/cleanupSourcemap.js @@ -0,0 +1,31 @@ +// Replace paths unavailable during compilation with `null`, so they will not be shown in devtools +; +(() => { + const fs = require("fs"); + const path = require("path"); + + const outDir = __dirname + "/kotlin/" + const projecName = path.basename(__dirname); + const mapFile = outDir + projecName + ".wasm.map" + + const sourcemap = JSON.parse(fs.readFileSync(mapFile)) + const sources = sourcemap["sources"] + srcLoop: for (let i in sources) { + const srcFilePath = sources[i]; + if (srcFilePath == null) continue; + + const srcFileCandidates = [ + outDir + srcFilePath, + outDir + srcFilePath.substring("../".length), + outDir + "../" + srcFilePath, + ]; + + for (let srcFile of srcFileCandidates) { + if (fs.existsSync(srcFile)) continue srcLoop; + } + + sources[i] = null; + } + + fs.writeFileSync(mapFile, JSON.stringify(sourcemap)); +})();