From 2da7a82d9b3b2fa29600ecfde15e2db1434c6c23 Mon Sep 17 00:00:00 2001 From: Torsten Grote <t@grobox.de> Date: Thu, 22 Sep 2022 08:41:56 -0300 Subject: [PATCH] Don't pass mutable state in AddForumDialog --- .../briar/desktop/forums/AddForumDialog.kt | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/AddForumDialog.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/AddForumDialog.kt index c0f6e74bc5..d078c90265 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/AddForumDialog.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/AddForumDialog.kt @@ -34,7 +34,6 @@ import androidx.compose.material.TextButton import androidx.compose.material.rememberScaffoldState import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.MutableState import androidx.compose.runtime.State import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -77,6 +76,10 @@ fun AddForumDialog( window.minimumSize = Dimension(360, 180) val scaffoldState = rememberScaffoldState() val name = rememberSaveable { mutableStateOf("") } + val onNameChanged = { changedName: String -> + // not checking for blank here, so user can still remove all characters + if (changedName.length <= MAX_FORUM_NAME_LENGTH) name.value = changedName + } Surface { Scaffold( modifier = Modifier @@ -93,7 +96,7 @@ fun AddForumDialog( } }, content = { - AddForumContent(name, onCreate) + AddForumContent(name.value, onNameChanged, onCreate) }, bottomBar = { OkCancelBottomBar( @@ -101,6 +104,7 @@ fun AddForumDialog( okButtonEnabled = isValidForumName(name.value), onOkButtonClicked = { onCreate(name.value) + onNameChanged("") }, onCancelButtonClicked = onCancelButtonClicked, ) @@ -115,17 +119,17 @@ private fun isValidForumName(name: String): Boolean { } @Composable -fun AddForumContent(name: MutableState<String>, onCreate: (String) -> Unit) { +fun AddForumContent(name: String, onNameChanged: (String) -> Unit, onCreate: (String) -> Unit) { val focusRequester = remember { FocusRequester() } OutlinedTextField( - value = name.value, - onValueChange = { if (it.length <= MAX_FORUM_NAME_LENGTH) name.value = it }, + value = name, + onValueChange = onNameChanged, label = { Text(i18n("forum.add.hint")) }, keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), singleLine = true, onEnter = { - onCreate(name.value) - name.value = "" + onCreate(name) + onNameChanged("") }, modifier = Modifier .fillMaxWidth() -- GitLab