From e7762cda978e8b06f00c7af2c48003d23ef1f9c8 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Fri, 12 Jun 2026 02:42:16 +0530 Subject: [PATCH] feat(chat): enhance thread component with active thread handling and improve message loading logic --- .../new-chat/[[...chat_id]]/page.tsx | 6 +++++- surfsense_web/components/assistant-ui/thread.tsx | 14 +++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/surfsense_web/app/dashboard/[search_space_id]/new-chat/[[...chat_id]]/page.tsx b/surfsense_web/app/dashboard/[search_space_id]/new-chat/[[...chat_id]]/page.tsx index 75cfa4184..5c8d0c3f5 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/new-chat/[[...chat_id]]/page.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/new-chat/[[...chat_id]]/page.tsx @@ -758,6 +758,9 @@ export default function NewChatPage() { const loadedMessages = reconcileInterruptedAssistantMessages(messagesResponse.messages).map( convertToThreadMessage ); + if (messages.length > 0 && loadedMessages.length < messages.length) { + return; + } setMessages(loadedMessages); tokenUsageStore.clear(); @@ -778,6 +781,7 @@ export default function NewChatPage() { }, [ activeThreadId, isRunning, + messages.length, setMessageDocumentsMap, threadMessagesQuery.data, tokenUsageStore, @@ -2569,7 +2573,7 @@ export default function NewChatPage() { >
- + {isThreadMessagesLoading ? (
diff --git a/surfsense_web/components/assistant-ui/thread.tsx b/surfsense_web/components/assistant-ui/thread.tsx index 5796109f0..95f118835 100644 --- a/surfsense_web/components/assistant-ui/thread.tsx +++ b/surfsense_web/components/assistant-ui/thread.tsx @@ -144,11 +144,15 @@ function getComposerSuggestionAnchorPoint( }; } -export const Thread: FC = () => { - return ; +interface ThreadProps { + hasActiveThread?: boolean; +} + +export const Thread: FC = ({ hasActiveThread = false }) => { + return ; }; -const ThreadContent: FC = () => { +const ThreadContent: FC = ({ hasActiveThread = false }) => { return ( { > !thread.isEmpty}> + hasActiveThread || !thread.isEmpty}> } > - thread.isEmpty}> + !hasActiveThread && thread.isEmpty}>