From 9a1b1adc72961b37fe6d23b6c26de60b91fb2924 Mon Sep 17 00:00:00 2001 From: Faisal Amir Date: Wed, 7 Feb 2024 18:07:12 +0700 Subject: [PATCH] fix: update conditional check last status message (#1951) * fix: update conditional check last status message * fix: no new message on failed message --------- Co-authored-by: Louis --- web/containers/Providers/EventHandler.tsx | 6 +++--- web/helpers/atoms/ChatMessage.atom.ts | 14 ++++++++------ web/hooks/useCreateNewThread.ts | 7 +++++-- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/web/containers/Providers/EventHandler.tsx b/web/containers/Providers/EventHandler.tsx index f22ed1bc7..cfd2c5629 100644 --- a/web/containers/Providers/EventHandler.tsx +++ b/web/containers/Providers/EventHandler.tsx @@ -128,10 +128,10 @@ export default function EventHandler({ children }: { children: ReactNode }) { const thread = threadsRef.current?.find((e) => e.id == message.thread_id) if (thread) { - const messageContent = message.content[0]?.text.value ?? '' + const messageContent = message.content[0]?.text?.value const metadata = { ...thread.metadata, - lastMessage: messageContent, + ...(messageContent && { lastMessage: messageContent }), } updateThread({ @@ -151,7 +151,7 @@ export default function EventHandler({ children }: { children: ReactNode }) { ?.addNewMessage(message) } }, - [updateMessage, updateThreadWaiting, setIsGeneratingResponse] + [updateMessage, updateThreadWaiting, setIsGeneratingResponse, updateThread] ) useEffect(() => { diff --git a/web/helpers/atoms/ChatMessage.atom.ts b/web/helpers/atoms/ChatMessage.atom.ts index b11e8f3be..45cc773e6 100644 --- a/web/helpers/atoms/ChatMessage.atom.ts +++ b/web/helpers/atoms/ChatMessage.atom.ts @@ -70,11 +70,12 @@ export const addNewMessageAtom = atom( set(chatMessages, newData) // Update thread last message - set( - updateThreadStateLastMessageAtom, - newMessage.thread_id, - newMessage.content - ) + if (newMessage.content.length) + set( + updateThreadStateLastMessageAtom, + newMessage.thread_id, + newMessage.content + ) } ) @@ -131,7 +132,8 @@ export const updateMessageAtom = atom( newData[conversationId] = updatedMessages set(chatMessages, newData) // Update thread last message - set(updateThreadStateLastMessageAtom, conversationId, text) + if (text.length) + set(updateThreadStateLastMessageAtom, conversationId, text) } } ) diff --git a/web/hooks/useCreateNewThread.ts b/web/hooks/useCreateNewThread.ts index 12a5e04ca..406bf8f74 100644 --- a/web/hooks/useCreateNewThread.ts +++ b/web/hooks/useCreateNewThread.ts @@ -6,6 +6,7 @@ import { ThreadAssistantInfo, ThreadState, Model, + MessageStatus, } from '@janhq/core' import { atom, useAtomValue, useSetAtom } from 'jotai' @@ -20,6 +21,7 @@ import useSetActiveThread from './useSetActiveThread' import { extensionManager } from '@/extension' +import { getCurrentChatMessagesAtom } from '@/helpers/atoms/ChatMessage.atom' import { threadsAtom, threadStatesAtom, @@ -51,6 +53,7 @@ export const useCreateNewThread = () => { const setFileUpload = useSetAtom(fileUploadAtom) const setSelectedModel = useSetAtom(selectedModelAtom) const setThreadModelParams = useSetAtom(setThreadModelParamsAtom) + const messages = useAtomValue(getCurrentChatMessagesAtom) const { recommendedModel, downloadedModels } = useRecommendedModel() @@ -63,9 +66,9 @@ export const useCreateNewThread = () => { const defaultModel = model ?? recommendedModel ?? downloadedModels[0] // check last thread message, if there empty last message use can not create thread - const lastMessage = threads[0]?.metadata?.lastMessage + const lastMessage = threads[threads.length - 1]?.metadata?.lastMessage - if (!lastMessage && threads.length) { + if (!lastMessage && threads.length && !messages.length) { return null }