feat(messaging): send message on Enter keypress (#5246)

This commit is contained in:
James Rich
2026-04-25 15:52:58 -05:00
committed by GitHub
parent bbb7f8b23f
commit 534b4fde24
@@ -52,6 +52,12 @@ import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.key.Key
import androidx.compose.ui.input.key.KeyEventType
import androidx.compose.ui.input.key.isShiftPressed
import androidx.compose.ui.input.key.key
import androidx.compose.ui.input.key.onKeyEvent
import androidx.compose.ui.input.key.type
import androidx.compose.ui.platform.LocalClipboard
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.text.input.ImeAction
@@ -458,7 +464,18 @@ private fun MessageInput(
val canSend = !isOverLimit && currentText.isNotEmpty() && isEnabled
OutlinedTextField(
modifier = modifier.fillMaxWidth().padding(horizontal = 8.dp, vertical = 4.dp),
modifier =
modifier.fillMaxWidth().padding(horizontal = 8.dp, vertical = 4.dp).onKeyEvent { keyEvent ->
val isEnterNoShift = keyEvent.key == Key.Enter && !keyEvent.isShiftPressed
if (isEnterNoShift) {
if (keyEvent.type == KeyEventType.KeyUp && canSend) {
onSendMessage()
}
true // consume both KeyDown and KeyUp to prevent newline insertion
} else {
false
}
},
state = textFieldState,
lineLimits = TextFieldLineLimits.MultiLine(1, MAX_LINES),
label = { Text(stringResource(Res.string.message_input_label)) },