Skip to content

Commit 59baa22

Browse files
mmmateosxavimolloy
andauthored
fix: [ANDROAPP-6984] crash when clearing radio button input (#4125)
* fix: [ANDROAPP-6984] crash when clearing radio button input Signed-off-by: Manu Muñoz <[email protected]> * fix: [ANDROAPP-6984] correct flaky tests --------- Signed-off-by: Manu Muñoz <[email protected]> Co-authored-by: Xavier Molloy <[email protected]>
1 parent 3efd412 commit 59baa22

File tree

6 files changed

+19
-15
lines changed

6 files changed

+19
-15
lines changed

app/src/androidTest/java/org/dhis2/usescases/datasets/DataSetInitialRobot.kt

-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ internal class DataSetInitialRobot : BaseRobot() {
2020
}
2121

2222
fun clickOnInputPeriod() {
23-
waitForView(withId(R.id.dataSetPeriodInputLayout), 5000)
2423
onView(withId(R.id.dataSetPeriodInputLayout)).perform(click())
2524
}
2625

app/src/androidTest/java/org/dhis2/usescases/datasets/DataSetTableRobot.kt

+1-5
Original file line numberDiff line numberDiff line change
@@ -274,12 +274,8 @@ internal class DataSetTableRobot(
274274
)
275275
}
276276

277-
@OptIn(ExperimentalTestApi::class)
278277
fun tapOnSaveButton() {
279-
composeTestRule.waitUntilExactlyOneExists(
280-
hasTestTag(SAVE_BUTTON_TAG),
281-
timeoutMillis = 3000
282-
)
278+
composeTestRule.waitForIdle()
283279
composeTestRule.onNodeWithTag(SAVE_BUTTON_TAG).performClick()
284280
composeTestRule.waitForIdle()
285281
}

app/src/main/java/org/dhis2/usescases/datasets/datasetInitial/DataSetInitialActivity.java

-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import org.dhis2.commons.Constants;
1919
import org.dhis2.commons.extensions.CategoryOptionExtensionsKt;
2020
import org.dhis2.commons.featureconfig.data.FeatureConfigRepository;
21-
import org.dhis2.commons.featureconfig.model.Feature;
2221
import org.dhis2.commons.orgunitselector.OUTreeFragment;
2322
import org.dhis2.commons.orgunitselector.OrgUnitSelectorScope;
2423
import org.dhis2.commons.resources.DhisPeriodUtils;

app/src/main/java/org/dhis2/usescases/datasets/datasetInitial/DataSetInitialPresenter.kt

+3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import org.dhis2.commons.data.tuples.Pair
77
import org.dhis2.commons.extensions.inDateRange
88
import org.dhis2.commons.extensions.inOrgUnit
99
import org.dhis2.commons.schedulers.SchedulerProvider
10+
import org.dhis2.mobile.commons.coroutine.CoroutineTracker
1011
import org.hisp.dhis.android.core.category.CategoryOption
1112
import org.hisp.dhis.android.core.organisationunit.OrganisationUnit
1213
import org.hisp.dhis.android.core.period.PeriodType
@@ -65,6 +66,7 @@ class DataSetInitialPresenter(
6566
}
6667

6768
override fun onCatOptionClick(catOptionUid: String) {
69+
CoroutineTracker.increment()
6870
compositeDisposable.add(
6971
dataSetInitialRepository.catCombo(catOptionUid)
7072
.subscribeOn(schedulerProvider.io())
@@ -79,6 +81,7 @@ class DataSetInitialPresenter(
7981
it.inOrgUnit(view.selectedOrgUnit?.uid())
8082
},
8183
)
84+
CoroutineTracker.decrement()
8285
},
8386
Timber::d,
8487
),

commons/src/main/java/org/dhis2/commons/orgunitselector/OUTreeFragment.kt

+3
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import kotlinx.coroutines.launch
2222
import org.dhis2.commons.R
2323
import org.dhis2.commons.dialogs.bottomsheet.bottomSheetInsets
2424
import org.dhis2.commons.dialogs.bottomsheet.bottomSheetLowerPadding
25+
import org.dhis2.mobile.commons.coroutine.CoroutineTracker
2526
import org.hisp.dhis.android.core.organisationunit.OrganisationUnit
2627
import org.hisp.dhis.mobile.ui.designsystem.component.OrgBottomSheet
2728
import javax.inject.Inject
@@ -71,6 +72,7 @@ class OUTreeFragment : BottomSheetDialogFragment() {
7172
}
7273

7374
fun build(): OUTreeFragment {
75+
CoroutineTracker.increment()
7476
return OUTreeFragment().apply {
7577
selectionCallback = selectionListener
7678
model = ouTreeModel
@@ -79,6 +81,7 @@ class OUTreeFragment : BottomSheetDialogFragment() {
7981
putParcelable(ARG_SCOPE, orgUnitScope)
8082
putStringArrayList(ARG_PRE_SELECTED_OU, ArrayList(preselectedOrgUnits))
8183
}
84+
CoroutineTracker.decrement()
8285
}
8386
}
8487
}

form/src/main/java/org/dhis2/form/ui/provider/inputfield/RadioButtonProvider.kt

+12-8
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,18 @@ internal fun ProvideRadioButtonInput(
5353
isRequired = fieldUiModel.mandatory,
5454
itemSelected = data.find { it.selected },
5555
onItemChange = { item ->
56-
val selectedIndex = data.indexOf(item)
57-
intentHandler(
58-
FormIntent.OnSave(
59-
fieldUiModel.uid,
60-
codeList[selectedIndex],
61-
fieldUiModel.valueType,
62-
),
63-
)
56+
if (item != null) {
57+
val selectedIndex = data.indexOf(item)
58+
intentHandler(
59+
FormIntent.OnSave(
60+
fieldUiModel.uid,
61+
codeList[selectedIndex],
62+
fieldUiModel.valueType,
63+
),
64+
)
65+
} else {
66+
intentHandler(FormIntent.ClearValue(fieldUiModel.uid))
67+
}
6468
},
6569
)
6670
}

0 commit comments

Comments
 (0)