Skip to content

Commit 42521d4

Browse files
committed
fix: [ANDROAPP-5900] adapt Input providers to new TextFieldValue usage
1 parent c852df0 commit 42521d4

File tree

5 files changed

+95
-84
lines changed

5 files changed

+95
-84
lines changed

app/src/main/java/org/dhis2/usescases/eventsWithoutRegistration/eventDetails/providers/InputFieldsProvider.kt

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import androidx.compose.runtime.remember
99
import androidx.compose.runtime.setValue
1010
import androidx.compose.ui.Modifier
1111
import androidx.compose.ui.platform.testTag
12+
import androidx.compose.ui.text.input.TextFieldValue
1213
import androidx.compose.ui.unit.dp
1314
import org.dhis2.R
1415
import org.dhis2.commons.resources.ResourceManager
@@ -52,7 +53,11 @@ fun ProvideInputDate(
5253
if (uiModel.showField) {
5354
Spacer(modifier = Modifier.height(16.dp))
5455
var value by remember(uiModel.eventDate.dateValue) {
55-
mutableStateOf(uiModel.eventDate.dateValue?.let { formatStoredDateToUI(it) })
56+
if (uiModel.eventDate.dateValue != null) {
57+
mutableStateOf(TextFieldValue(formatStoredDateToUI(uiModel.eventDate.dateValue) ?: ""))
58+
} else {
59+
mutableStateOf(TextFieldValue())
60+
}
5661
}
5762

5863
var state by remember {
@@ -62,25 +67,21 @@ fun ProvideInputDate(
6267
InputDateTime(
6368
title = uiModel.eventDate.label ?: "",
6469
allowsManualInput = uiModel.allowsManualInput,
65-
value = value,
70+
inputTextFieldValue = value,
6671
actionIconType = DateTimeActionIconType.DATE,
6772
onActionClicked = uiModel.onDateClick,
6873
state = state,
6974
visualTransformation = DateTransformation(),
7075
onValueChanged = {
7176
value = it
72-
state = getInputShellStateBasedOnValue(it)
73-
manageActionBasedOnValue(uiModel, it)
77+
state = getInputShellStateBasedOnValue(it.text)
78+
manageActionBasedOnValue(uiModel, it.text)
7479
},
7580
isRequired = uiModel.required,
7681
modifier = modifier.testTag(INPUT_EVENT_INITIAL_DATE),
7782
onFocusChanged = { focused ->
78-
if (!focused) {
79-
value?.let {
80-
if (!isValid(it)) {
81-
state = InputShellState.ERROR
82-
}
83-
}
83+
if (!focused && !isValid(value.text)) {
84+
state = InputShellState.ERROR
8485
}
8586
},
8687
)

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

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import androidx.compose.runtime.setValue
88
import androidx.compose.ui.Modifier
99
import androidx.compose.ui.semantics.contentDescription
1010
import androidx.compose.ui.semantics.semantics
11+
import androidx.compose.ui.text.input.TextFieldValue
1112
import org.dhis2.commons.date.DateUtils
1213
import org.dhis2.commons.extensions.toDate
1314
import org.dhis2.form.extensions.inputState
@@ -38,20 +39,26 @@ fun ProvideInputDate(
3839
}
3940

4041
var value by remember(fieldUiModel.value) {
41-
mutableStateOf(fieldUiModel.value?.let { formatStoredDateToUI(it, fieldUiModel.valueType) })
42+
mutableStateOf(
43+
if (fieldUiModel.value != null) {
44+
TextFieldValue(formatStoredDateToUI(fieldUiModel.value!!, fieldUiModel.valueType))
45+
} else {
46+
TextFieldValue()
47+
},
48+
)
4249
}
4350

4451
InputDateTime(
4552
title = fieldUiModel.label,
46-
value = value,
53+
inputTextFieldValue = value,
4754
actionIconType = actionType,
4855
onActionClicked = {
4956
when (actionType) {
5057
DateTimeActionIconType.DATE -> uiEventHandler.invoke(
5158
RecyclerViewUiEvents.OpenCustomCalendar(
5259
uid = fieldUiModel.uid,
5360
label = fieldUiModel.label,
54-
date = value?.toDate(),
61+
date = value.text.toDate(),
5562
allowFutureDates = fieldUiModel.allowFutureDates ?: true,
5663
isDateTime = false,
5764
),
@@ -61,7 +68,7 @@ fun ProvideInputDate(
6168
RecyclerViewUiEvents.OpenTimePicker(
6269
uid = fieldUiModel.uid,
6370
label = fieldUiModel.label,
64-
date = formatUIDateToStored(value, fieldUiModel.valueType)?.let {
71+
date = formatUIDateToStored(value.text, fieldUiModel.valueType)?.let {
6572
DateUtils.timeFormat().parse(it)
6673
},
6774
isDateTime = false,
@@ -72,7 +79,7 @@ fun ProvideInputDate(
7279
RecyclerViewUiEvents.OpenCustomCalendar(
7380
uid = fieldUiModel.uid,
7481
label = fieldUiModel.label,
75-
date = formatUIDateToStored(value, fieldUiModel.valueType)?.let {
82+
date = formatUIDateToStored(value.text, fieldUiModel.valueType)?.let {
7683
DateUtils.databaseDateFormatNoSeconds().parse(it)
7784
},
7885
allowFutureDates = fieldUiModel.allowFutureDates ?: true,
@@ -81,7 +88,7 @@ fun ProvideInputDate(
8188
)
8289
}
8390
},
84-
modifier = modifier.semantics { contentDescription = formatStoredDateToUI(value ?: "", fieldUiModel.valueType) },
91+
modifier = modifier.semantics { contentDescription = formatStoredDateToUI(value.text, fieldUiModel.valueType) },
8592
state = fieldUiModel.inputState(),
8693
legendData = fieldUiModel.legend(),
8794
supportingText = fieldUiModel.supportingText(),
@@ -94,7 +101,7 @@ fun ProvideInputDate(
94101
intentHandler.invoke(
95102
FormIntent.OnTextChange(
96103
uid = fieldUiModel.uid,
97-
value = formatUIDateToStored(it, fieldUiModel.valueType),
104+
value = formatUIDateToStored(it.text, fieldUiModel.valueType),
98105
valueType = fieldUiModel.valueType,
99106
allowFutureDates = fieldUiModel.allowFutureDates ?: true,
100107
),

0 commit comments

Comments
 (0)