Skip to content

Commit 22bb353

Browse files
committed
Sidebar should not show if the user has not created any tasks yet
1 parent 1d65e17 commit 22bb353

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

apps/array/src/renderer/features/sidebar/components/MainSidebar.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,19 @@
1+
import { useTasks } from "@features/tasks/hooks/useTasks";
12
import { Box } from "@radix-ui/themes";
3+
import { useEffect } from "react";
4+
import { useSidebarStore } from "../stores/sidebarStore";
25
import { Sidebar, SidebarContent } from "./index";
36

47
export function MainSidebar() {
8+
const { data: tasks = [], isFetched } = useTasks();
9+
const setOpenAuto = useSidebarStore((state) => state.setOpenAuto);
10+
11+
useEffect(() => {
12+
if (isFetched) {
13+
setOpenAuto(tasks.length > 0);
14+
}
15+
}, [isFetched, tasks.length, setOpenAuto]);
16+
517
return (
618
<Box flexShrink="0" style={{ flexShrink: 0 }}>
719
<Sidebar>

apps/array/src/renderer/features/sidebar/stores/sidebarStore.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { persist } from "zustand/middleware";
33

44
interface SidebarStoreState {
55
open: boolean;
6+
hasUserSetOpen: boolean;
67
width: number;
78
isResizing: boolean;
89
collapsedSections: Set<string>;
@@ -11,6 +12,7 @@ interface SidebarStoreState {
1112

1213
interface 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;
2527
export 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

Comments
 (0)