diff --git a/.github/workflows/benchmark_suite.yml b/.github/workflows/benchmark_suite.yml index c4b503729af..5d94e45ebe9 100644 --- a/.github/workflows/benchmark_suite.yml +++ b/.github/workflows/benchmark_suite.yml @@ -21,10 +21,10 @@ jobs: sudo udevadm trigger --name-match=kvm - name: Checkout Android source - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Setup JDK - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: 'zulu' java-version: 17 diff --git a/.github/workflows/build_prod.yml b/.github/workflows/build_prod.yml index 21415b8a12f..2a08a82737d 100644 --- a/.github/workflows/build_prod.yml +++ b/.github/workflows/build_prod.yml @@ -43,10 +43,10 @@ jobs: - name: Checkout if: github.event.inputs.tramline-input == null || github.event.inputs.tramline-input == '' - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Setup JDK - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: java-version: 17 distribution: zulu diff --git a/.github/workflows/build_sandbox.yml b/.github/workflows/build_sandbox.yml index 88269178844..9935434c419 100644 --- a/.github/workflows/build_sandbox.yml +++ b/.github/workflows/build_sandbox.yml @@ -42,10 +42,10 @@ jobs: - name: Checkout if: github.event.inputs.tramline-input == null || github.event.inputs.tramline-input == '' - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Setup JDK - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: java-version: 17 distribution: zulu diff --git a/.github/workflows/build_staging.yml b/.github/workflows/build_staging.yml index 7c4b974e58a..e3e73fd8182 100644 --- a/.github/workflows/build_staging.yml +++ b/.github/workflows/build_staging.yml @@ -42,10 +42,10 @@ jobs: - name: Checkout if: github.event.inputs.tramline-input == null || github.event.inputs.tramline-input == '' - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Setup JDK - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: java-version: 17 distribution: zulu diff --git a/.github/workflows/ci_checks.yml b/.github/workflows/ci_checks.yml index 2f8257f6e79..f1a723728c0 100644 --- a/.github/workflows/ci_checks.yml +++ b/.github/workflows/ci_checks.yml @@ -18,7 +18,7 @@ jobs: runs-on: [ ubuntu-latest ] if: github.event_name == 'pull_request' steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Verify PR description run: .github/scripts/story_link_check.sh '${{ github.event.pull_request.body }}' @@ -27,13 +27,13 @@ jobs: if: github.event_name == 'pull_request' steps: - name: Checkout master - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: master path: master - name: Checkout current - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: path: current @@ -43,10 +43,10 @@ jobs: lint: runs-on: [ ubuntu-latest ] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Setup JDK - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: 'zulu' java-version: 17 @@ -58,10 +58,10 @@ jobs: unit_tests: runs-on: [ ubuntu-latest ] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Setup JDK - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: 'zulu' java-version: 17 @@ -87,7 +87,7 @@ jobs: - name: Checkout Android source - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Start Simple Docker server run: | @@ -116,7 +116,7 @@ jobs: script: echo "Generated AVD snapshot for caching." - name: set up JDK - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: 'zulu' java-version: 17 @@ -182,13 +182,13 @@ jobs: runs-on: [ ubuntu-latest ] steps: - name: Checkout master - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: master path: master - name: Checkout current - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: path: current @@ -199,7 +199,7 @@ jobs: runs-on: [ ubuntu-latest ] if: github.event_name == 'pull_request' steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: ref: ${{github.event.pull_request.head.ref}} fetch-depth: 0 diff --git a/CHANGELOG.md b/CHANGELOG.md index a8bb810faf5..436b1abb21c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,15 +3,43 @@ ## Next Release ### Internal -- Bump Sentry to v8.21.1 +- Bump Sentry to v8.22.0 +- Bump AndroidX Lifecycle to v2.9.4 +- Bump AndroidX Test Runner to v1.7.0 +- Bump AndroidX Test Rules to v1.7.0 +- Bump AndroidX JUnit to v1.3.0 +- Bump Jackson Core to v2.20.0 +- Bump Play Services Auth to v21.4.0 +- Bump Material Components to v1.12.0 +- Bump Kotlin to v2.2.20 +- Bump AndroidX Work to v2.10.5 +- Bump AndroidX ViewModel to v2.9.4 +- Bump Lottie Compose to v6.6.9 +- Bump Gson to v2.13.2 +- Bump KSP to v2.2.20-2.0.2 +- Bump firebase remote config to v23.0.1 +- Bump Google Truth to v1.4.5 +- Bump AndroidX Benchmark to v1.4.1 +- Bump AndroidX Camera to v1.5.0 +- Bump AndroidX Camera View to v1.5.0 +- Bump dagger to v2.57.2 +- Bump UUID generator to v5.1.1 +- Bump Compose BOM to v2025.09.01 +- Bump Sentry Android to v5.12.0 +- Update GH Actions `checkout` to v5 +- Update GH Actions `setup-jdk` to to v5 +- Bump Gradle to v9.1.0 +- Bump Mockito Kotlin to v6.0.0 + +### Changes + +- Hide next button when registration is going ## 2025.09.09 ### Internal - Bump AGP to v8.13.0 - Bump Lint to v31.13.0 -- Bump Kotlin to v2.2.0 -- Bump KSP to v2.2.0-2.0.2 - Bump dagger to v2.57.1 - Bump okhttp to v5.1.0 - Bump retrofit to v3.0.0 diff --git a/app/src/main/java/org/simple/clinic/registration/phone/RegistrationPhoneScreen.kt b/app/src/main/java/org/simple/clinic/registration/phone/RegistrationPhoneScreen.kt index ca8a9b283b5..777ebb7dfed 100644 --- a/app/src/main/java/org/simple/clinic/registration/phone/RegistrationPhoneScreen.kt +++ b/app/src/main/java/org/simple/clinic/registration/phone/RegistrationPhoneScreen.kt @@ -174,6 +174,14 @@ class RegistrationPhoneScreen : progressView.visibility = View.GONE } + override fun showNextButton() { + nextButtonFrame.visibility = View.VISIBLE + } + + override fun hideNextButton() { + nextButtonFrame.visibility = View.GONE + } + override fun openLoginPinEntryScreen() { router.push(LoginPinScreenKey()) } diff --git a/app/src/main/java/org/simple/clinic/registration/phone/RegistrationPhoneUi.kt b/app/src/main/java/org/simple/clinic/registration/phone/RegistrationPhoneUi.kt index 07856a70d3e..a2d508c5cc4 100644 --- a/app/src/main/java/org/simple/clinic/registration/phone/RegistrationPhoneUi.kt +++ b/app/src/main/java/org/simple/clinic/registration/phone/RegistrationPhoneUi.kt @@ -7,4 +7,6 @@ interface RegistrationPhoneUi { fun hideAnyError() fun showProgressIndicator() fun hideProgressIndicator() + fun showNextButton() + fun hideNextButton() } diff --git a/app/src/main/java/org/simple/clinic/registration/phone/RegistrationPhoneUiRenderer.kt b/app/src/main/java/org/simple/clinic/registration/phone/RegistrationPhoneUiRenderer.kt index 41e3e16d2ee..6c83ff4973c 100644 --- a/app/src/main/java/org/simple/clinic/registration/phone/RegistrationPhoneUiRenderer.kt +++ b/app/src/main/java/org/simple/clinic/registration/phone/RegistrationPhoneUiRenderer.kt @@ -21,8 +21,10 @@ class RegistrationPhoneUiRenderer( if (mode == RegistrationUiMode.RegistrationOngoing) { registrationResultValueCallback.clear() ui.showProgressIndicator() + ui.hideNextButton() } else { ui.hideProgressIndicator() + ui.showNextButton() } } diff --git a/app/src/test/java/org/simple/clinic/registration/phone/RegistrationPhoneScreenLogicTest.kt b/app/src/test/java/org/simple/clinic/registration/phone/RegistrationPhoneScreenLogicTest.kt index 7f7fa65af7f..76af8bba9a6 100644 --- a/app/src/test/java/org/simple/clinic/registration/phone/RegistrationPhoneScreenLogicTest.kt +++ b/app/src/test/java/org/simple/clinic/registration/phone/RegistrationPhoneScreenLogicTest.kt @@ -155,6 +155,7 @@ class RegistrationPhoneScreenLogicTest { // then verify(ui).showProgressIndicator() + verify(ui).hideNextButton() verify(findUserWithPhoneNumber).find(inputNumber) } @@ -176,6 +177,8 @@ class RegistrationPhoneScreenLogicTest { // then verify(ui).showProgressIndicator() verify(ui).hideProgressIndicator() + verify(ui).hideNextButton() + verify(ui).showNextButton() verify(ui).showUnexpectedErrorMessage() clearInvocations(ui) @@ -186,6 +189,8 @@ class RegistrationPhoneScreenLogicTest { // then verify(ui).showProgressIndicator() verify(ui).hideProgressIndicator() + verify(ui).hideNextButton() + verify(ui).showNextButton() verify(ui).showNetworkErrorMessage() } @@ -291,6 +296,7 @@ class RegistrationPhoneScreenLogicTest { // then verify(ui).showProgressIndicator() + verify(ui).hideNextButton() verify(facilitySync).pullWithResult() } @@ -324,6 +330,7 @@ class RegistrationPhoneScreenLogicTest { // then verify(ui).hideProgressIndicator() + verify(ui).showNextButton() verify(ui).showNetworkErrorMessage() verify(findUserWithPhoneNumber, never()).find(phoneNumber) } @@ -342,6 +349,7 @@ class RegistrationPhoneScreenLogicTest { // then verify(ui).hideProgressIndicator() + verify(ui).showNextButton() verify(ui).showUnexpectedErrorMessage() verify(findUserWithPhoneNumber, never()).find(phoneNumber) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 502d647e31f..2159c51ef7d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,22 +1,22 @@ [versions] agp = "8.13.0" -androidx-cameraView = "1.4.2" -androidx-camera = "1.4.2" +androidx-cameraView = "1.5.0" +androidx-camera = "1.5.0" androidx-paging = "3.3.6" androidx-room = "2.7.2" -androidx-work = "2.10.3" +androidx-work = "2.10.5" androidx-security-crypto = "1.1.0-alpha07" -androidx-viewmodel = "2.9.3" -androidx-lifecycle = "2.8.7" +androidx-viewmodel = "2.9.4" +androidx-lifecycle = "2.9.4" androidx-activity = "1.10.1" chucker = "4.2.0" -dagger = "2.57.1" +dagger = "2.57.2" -kotlin = "2.2.10" +kotlin = "2.2.20" -ksp = "2.2.10-2.0.2" +ksp = "2.2.20-2.0.2" ktlint = "0.36.0" @@ -38,7 +38,7 @@ coroutines = "1.10.2" compose-compiler = "1.5.13" -androidx-compose-bom = "2025.08.01" +androidx-compose-bom = "2025.09.01" composeThemeAdapter = "0.36.0" @@ -79,9 +79,9 @@ androidx-room-rx2 = { module = "androidx.room:room-rxjava2", version.ref = "andr androidx-room-testing = { module = "androidx.room:room-testing", version.ref = "androidx-room" } androidx-room-paging = { module = "androidx.room:room-paging", version.ref = "androidx-room" } -androidx-test-junit = "androidx.test.ext:junit:1.2.1" -androidx-test-rules = "androidx.test:rules:1.6.1" -androidx-test-runner = "androidx.test:runner:1.6.2" +androidx-test-junit = "androidx.test.ext:junit:1.3.0" +androidx-test-runner = "androidx.test:runner:1.7.0" +androidx-test-rules = "androidx.test:rules:1.7.0" androidx-work-runtime = { module = "androidx.work:work-runtime-ktx", version.ref = "androidx-work" } androidx-work-rxjava = { module = "androidx.work:work-rxjava2", version.ref = "androidx-work" } @@ -107,16 +107,16 @@ edittext-pinentry = "com.alimuzaffar.lib:pinentryedittext:2.0.6" faker = "com.github.blocoio:faker:2.0.4" -firebase-config = "com.google.firebase:firebase-config:23.0.0" +firebase-config = "com.google.firebase:firebase-config:23.0.1" firebase-analytics = "com.google.firebase:firebase-analytics-ktx:22.5.0" -gson = "com.google.code.gson:gson:2.13.1" +gson = "com.google.code.gson:gson:2.13.2" itemanimators = "com.mikepenz:itemanimators:1.1.0" itext7 = "com.itextpdf:itext7-core:7.2.5" -jackson-core = "com.fasterxml.jackson.core:jackson-core:2.19.2" +jackson-core = "com.fasterxml.jackson.core:jackson-core:2.20.0" jbcrypt = "org.mindrot:jbcrypt:0.4" @@ -138,11 +138,11 @@ lint-tests = { module = "com.android.tools.lint:lint-tests", version.ref = "lint #noinspection GradleDependency logback-classic = "ch.qos.logback:logback-classic:1.2.11" -lottie = "com.airbnb.android:lottie-compose:6.6.7" +lottie = "com.airbnb.android:lottie-compose:6.6.9" -material = "com.google.android.material:material:1.12.0" +material = "com.google.android.material:material:1.13.0" -mockito-kotlin = "org.mockito.kotlin:mockito-kotlin:5.4.0" +mockito-kotlin = "org.mockito.kotlin:mockito-kotlin:6.0.0" mobius-android = { module = "com.spotify.mobius:mobius-android", version.ref = "mobius" } mobius-core = { module = "com.spotify.mobius:mobius-core", version.ref = "mobius" } @@ -160,7 +160,7 @@ okhttp-interceptor-logging = { module = "com.squareup.okhttp3:logging-intercepto openCsv = "com.opencsv:opencsv:5.12.0" play-app-update = "com.google.android.play:app-update-ktx:2.1.0" -play-services-auth = "com.google.android.gms:play-services-auth:21.3.0" +play-services-auth = "com.google.android.gms:play-services-auth:21.4.0" play-services-location = "com.google.android.gms:play-services-location:21.3.0" play-services-mlkit-barcode = "com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1" @@ -179,7 +179,7 @@ rx-java = "io.reactivex.rxjava2:rxjava:2.2.21" rx-kotlin = "io.reactivex.rxjava2:rxkotlin:2.4.0" rx-preferences = "com.f2prateek.rx.preferences2:rx-preferences:2.0.1" -sentry-android = "io.sentry:sentry-android:8.21.1" +sentry-android = "io.sentry:sentry-android:8.22.0" signaturepad = "com.github.gcacace:signature-pad:1.3.1" @@ -191,9 +191,9 @@ timber = "com.jakewharton.timber:timber:5.0.1" rx-java-extensions = "com.github.akarnokd:rxjava3-extensions:3.1.1" -truth = "com.google.truth:truth:1.4.4" +truth = "com.google.truth:truth:1.4.5" -uuid-generator = "com.fasterxml.uuid:java-uuid-generator:5.1.0" +uuid-generator = "com.fasterxml.uuid:java-uuid-generator:5.1.1" #noinspection GradleDependency viewpump = "io.github.inflationx:viewpump:2.0.3" @@ -223,14 +223,14 @@ sqlCipher = { module = "net.zetetic:sqlcipher-android", version.ref = "sqlCipher android-application = { id = "com.android.application", version.ref = "agp" } android-library = { id = "com.android.library", version.ref = "agp" } android-lint = { id = "com.android.lint", version.ref = "agp" } -androidx-benchmark = { id = "androidx.benchmark", version = "1.4.0" } +androidx-benchmark = { id = "androidx.benchmark", version = "1.4.1" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } kotlin-compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } google-services = { id = "com.google.gms.google-services", version = "4.4.3" } -sentry = { id = "io.sentry.android.gradle", version = "5.9.0" } +sentry = { id = "io.sentry.android.gradle", version = "5.12.0" } [bundles] androidx-camera = ["androidx-camera-core", "androidx-camera-camera2", "androidx-camera-view", "androidx-camera-lifecycle"] diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 1b33c55baab..8bdaf60c75a 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d4081da476b..2e1113280ef 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 23d15a93670..adff685a034 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015-2021 the original authors. +# Copyright © 2015 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -114,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH="\\\"\\\"" # Determine the Java command to use to start the JVM. @@ -172,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -212,7 +210,6 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" diff --git a/gradlew.bat b/gradlew.bat index 5eed7ee8452..e509b2dd8fe 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -70,11 +70,10 @@ goto fail :execute @rem Setup the command line -set CLASSPATH= @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell