diff --git a/src/lib/components/chat/Settings/ArchivedChats.svelte b/src/lib/components/chat/Settings/ArchivedChats.svelte index cff73c328e..350085dbd3 100644 --- a/src/lib/components/chat/Settings/ArchivedChats.svelte +++ b/src/lib/components/chat/Settings/ArchivedChats.svelte @@ -20,7 +20,7 @@ unarchiveAllChats } from '$lib/apis/chats'; import { chatId, showSettings, user } from '$lib/stores'; - import { refreshChatList } from '$lib/stores/chatList'; + import { refreshChatList, refreshSidebar } from '$lib/stores/chatList'; import { formatNumber } from '$lib/utils'; import ConfirmDialog from '$lib/components/common/ConfirmDialog.svelte'; import Dropdown from '$lib/components/common/Dropdown.svelte'; @@ -124,7 +124,7 @@ chatList = chatList?.filter((chat) => chat.id !== id) ?? null; if (chatCount !== null) chatCount -= 1; - await refreshChatList(localStorage.token); + await refreshChatList(localStorage.token, { refreshPinned: true }); }; const deleteHandler = async () => { @@ -150,10 +150,11 @@ const unarchiveAllHandler = async () => { loading = true; try { - await unarchiveAllChats(localStorage.token); + const success = await unarchiveAllChats(localStorage.token); + if (!success) return; toast.success($i18n.t('All chats have been unarchived.')); await loadChats(); - await refreshChatList(localStorage.token); + await refreshSidebar(localStorage.token); } catch (error) { toast.error(`${error}`); } finally { diff --git a/src/lib/components/chat/Settings/DataControls.svelte b/src/lib/components/chat/Settings/DataControls.svelte index c088d6f58f..45bc8a3035 100644 --- a/src/lib/components/chat/Settings/DataControls.svelte +++ b/src/lib/components/chat/Settings/DataControls.svelte @@ -4,7 +4,7 @@ const { saveAs } = fileSaver; import { user } from '$lib/stores'; - import { refreshChatList } from '$lib/stores/chatList'; + import { refreshSidebar } from '$lib/stores/chatList'; import { archiveAllChats, deleteAllChats, getAllChats, importChats } from '$lib/apis/chats'; import { getImportOrigin, convertOpenAIChats } from '$lib/utils'; @@ -87,7 +87,7 @@ toast.success(`Successfully imported ${res.length} chats.`); } - await refreshChatList(localStorage.token, { refreshPinned: true }); + await refreshSidebar(localStorage.token); }; const exportChats = async () => { @@ -99,20 +99,22 @@ const archiveAllChatsHandler = async () => { await goto('/'); - await archiveAllChats(localStorage.token).catch((error) => { + const success = await archiveAllChats(localStorage.token).catch((error) => { toast.error(`${error}`); }); + if (!success) return; - await refreshChatList(localStorage.token, { clearPinned: true }); + await refreshSidebar(localStorage.token); }; const deleteAllChatsHandler = async () => { await goto('/'); - await deleteAllChats(localStorage.token).catch((error) => { + const success = await deleteAllChats(localStorage.token).catch((error) => { toast.error(`${error}`); }); + if (!success) return; - await refreshChatList(localStorage.token); + await refreshSidebar(localStorage.token); }; diff --git a/src/lib/stores/chatList.ts b/src/lib/stores/chatList.ts index 1be7826c1e..070909076a 100644 --- a/src/lib/stores/chatList.ts +++ b/src/lib/stores/chatList.ts @@ -79,6 +79,14 @@ export const refreshFolderChatLists = async ( await Promise.all([...folderRefreshHandlers].map((handler) => handler(folderId, chat))); }; +export const refreshSidebar = async (token: string = '') => { + await Promise.all([ + refreshChatList(token, { refreshPinned: true }), + refreshFolderChatLists(null), + refreshFolderChatLists() + ]); +}; + export const loadNextChatListPage = async (token: string = ''): Promise => { if (!paginationReady || allLoaded || loadingNextPage) { return { accepted: false, allLoaded };