From 06fd610359cbe7306feafd7b918065125b3651bb Mon Sep 17 00:00:00 2001 From: Benjamin Mwalimu Date: Wed, 11 Dec 2024 12:58:43 +0300 Subject: [PATCH 1/5] =?UTF-8?q?=F0=9F=94=A7=20Update=20gradle=20configs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/gradle.properties | 8 +++++--- android/gradle/libs.versions.toml | 2 +- android/quest/build.gradle.kts | 5 ++++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/android/gradle.properties b/android/gradle.properties index 4163bed138..4cff8e9071 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -9,22 +9,24 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx4608m +org.gradle.jvmargs=-Xmx8g -XX:MaxMetaspaceSize=4g # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true - +org.gradle.daemon=true android.useAndroidX=true android.enableJetifier=true android.defaults.buildfeatures.buildconfig=true android.suppressUnsupportedCompileSdk=34 android.jetifier.ignorelist=jackson-core +#org.gradle.daemon.max-idle-time=10800000 // 3 hours in milliseconds org.gradle.warning.mode=all +org.gradle.configuration-cache=true org.gradle.caching=false org.gradle.parallel=true org.gradle.configureondemand=true -android.enableR8.fullMode=true +android.enableR8.fullMode=false diff --git a/android/gradle/libs.versions.toml b/android/gradle/libs.versions.toml index bf1326ee09..21adfcad9e 100644 --- a/android/gradle/libs.versions.toml +++ b/android/gradle/libs.versions.toml @@ -8,7 +8,7 @@ androidx-test= "1.6.2" appcompat = "1.7.0" benchmark-junit = "1.3.3" cardview = "1.0.0" -common-utils = "1.0.0-SNAPSHOT" +common-utils = "1.0.1-SNAPSHOT" compose-ui = "1.6.8" compressor = "3.0.1" constraintlayout = "2.1.4" diff --git a/android/quest/build.gradle.kts b/android/quest/build.gradle.kts index ff2834411a..8edbeca100 100644 --- a/android/quest/build.gradle.kts +++ b/android/quest/build.gradle.kts @@ -199,7 +199,10 @@ android { testCoverage { jacocoVersion = BuildConfigs.jacocoVersion } - lint { abortOnError = false } + lint { + checkReleaseBuilds = true + abortOnError = false + } flavorDimensions += "apps" From 49b1e453a01311ed2df1acaa50ca446ef84fc3a0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Dec 2024 15:53:50 +0300 Subject: [PATCH 2/5] Bump nanoid from 3.3.7 to 3.3.8 (#3654) Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.7 to 3.3.8. - [Release notes](https://github.com/ai/nanoid/releases) - [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md) - [Commits](https://github.com/ai/nanoid/compare/3.3.7...3.3.8) --- updated-dependencies: - dependency-name: nanoid dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Elly Kitoto --- package-lock.json | 7 ++++--- yarn.lock | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index e269aaf09b..abe27502b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10495,15 +10495,16 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, diff --git a/yarn.lock b/yarn.lock index 2ace96069d..f8126b6c43 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5990,9 +5990,9 @@ multicast-dns@^7.2.5: thunky "^1.0.2" nanoid@^3.3.7: - version "3.3.7" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + version "3.3.8" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" + integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== negotiator@0.6.3: version "0.6.3" From 8402be9bd942a507a1884036d869869d4cc63322 Mon Sep 17 00:00:00 2001 From: Fikri Milano Date: Mon, 16 Dec 2024 16:30:30 +0700 Subject: [PATCH 3/5] Update task status on draft submission (#3642) * Trigger task status update on draft submission * Fix QR properties assignment If this function launches another coroutine, any value assigned within this function will be null if accessed from outside before the coroutine completes, as the assignment process has not yet finished at the time of access. * spotless * spotless --- .../ui/questionnaire/QuestionnaireActivity.kt | 8 +++ .../questionnaire/QuestionnaireViewModel.kt | 54 +++++++++---------- 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/android/quest/src/main/java/org/smartregister/fhircore/quest/ui/questionnaire/QuestionnaireActivity.kt b/android/quest/src/main/java/org/smartregister/fhircore/quest/ui/questionnaire/QuestionnaireActivity.kt index 9ed3132b57..effb4fdf9d 100644 --- a/android/quest/src/main/java/org/smartregister/fhircore/quest/ui/questionnaire/QuestionnaireActivity.kt +++ b/android/quest/src/main/java/org/smartregister/fhircore/quest/ui/questionnaire/QuestionnaireActivity.kt @@ -387,6 +387,14 @@ class QuestionnaireActivity : BaseMultiLanguageActivity() { lifecycleScope.launch { retrieveQuestionnaireResponse()?.let { questionnaireResponse -> viewModel.saveDraftQuestionnaire(questionnaireResponse, questionnaireConfig) + setResult( + Activity.RESULT_OK, + Intent().apply { + putExtra(QUESTIONNAIRE_RESPONSE, questionnaireResponse as Serializable) + putExtra(QUESTIONNAIRE_CONFIG, questionnaireConfig as Parcelable) + putExtra(ON_RESULT_TYPE, ActivityOnResultType.QUESTIONNAIRE.name) + }, + ) finish() } } diff --git a/android/quest/src/main/java/org/smartregister/fhircore/quest/ui/questionnaire/QuestionnaireViewModel.kt b/android/quest/src/main/java/org/smartregister/fhircore/quest/ui/questionnaire/QuestionnaireViewModel.kt index ecbe982df5..8ad2172d7f 100644 --- a/android/quest/src/main/java/org/smartregister/fhircore/quest/ui/questionnaire/QuestionnaireViewModel.kt +++ b/android/quest/src/main/java/org/smartregister/fhircore/quest/ui/questionnaire/QuestionnaireViewModel.kt @@ -706,42 +706,40 @@ constructor( * This function saves [QuestionnaireResponse] as draft if any of the [QuestionnaireResponse.item] * has an answer. */ - fun saveDraftQuestionnaire( + suspend fun saveDraftQuestionnaire( questionnaireResponse: QuestionnaireResponse, questionnaireConfig: QuestionnaireConfig, ) { - viewModelScope.launch { - val hasPages = questionnaireResponse.item.any { it.hasItem() } - val questionnaireHasAnswer = - questionnaireResponse.item.any { - if (!hasPages) { - it.answer.any { answerComponent -> answerComponent.hasValue() } - } else { - questionnaireResponse.item.any { page -> - page.item.any { pageItem -> - pageItem.answer.any { answerComponent -> answerComponent.hasValue() } - } + val hasPages = questionnaireResponse.item.any { it.hasItem() } + val questionnaireHasAnswer = + questionnaireResponse.item.any { + if (!hasPages) { + it.answer.any { answerComponent -> answerComponent.hasValue() } + } else { + questionnaireResponse.item.any { page -> + page.item.any { pageItem -> + pageItem.answer.any { answerComponent -> answerComponent.hasValue() } } } } - questionnaireResponse.questionnaire = - questionnaireConfig.id.asReference(ResourceType.Questionnaire).reference - if ( - !questionnaireConfig.resourceIdentifier.isNullOrBlank() && - questionnaireConfig.resourceType != null - ) { - questionnaireResponse.subject = - questionnaireConfig.resourceIdentifier!!.asReference( - questionnaireConfig.resourceType!!, - ) } - if (questionnaireHasAnswer) { - questionnaireResponse.status = QuestionnaireResponse.QuestionnaireResponseStatus.INPROGRESS - defaultRepository.addOrUpdate( - addMandatoryTags = true, - resource = questionnaireResponse, + questionnaireResponse.questionnaire = + questionnaireConfig.id.asReference(ResourceType.Questionnaire).reference + if ( + !questionnaireConfig.resourceIdentifier.isNullOrBlank() && + questionnaireConfig.resourceType != null + ) { + questionnaireResponse.subject = + questionnaireConfig.resourceIdentifier!!.asReference( + questionnaireConfig.resourceType!!, ) - } + } + if (questionnaireHasAnswer) { + questionnaireResponse.status = QuestionnaireResponse.QuestionnaireResponseStatus.INPROGRESS + defaultRepository.addOrUpdate( + addMandatoryTags = true, + resource = questionnaireResponse, + ) } } From 7767726887fc47e15e5e64d327db459862bf15fd Mon Sep 17 00:00:00 2001 From: Fikri Milano Date: Mon, 16 Dec 2024 16:47:52 +0700 Subject: [PATCH 4/5] Get QR when using summary mode (#3661) --- .../fhircore/quest/ui/questionnaire/QuestionnaireViewModel.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/android/quest/src/main/java/org/smartregister/fhircore/quest/ui/questionnaire/QuestionnaireViewModel.kt b/android/quest/src/main/java/org/smartregister/fhircore/quest/ui/questionnaire/QuestionnaireViewModel.kt index 8ad2172d7f..30f5d0e220 100644 --- a/android/quest/src/main/java/org/smartregister/fhircore/quest/ui/questionnaire/QuestionnaireViewModel.kt +++ b/android/quest/src/main/java/org/smartregister/fhircore/quest/ui/questionnaire/QuestionnaireViewModel.kt @@ -73,6 +73,7 @@ import org.smartregister.fhircore.engine.domain.model.ActionParameter import org.smartregister.fhircore.engine.domain.model.ActionParameterType import org.smartregister.fhircore.engine.domain.model.isEditable import org.smartregister.fhircore.engine.domain.model.isReadOnly +import org.smartregister.fhircore.engine.domain.model.isSummary import org.smartregister.fhircore.engine.rulesengine.RulesExecutor import org.smartregister.fhircore.engine.task.FhirCarePlanGenerator import org.smartregister.fhircore.engine.util.DispatcherProvider @@ -1136,6 +1137,7 @@ constructor( !resourceIdentifier.isNullOrEmpty() && (questionnaireConfig.isEditable() || questionnaireConfig.isReadOnly() || + questionnaireConfig.isSummary() || questionnaireConfig.saveDraft) ) { defaultRepository From ce5a557901cab03c280c56c8f1512d9769399938 Mon Sep 17 00:00:00 2001 From: Elly Kitoto Date: Mon, 16 Dec 2024 13:48:02 +0300 Subject: [PATCH 5/5] Disable apk minification (#3660) * Disable apk minification Signed-off-by: Elly Kitoto * Format code Signed-off-by: Elly Kitoto --------- Signed-off-by: Elly Kitoto --- android/quest/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/quest/build.gradle.kts b/android/quest/build.gradle.kts index ff2834411a..8c05a99080 100644 --- a/android/quest/build.gradle.kts +++ b/android/quest/build.gradle.kts @@ -116,8 +116,8 @@ android { } getByName("release") { - isMinifyEnabled = true - isShrinkResources = true + isMinifyEnabled = false + isShrinkResources = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro",