Skip to content

Commit

Permalink
fix: crash when editing int or long values
Browse files Browse the repository at this point in the history
  • Loading branch information
huajijam committed Jan 13, 2025
1 parent a944bd1 commit 5e735ea
Showing 1 changed file with 35 additions and 18 deletions.
53 changes: 35 additions & 18 deletions app/src/main/java/dev/bluehouse/enablevolte/pages/Editor.kt
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,8 @@ fun <T>List<T>.removeAt(index: Int): List<T> {

@Composable
fun SingleValueEditor(data: DataRow, onValueChange: (String) -> Unit) {
var inputValue by remember { mutableStateOf(data.value ?: "") }

when (val typedValue = data.typedValue) {
is Boolean -> Row(
modifier = Modifier.selectableGroup().fillMaxWidth(),
Expand All @@ -168,24 +170,39 @@ fun SingleValueEditor(data: DataRow, onValueChange: (String) -> Unit) {
)
Text(stringResource(R.string.false_))
}
is Int -> TextField(
value = data.value ?: "",
onValueChange = { onValueChange(it) },
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
modifier = Modifier.fillMaxWidth(),
)
is Long -> TextField(
value = data.value ?: "",
onValueChange = { onValueChange(it) },
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
modifier = Modifier.fillMaxWidth(),
)
is String, null -> TextField(
value = data.value ?: "",
onValueChange = { onValueChange(it) },
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Text),
modifier = Modifier.fillMaxWidth(),
)
is Int -> {
TextField(
value = inputValue,
onValueChange = { newInput ->
inputValue = newInput
newInput.toIntOrNull()?.let { onValueChange(it.toString()) }
},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
modifier = Modifier.fillMaxWidth(),
)
}
is Long -> {
TextField(
value = inputValue,
onValueChange = { newInput ->
inputValue = newInput
newInput.toLongOrNull()?.let { onValueChange(it.toString()) }
},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
modifier = Modifier.fillMaxWidth(),
)
}
is String, null -> {
TextField(
value = inputValue,
onValueChange = { newInput ->
inputValue = newInput
onValueChange(newInput)
},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Text),
modifier = Modifier.fillMaxWidth(),
)
}
else -> {}
}
}
Expand Down

0 comments on commit 5e735ea

Please sign in to comment.