agent_ui: Add check to prevent sending empty messages in MessageEditor (#36545)

Release Notes:

- N/A
This commit is contained in:
Ben Brandt 2025-08-20 06:06:24 +02:00 committed by GitHub
parent ceec258bf3
commit d273aca1c1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 30 additions and 1 deletions

View file

@ -66,7 +66,7 @@ pub struct MessageEditor {
_parse_slash_command_task: Task<()>,
}
#[derive(Clone, Copy)]
#[derive(Clone, Copy, Debug)]
pub enum MessageEditorEvent {
Send,
Cancel,
@ -728,6 +728,9 @@ impl MessageEditor {
}
fn send(&mut self, _: &Chat, _: &mut Window, cx: &mut Context<Self>) {
if self.is_empty(cx) {
return;
}
cx.emit(MessageEditorEvent::Send)
}

View file

@ -4564,6 +4564,32 @@ pub(crate) mod tests {
});
}
#[gpui::test]
async fn test_message_doesnt_send_if_empty(cx: &mut TestAppContext) {
init_test(cx);
let connection = StubAgentConnection::new();
let (thread_view, cx) = setup_thread_view(StubAgentServer::new(connection), cx).await;
add_to_workspace(thread_view.clone(), cx);
let message_editor = cx.read(|cx| thread_view.read(cx).message_editor.clone());
let mut events = cx.events(&message_editor);
message_editor.update_in(cx, |editor, window, cx| {
editor.set_text("", window, cx);
});
message_editor.update_in(cx, |_editor, window, cx| {
window.dispatch_action(Box::new(Chat), cx);
});
cx.run_until_parked();
// We shouldn't have received any messages
assert!(matches!(
events.try_next(),
Err(futures::channel::mpsc::TryRecvError { .. })
));
}
#[gpui::test]
async fn test_message_editing_regenerate(cx: &mut TestAppContext) {
init_test(cx);