From 11f4f20120b2466757ca0c237cf08bb4691abfb7 Mon Sep 17 00:00:00 2001 From: Louis Date: Fri, 20 Dec 2024 16:34:54 +0700 Subject: [PATCH] fix: thread error handling --- web/containers/Providers/ModelHandler.tsx | 10 +++------- web/hooks/useDeleteThread.ts | 7 +++++++ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/web/containers/Providers/ModelHandler.tsx b/web/containers/Providers/ModelHandler.tsx index ad7f5c974f..3a6c19e0dd 100644 --- a/web/containers/Providers/ModelHandler.tsx +++ b/web/containers/Providers/ModelHandler.tsx @@ -302,15 +302,10 @@ export default function ModelHandler() { const generateThreadTitle = (message: ThreadMessage, thread: Thread) => { // If this is the first ever prompt in the thread - if ( - (thread.title ?? thread.metadata?.title)?.trim() !== defaultThreadTitle - ) { + if ((thread.title ?? thread.metadata?.title)?.trim() !== defaultThreadTitle) return - } - if (!activeModelRef.current) { - return - } + if (!activeModelRef.current) return // Check model engine; we don't want to generate a title when it's not a local engine. remote model using first promp if (!isLocalEngine(activeModelRef.current?.engine as InferenceEngine)) { @@ -332,6 +327,7 @@ export default function ModelHandler() { ...updatedThread, }) }) + .catch(console.error) } // This is the first time message comes in on a new thread diff --git a/web/hooks/useDeleteThread.ts b/web/hooks/useDeleteThread.ts index 7b98a4ea5c..f69ccd47ea 100644 --- a/web/hooks/useDeleteThread.ts +++ b/web/hooks/useDeleteThread.ts @@ -37,9 +37,16 @@ export default function useDeleteThread() { async (threadId: string) => { const thread = threads.find((c) => c.id === threadId) if (!thread) return + const availableThreads = threads.filter((c) => c.id !== threadId) + setThreads(availableThreads) + + // delete the thread state + deleteThreadState(threadId) + const assistantInfo = await extensionManager .get(ExtensionTypeEnum.Conversational) ?.getThreadAssistant(thread.id) + .catch(console.error) if (!assistantInfo) return const model = models.find((c) => c.id === assistantInfo?.model?.id)