From f868bb7df73193b74583e7d527c6bd128a65f9a5 Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Sun, 27 Apr 2025 01:20:43 -0400 Subject: [PATCH] fix: message handling in useChatHelpers and useEventHandlers to prevent hard "load" of messages upon navigation --- client/src/hooks/Chat/useChatHelpers.ts | 6 +++--- client/src/hooks/SSE/useEventHandlers.ts | 14 +++++++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/client/src/hooks/Chat/useChatHelpers.ts b/client/src/hooks/Chat/useChatHelpers.ts index a79b860c57..c4e491c7df 100644 --- a/client/src/hooks/Chat/useChatHelpers.ts +++ b/client/src/hooks/Chat/useChatHelpers.ts @@ -23,10 +23,10 @@ export default function useChatHelpers(index = 0, paramId?: string) { const { conversation, setConversation } = useCreateConversationAtom(index); const { conversationId } = conversation ?? {}; - const queryParam = paramId === 'new' ? paramId : conversationId ?? paramId ?? ''; + const queryParam = paramId === 'new' ? paramId : (conversationId ?? paramId ?? ''); /* Messages: here simply to fetch, don't export and use `getMessages()` instead */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { data: _messages } = useGetMessagesByConvoId(conversationId ?? '', { enabled: isAuthenticated, }); @@ -41,7 +41,7 @@ export default function useChatHelpers(index = 0, paramId?: string) { const setMessages = useCallback( (messages: TMessage[]) => { queryClient.setQueryData([QueryKeys.messages, queryParam], messages); - if (queryParam === 'new') { + if (queryParam === 'new' && conversationId && conversationId !== 'new') { queryClient.setQueryData([QueryKeys.messages, conversationId], messages); } }, diff --git a/client/src/hooks/SSE/useEventHandlers.ts b/client/src/hooks/SSE/useEventHandlers.ts index 047f3592a5..003d5547df 100644 --- a/client/src/hooks/SSE/useEventHandlers.ts +++ b/client/src/hooks/SSE/useEventHandlers.ts @@ -452,12 +452,20 @@ export default function useEventHandlers({ announcePolite({ message: getAllContentText(responseMessage) }); /* Update messages; if assistants endpoint, client doesn't receive responseMessage */ + let finalMessages: TMessage[] = []; if (runMessages) { - setMessages([...runMessages]); + finalMessages = [...runMessages]; } else if (isRegenerate && responseMessage) { - setMessages([...messages, responseMessage]); + finalMessages = [...messages, responseMessage]; } else if (requestMessage != null && responseMessage != null) { - setMessages([...messages, requestMessage, responseMessage]); + finalMessages = [...messages, requestMessage, responseMessage]; + } + if (finalMessages.length > 0) { + setMessages(finalMessages); + queryClient.setQueryData( + [QueryKeys.messages, conversation.conversationId], + finalMessages, + ); } const isNewConvo = conversation.conversationId !== submissionConvo.conversationId;