From 7e0363744625bb4c597ac892529185351d5306ea Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 19 Nov 2025 01:20:07 -0500 Subject: [PATCH] enh/feat: persist folder state Co-Authored-By: G30 <50341825+silentoplayz@users.noreply.github.com> --- src/lib/components/common/Folder.svelte | 131 ++++++++++++----------- src/lib/components/layout/Sidebar.svelte | 13 +-- 2 files changed, 76 insertions(+), 68 deletions(-) diff --git a/src/lib/components/common/Folder.svelte b/src/lib/components/common/Folder.svelte index dd391a634..45c2386d8 100644 --- a/src/lib/components/common/Folder.svelte +++ b/src/lib/components/common/Folder.svelte @@ -26,6 +26,7 @@ export let dragAndDrop = true; let folderElement; + let loaded = false; let draggedOver = false; @@ -103,6 +104,13 @@ }; onMount(() => { + const state = localStorage.getItem(`${id}-folder-state`); + if (state !== null) { + open = state === 'true'; + } + + loaded = true; + if (!dragAndDrop) { return; } @@ -122,70 +130,73 @@
- {#if draggedOver} -
- {/if} - - {#if collapsible} - { - dispatch('change', state); - }} - > - + {#if loaded} + {#if draggedOver} + {/if} + + {#if collapsible} + { + dispatch('change', state); + localStorage.setItem(`${id}-folder-state`, `${state}`); + }} > - - - {#if onAdd} - - - {/if} -
-
- -
- - {:else} - + {#if onAdd} + + + + {/if} + + +
+ +
+ + {:else} + + {/if} {/if} diff --git a/src/lib/components/layout/Sidebar.svelte b/src/lib/components/layout/Sidebar.svelte index 2958bd4a5..0d9485645 100644 --- a/src/lib/components/layout/Sidebar.svelte +++ b/src/lib/components/layout/Sidebar.svelte @@ -72,8 +72,6 @@ let shiftKey = false; let selectedChatId = null; - let showPinnedChat = true; - let showCreateChannel = false; // Pagination variables @@ -354,7 +352,6 @@ let unsubscribers = []; onMount(async () => { - showPinnedChat = localStorage?.showPinnedChat ? localStorage.showPinnedChat === 'true' : true; await showSidebar.set(!$mobile ? localStorage.sidebar === 'true' : false); unsubscribers = [ @@ -892,6 +889,7 @@ {#if ($models ?? []).length > 0 && ($settings?.pinnedModels ?? []).length > 0} 0)}
{ - localStorage.setItem('showPinnedChat', e.detail); - console.log(e.detail); - }} on:import={(e) => { importChatHandler(e.detail, true); }}