From a40f6f2860b49b4c7f11e369f11bd46e9451eabf Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 16 Aug 2026 23:28:48 -0700 Subject: [PATCH] refac --- src/lib/components/chat/Placeholder.svelte | 8 ++++---- src/lib/components/layout/Sidebar.svelte | 3 ++- src/lib/stores/chatList.ts | 5 +---- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/lib/components/chat/Placeholder.svelte b/src/lib/components/chat/Placeholder.svelte index cbae82252e..6cf93fdd8f 100644 --- a/src/lib/components/chat/Placeholder.svelte +++ b/src/lib/components/chat/Placeholder.svelte @@ -17,7 +17,7 @@ temporaryChatEnabled, selectedFolder } from '$lib/stores'; - import { refreshChatList } from '$lib/stores/chatList'; + import { refreshChatList, refreshFolderChatLists } from '$lib/stores/chatList'; import { sanitizeResponseContent, extractCurlyBraceWords } from '$lib/utils'; import { WEBUI_API_BASE_URL, WEBUI_BASE_URL } from '$lib/constants'; @@ -112,11 +112,11 @@ { - await refreshChatList(localStorage.token); + onUpdate={async () => { + await Promise.all([refreshChatList(localStorage.token), refreshFolderChatLists()]); }} onDelete={async () => { - await refreshChatList(localStorage.token); + await Promise.all([refreshChatList(localStorage.token), refreshFolderChatLists()]); selectedFolder.set(null); }} diff --git a/src/lib/components/layout/Sidebar.svelte b/src/lib/components/layout/Sidebar.svelte index 9df03f8a41..3b6f129420 100644 --- a/src/lib/components/layout/Sidebar.svelte +++ b/src/lib/components/layout/Sidebar.svelte @@ -701,7 +701,7 @@ socketInstance?.on('events', chatActiveEventHandler); socketInstance?.on('connect', refreshChatRows); - const unregisterFolderRefreshHandler = registerFolderRefreshHandler((folderId, chat) => { + const unregisterFolderRefreshHandler = registerFolderRefreshHandler(async (folderId, chat) => { if (folderId) { if (chat) { return folderRegistry[folderId]?.upsertChat?.(chat); @@ -710,6 +710,7 @@ return folderRegistry[folderId]?.setFolderItems?.(); } + await initFolders(); return Promise.all(Object.values(folderRegistry).map((folder) => folder?.setFolderItems?.())); }); diff --git a/src/lib/stores/chatList.ts b/src/lib/stores/chatList.ts index 0fbfea960c..1be7826c1e 100644 --- a/src/lib/stores/chatList.ts +++ b/src/lib/stores/chatList.ts @@ -61,10 +61,7 @@ export const refreshChatList = async ( return { accepted: true, allLoaded }; }; -// The sidebar's folders keep their chat lists in local component state, refreshed -// through a registry of per-folder callbacks that only the sidebar can reach. -// Handlers registered here let other components (e.g. the open chat's menu) -// request that refresh without a reference to the sidebar. +// The sidebar owns folder state. This bridge lets other components refresh it. type FolderRefreshHandler = (folderId?: string | null, chat?: ChatListItem | null) => unknown; const folderRefreshHandlers = new Set();