diff --git a/packages/ui/src/views/chatmessage/ChatMessage.js b/packages/ui/src/views/chatmessage/ChatMessage.js index e52bcfd5..006e2425 100644 --- a/packages/ui/src/views/chatmessage/ChatMessage.js +++ b/packages/ui/src/views/chatmessage/ChatMessage.js @@ -1,4 +1,4 @@ -import { useState, useRef, useEffect, useCallback } from 'react' +import { useState, useRef, useEffect, useCallback, Fragment } from 'react' import { useSelector } from 'react-redux' import PropTypes from 'prop-types' import socketIOClient from 'socket.io-client' @@ -96,6 +96,7 @@ export const ChatMessage = ({ open, chatflowid, isDialog }) => { // recording const [isRecording, setIsRecording] = useState(false) const [recordingNotSupported, setRecordingNotSupported] = useState(false) + const [isLoadingRecording, setIsLoadingRecording] = useState(false) const isFileAllowedForUpload = (file) => { const constraints = getAllowChatFlowUploads.data @@ -292,10 +293,8 @@ export const ChatMessage = ({ open, chatflowid, isDialog }) => { } const onRecordingStopped = async () => { + setIsLoadingRecording(true) stopAudioRecording(addRecordingToPreviews) - setIsRecording(false) - setRecordingNotSupported(false) - handlePromptClick('') } const onSourceDialogClick = (data, title) => { @@ -364,14 +363,13 @@ export const ChatMessage = ({ open, chatflowid, isDialog }) => { if (promptStarterInput !== undefined && promptStarterInput.trim() !== '') input = promptStarterInput setLoading(true) - const urls = [] - previews.map((item) => { - urls.push({ + const urls = previews.map((item) => { + return { data: item.data, type: item.type, name: item.name, mime: item.mime - }) + } }) clearPreviews() setMessages((prevMessages) => [...prevMessages, { message: input, type: 'userMessage', fileUploads: urls }]) @@ -383,7 +381,7 @@ export const ChatMessage = ({ open, chatflowid, isDialog }) => { history: messages.filter((msg) => msg.message !== 'Hi there! How can I help?'), chatId } - if (urls) params.uploads = urls + if (urls && urls.length > 0) params.uploads = urls if (isChatFlowAvailableToStream) params.socketIOClientId = socketIOClientId const response = await predictionApi.sendMessageAndGetPrediction(chatflowid, params) @@ -584,6 +582,16 @@ export const ChatMessage = ({ open, chatflowid, isDialog }) => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [open, chatflowid]) + useEffect(() => { + // wait for audio recording to load and then send + if (previews.length === 1 && previews[0].type === 'audio') { + setIsRecording(false) + setRecordingNotSupported(false) + handlePromptClick('') + } + // eslint-disable-next-line + }, [previews]) + return (
- {children}
-
- )
- }
- }}
- >
- {message.message}
-
+
+ {children}
+
)
- })}
- To record audio, use modern browsers like Chrome or Firefox that support audio recording.
+