Use LaunchedEffect to handle message input clearing

Track message sending with a flag and use LaunchedEffect to clear
the text input in the next composition frame. This prevents race
conditions between state changes and text clearing operations.
pull/2229/head
Jeremiah K 2025-06-22 15:16:03 -05:00
rodzic 1d165a5dc3
commit dd4c65665d
1 zmienionych plików z 10 dodań i 2 usunięć

Wyświetl plik

@ -150,6 +150,15 @@ internal fun MessageScreen(
) {
mutableStateOf(TextFieldValue(message))
}
// Track when a message is sent to clear the input
var messageSent by remember { mutableStateOf(false) }
LaunchedEffect(messageSent) {
if (messageSent) {
messageInput.value = TextFieldValue("")
messageSent = false
}
}
var replyingTo by remember { mutableStateOf<Message?>(null) }
var showDeleteDialog by remember { mutableStateOf(false) }
@ -267,8 +276,7 @@ internal fun MessageScreen(
viewModel.sendMessage(message, contactKey, it.packetId)
replyingTo = null
} ?: viewModel.sendMessage(message, contactKey)
// Clear the text input after sending the message and updating all state
messageInput.value = TextFieldValue("")
messageSent = true
}
}
}