From 602186f7a4c4f0b43db8c61893c40ef37c0ca6f9 Mon Sep 17 00:00:00 2001 From: Huy Nguyen Quang Date: Wed, 11 Jun 2025 22:48:27 +0700 Subject: [PATCH] fix: maintain chat input focus after sending message --- app/controllers/messages_controller.rb | 5 ++++- app/views/messages/create.turbo_stream.erb | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 app/views/messages/create.turbo_stream.erb diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb index 7a7777be..4d2ab2cc 100644 --- a/app/controllers/messages_controller.rb +++ b/app/controllers/messages_controller.rb @@ -10,7 +10,10 @@ class MessagesController < ApplicationController ai_model: message_params[:ai_model] ) - redirect_to chat_path(@chat, thinking: true) + respond_to do |format| + format.html { redirect_to chat_path(@chat, thinking: true) } + format.turbo_stream + end end private diff --git a/app/views/messages/create.turbo_stream.erb b/app/views/messages/create.turbo_stream.erb new file mode 100644 index 00000000..4bfd9b63 --- /dev/null +++ b/app/views/messages/create.turbo_stream.erb @@ -0,0 +1,21 @@ +<%# Add thinking indicator to messages area %> +<%= turbo_stream.append "messages" do %> + <%= render "chats/thinking_indicator", chat: @chat %> +<% end %> + +<%# Reset the form by replacing it with a fresh version %> +<%= turbo_stream.replace "chat-form" do %> + <%= render "messages/chat_form", chat: @chat %> +<% end %> + +<%# Focus the input after form replacement %> +<%= turbo_stream.after "chat-form" do %> + +<% end %> \ No newline at end of file