@@ -3,6 +3,7 @@ import { persist } from "zustand/middleware";
33
44interface SidebarStoreState {
55 open : boolean ;
6+ hasUserSetOpen : boolean ;
67 width : number ;
78 isResizing : boolean ;
89 collapsedSections : Set < string > ;
@@ -11,6 +12,7 @@ interface SidebarStoreState {
1112
1213interface SidebarStoreActions {
1314 setOpen : ( open : boolean ) => void ;
15+ setOpenAuto : ( open : boolean ) => void ;
1416 toggle : ( ) => void ;
1517 setWidth : ( width : number ) => void ;
1618 setIsResizing : ( isResizing : boolean ) => void ;
@@ -25,13 +27,17 @@ type SidebarStore = SidebarStoreState & SidebarStoreActions;
2527export const useSidebarStore = create < SidebarStore > ( ) (
2628 persist (
2729 ( set ) => ( {
28- open : true ,
30+ open : false ,
31+ hasUserSetOpen : false ,
2932 width : 256 ,
3033 isResizing : false ,
3134 collapsedSections : new Set < string > ( ) ,
3235 folderOrder : [ ] ,
33- setOpen : ( open ) => set ( { open } ) ,
34- toggle : ( ) => set ( ( state ) => ( { open : ! state . open } ) ) ,
36+ setOpen : ( open ) => set ( { open, hasUserSetOpen : true } ) ,
37+ setOpenAuto : ( open ) =>
38+ set ( ( state ) => ( state . hasUserSetOpen ? state : { open } ) ) ,
39+ toggle : ( ) =>
40+ set ( ( state ) => ( { open : ! state . open , hasUserSetOpen : true } ) ) ,
3541 setWidth : ( width ) => set ( { width } ) ,
3642 setIsResizing : ( isResizing ) => set ( { isResizing } ) ,
3743 toggleSection : ( sectionId ) =>
@@ -73,20 +79,24 @@ export const useSidebarStore = create<SidebarStore>()(
7379 name : "sidebar-storage" ,
7480 partialize : ( state ) => ( {
7581 open : state . open ,
82+ hasUserSetOpen : state . hasUserSetOpen ,
7683 width : state . width ,
7784 collapsedSections : Array . from ( state . collapsedSections ) ,
7885 folderOrder : state . folderOrder ,
7986 } ) ,
8087 merge : ( persisted , current ) => {
8188 const persistedState = persisted as {
8289 open ?: boolean ;
90+ hasUserSetOpen ?: boolean ;
8391 width ?: number ;
8492 collapsedSections ?: string [ ] ;
8593 folderOrder ?: string [ ] ;
8694 } ;
8795 return {
8896 ...current ,
8997 open : persistedState . open ?? current . open ,
98+ hasUserSetOpen :
99+ persistedState . hasUserSetOpen ?? current . hasUserSetOpen ,
90100 width : persistedState . width ?? current . width ,
91101 collapsedSections : new Set ( persistedState . collapsedSections ?? [ ] ) ,
92102 folderOrder : persistedState . folderOrder ?? [ ] ,
0 commit comments