Skip to content

Commit a49529b

Browse files
committed
Update questionnaire launchContexts to use map
1 parent 82e3191 commit a49529b

File tree

2 files changed

+23
-20
lines changed

2 files changed

+23
-20
lines changed

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/questionnaire/QuestionnaireActivity.kt

+18-15
Original file line numberDiff line numberDiff line change
@@ -194,11 +194,15 @@ open class QuestionnaireActivity : BaseMultiLanguageActivity(), View.OnClickList
194194
// Timber.e(it.encodeResourceToString())
195195
questionnaireFragmentBuilder.setQuestionnaireResponse(it.encodeResourceToString())
196196
}
197-
intent.getStringArrayListExtra(QUESTIONNAIRE_LAUNCH_CONTEXT)?.let {
198-
val launchContextMap = it.associateBy { resourceString ->
199-
val resource = parser.parseResource(resourceString) as Resource
200-
resource.resourceType.name.lowercase()
201-
}
197+
intent.getBundleExtra(QUESTIONNAIRE_LAUNCH_CONTEXTS)?.let { launchContextBundle ->
198+
val launchContextMap =
199+
buildMap<String, String> {
200+
launchContextBundle.keySet().forEach {
201+
this[it] =
202+
launchContextBundle.getString(it)
203+
?: throw NotImplementedError("launchContext with null is not currently supported")
204+
}
205+
}
202206
questionnaireFragmentBuilder.setQuestionnaireLaunchContextMap(launchContextMap)
203207
}
204208

@@ -503,7 +507,7 @@ open class QuestionnaireActivity : BaseMultiLanguageActivity(), View.OnClickList
503507
const val QUESTIONNAIRE_ARG_BARCODE_KEY = "patient-barcode"
504508
const val WHO_IDENTIFIER_SYSTEM = "WHO-HCID"
505509
const val QUESTIONNAIRE_AGE = "PR-age"
506-
const val QUESTIONNAIRE_LAUNCH_CONTEXT =
510+
const val QUESTIONNAIRE_LAUNCH_CONTEXTS =
507511
"org.smartregister.fhircore.engine.ui.questionnaire.launchContext"
508512
const val QUESTIONNAIRE_TRACE = "Questionnaire.renderFragment"
509513

@@ -514,7 +518,7 @@ open class QuestionnaireActivity : BaseMultiLanguageActivity(), View.OnClickList
514518
questionnaireType: QuestionnaireType = QuestionnaireType.DEFAULT,
515519
questionnaireResponse: QuestionnaireResponse? = null,
516520
backReference: String? = null,
517-
launchContexts: ArrayList<Resource>? = null,
521+
launchContexts: Map<String, Resource> = emptyMap(),
518522
populationResources: ArrayList<out Resource> = ArrayList(),
519523
) =
520524
bundleOf(
@@ -536,12 +540,11 @@ open class QuestionnaireActivity : BaseMultiLanguageActivity(), View.OnClickList
536540
)
537541
}
538542
launchContexts
539-
?.takeIf { it.isNotEmpty() }
540-
?.let { list ->
541-
putStringArrayList(
542-
QUESTIONNAIRE_LAUNCH_CONTEXT,
543-
ArrayList(list.map { it.encodeResourceToString() }),
544-
)
543+
.takeIf { it.isNotEmpty() }
544+
?.let { kv ->
545+
val launchContextsBundlePairs =
546+
kv.map { it.key to it.value.encodeResourceToString() }.toTypedArray()
547+
putBundle(QUESTIONNAIRE_LAUNCH_CONTEXTS, bundleOf(*launchContextsBundlePairs))
545548
}
546549
}
547550

@@ -552,7 +555,7 @@ open class QuestionnaireActivity : BaseMultiLanguageActivity(), View.OnClickList
552555
groupIdentifier: String? = null,
553556
questionnaireType: QuestionnaireType = QuestionnaireType.DEFAULT,
554557
intentBundle: Bundle = Bundle.EMPTY,
555-
launchContexts: ArrayList<Resource>? = null,
558+
launchContexts: Map<String, Resource> = emptyMap(),
556559
populationResources: ArrayList<Resource>? = null,
557560
) {
558561
context.startActivity(
@@ -578,7 +581,7 @@ open class QuestionnaireActivity : BaseMultiLanguageActivity(), View.OnClickList
578581
questionnaireType: QuestionnaireType = QuestionnaireType.DEFAULT,
579582
backReference: String? = null,
580583
intentBundle: Bundle = Bundle.EMPTY,
581-
launchContexts: ArrayList<Resource>? = null,
584+
launchContexts: Map<String, Resource> = emptyMap(),
582585
populationResources: ArrayList<Resource>? = null,
583586
) {
584587
context.startActivityForResult(

android/engine/src/test/java/org/smartregister/fhircore/engine/ui/questionnaire/QuestionnaireActivityTest.kt

+5-5
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ class QuestionnaireActivityTest : ActivityRobolectricTest() {
132132
intent =
133133
Intent().apply {
134134
putExtra(QuestionnaireActivity.QUESTIONNAIRE_TITLE_KEY, "Patient registration")
135-
putStringArrayListExtra(QuestionnaireActivity.QUESTIONNAIRE_LAUNCH_CONTEXT, arrayListOf())
135+
putExtra(QuestionnaireActivity.QUESTIONNAIRE_LAUNCH_CONTEXTS, bundleOf())
136136
putExtra(QuestionnaireActivity.QUESTIONNAIRE_ARG_FORM, "patient-registration")
137137
putExtra(QuestionnaireActivity.QUESTIONNAIRE_ARG_PATIENT_KEY, "1234")
138138
}
@@ -710,7 +710,7 @@ class QuestionnaireActivityTest : ActivityRobolectricTest() {
710710
QuestionnaireActivity.launchQuestionnaireForResult(
711711
ctx,
712712
questionnaireId = "testQuestionnaire",
713-
launchContexts = null,
713+
launchContexts = emptyMap(),
714714
populationResources = arrayListOf(),
715715
)
716716
verify { ctx.startActivityForResult(any(), withArg { Assert.assertEquals(0, it) }) }
@@ -725,7 +725,7 @@ class QuestionnaireActivityTest : ActivityRobolectricTest() {
725725
QuestionnaireActivity.launchQuestionnaire(
726726
ctx,
727727
questionnaireId = "testQuestionnaire",
728-
launchContexts = null,
728+
launchContexts = emptyMap(),
729729
populationResources = arrayListOf(),
730730
)
731731
verify { ctx.startActivity(any()) }
@@ -739,7 +739,7 @@ class QuestionnaireActivityTest : ActivityRobolectricTest() {
739739
val groupIdentifier = "group_identifier"
740740
val intentBundle = Bundle.EMPTY
741741
val questionnaireType = QuestionnaireType.DEFAULT
742-
val launchContexts = mockk<ArrayList<Resource>>(relaxed = true)
742+
val launchContexts = mockk<Map<String, Resource>>(relaxed = true)
743743
val populationResources = mockk<ArrayList<Resource>>(relaxed = true)
744744

745745
val ctx = spyk<Activity>()
@@ -811,7 +811,7 @@ class QuestionnaireActivityTest : ActivityRobolectricTest() {
811811
val backReference = "back_reference"
812812
val intentBundle = Bundle.EMPTY
813813
val questionnaireType = QuestionnaireType.DEFAULT
814-
val launchContexts = mockk<ArrayList<Resource>>(relaxed = true)
814+
val launchContexts = mockk<Map<String, Resource>>(relaxed = true)
815815
val populationResources = mockk<ArrayList<Resource>>(relaxed = true)
816816

817817
val ctx = spyk<Activity>()

0 commit comments

Comments
 (0)