feat: Enable new prompt input while waiting for an answer (#6676)

* enable new prompt input while waiting for an answer

* correct spelling of handleSendMessage function

* remove test for disabling input while streaming content
This commit is contained in:
Trang Le 2025-10-14 14:04:52 +07:00 committed by GitHub
parent 8b687619b2
commit 476fdd6040
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 8 additions and 21 deletions

View File

@ -594,7 +594,6 @@ const ChatInput = ({
)}
<TextareaAutosize
ref={textareaRef}
disabled={Boolean(streamingContent)}
minRows={2}
rows={1}
maxRows={10}
@ -610,15 +609,15 @@ const ChatInput = ({
// e.keyCode 229 is for IME input with Safari
const isComposing =
e.nativeEvent.isComposing || e.keyCode === 229
if (
e.key === 'Enter' &&
!e.shiftKey &&
prompt.trim() &&
!isComposing
) {
if (e.key === 'Enter' && !e.shiftKey && !isComposing) {
e.preventDefault()
// Submit the message when Enter is pressed without Shift
handleSendMessage(prompt)
// Submit prompt when the following conditions are met:
// - Enter is pressed without Shift
// - The streaming content has finished
// - Prompt is not empty
if (!streamingContent && prompt.trim()) {
handleSendMessage(prompt)
}
// When Shift+Enter is pressed, a new line is added (default behavior)
}
}}

View File

@ -413,18 +413,6 @@ describe('ChatInput', () => {
})
})
it('disables input when streaming', async () => {
// Mock streaming state
mockAppState.streamingContent = { thread_id: 'test-thread' }
await act(async () => {
renderWithRouter()
})
const textarea = screen.getByTestId('chat-input')
expect(textarea).toBeDisabled()
})
it('shows tools dropdown when model supports tools and MCP servers are connected', async () => {
// Mock connected servers
mockGetConnectedServers.mockResolvedValue(['server1'])