diff --git a/packages/ui/src/views/chatmessage/ChatMessage.jsx b/packages/ui/src/views/chatmessage/ChatMessage.jsx index d5a67de7acf..23cd2d28ff0 100644 --- a/packages/ui/src/views/chatmessage/ChatMessage.jsx +++ b/packages/ui/src/views/chatmessage/ChatMessage.jsx @@ -39,7 +39,8 @@ import { IconDeviceSdCard, IconCheck, IconPaperclip, - IconSparkles + IconSparkles, + IconRefresh } from '@tabler/icons-react' import robotPNG from '@/assets/images/robot.png' import userPNG from '@/assets/images/account.png' @@ -167,6 +168,22 @@ export const ChatMessage = ({ open, chatflowid, isAgentCanvas, isDialog, preview const dispatch = useDispatch() + // Add resetChat function here, after initial declarations + const resetChat = useCallback(() => { + const newChatId = uuidv4() + setChatId(newChatId) + setMessages([ + { + message: 'Hi there! How can I help?', + type: 'apiMessage' + } + ]) + setUserInput('') + setUploadedFiles([]) + setPreviews([]) + setLocalStorageChatflow(chatflowid, newChatId) + }, [chatflowid, setPreviews]) + useNotifier() const enqueueSnackbar = (...args) => dispatch(enqueueSnackbarAction(...args)) const closeSnackbar = (...args) => dispatch(closeSnackbarAction(...args)) @@ -1018,9 +1035,13 @@ export const ChatMessage = ({ open, chatflowid, isAgentCanvas, isDialog, preview // Get chatmessages successful useEffect(() => { if (getChatmessageApi.data?.length) { - const chatId = getChatmessageApi.data[0]?.chatId + const latestMessage = getChatmessageApi.data[getChatmessageApi.data.length - 1] + const chatId = latestMessage?.chatId setChatId(chatId) - const loadedMessages = getChatmessageApi.data.map((message) => { + // Filter messages to only include those with matching chatId + const messagesForChat = getChatmessageApi.data.filter((message) => message.chatId === chatId) + + const loadedMessages = messagesForChat.map((message) => { const obj = { id: message.id, message: message.content, @@ -1538,6 +1559,31 @@ export const ChatMessage = ({ open, chatflowid, isAgentCanvas, isDialog, preview )}