From d53cd1f3912f4d73a781155e24add9208af5645a Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Thu, 19 Jun 2025 19:21:38 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20fix:=20Immutability=20Issue=20in?= =?UTF-8?q?=20`useChatFunctions`=20(#7983)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: Use mutable version of conversation in useChatFunctions * fix: Use cloneDeep for conversation in useChatFunctions to ensure immutability --------- Co-authored-by: lucioperca --- client/src/hooks/Chat/useChatFunctions.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/client/src/hooks/Chat/useChatFunctions.ts b/client/src/hooks/Chat/useChatFunctions.ts index eec8e03bd3..5a86eeb7c6 100644 --- a/client/src/hooks/Chat/useChatFunctions.ts +++ b/client/src/hooks/Chat/useChatFunctions.ts @@ -1,4 +1,5 @@ import { v4 } from 'uuid'; +import { cloneDeep } from 'lodash'; import { useQueryClient } from '@tanstack/react-query'; import { Constants, @@ -51,10 +52,10 @@ export default function useChatFunctions({ getMessages, setMessages, isSubmitting, - conversation, latestMessage, setSubmission, setLatestMessage, + conversation: immutableConversation, }: { index?: number; isSubmitting: boolean; @@ -77,8 +78,8 @@ export default function useChatFunctions({ const isTemporary = useRecoilValue(store.isTemporary); const codeArtifacts = useRecoilValue(store.codeArtifacts); const includeShadcnui = useRecoilValue(store.includeShadcnui); - const { getExpiry } = useUserKey(conversation?.endpoint ?? ''); const customPromptMode = useRecoilValue(store.customPromptMode); + const { getExpiry } = useUserKey(immutableConversation?.endpoint ?? ''); const setShowStopButton = useSetRecoilState(store.showStopButtonByIndex(index)); const resetLatestMultiMessage = useResetRecoilState(store.latestMessageFamily(index + 1)); @@ -108,6 +109,8 @@ export default function useChatFunctions({ return; } + const conversation = cloneDeep(immutableConversation); + const endpoint = conversation?.endpoint; if (endpoint === null) { console.error('No endpoint available');