Skip to content

Commit 4def490

Browse files
authored
fix: Sidebar should not show if the user has not created any tasks yet (#335)
1 parent 2a73de6 commit 4def490

File tree

4 files changed

+33
-4
lines changed

4 files changed

+33
-4
lines changed

apps/array/src/main/services/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@
22
* Auto-import all IPC service types for declaration merging
33
* This file is auto-generated by vite-plugin-auto-services.ts
44
*/
5+
6+
export {};

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,21 @@
1+
import { useWorkspaceStore } from "@features/workspace/stores/workspaceStore";
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 workspaces = useWorkspaceStore((state) => state.workspaces);
9+
const isLoaded = useWorkspaceStore((state) => state.isLoaded);
10+
const setOpenAuto = useSidebarStore((state) => state.setOpenAuto);
11+
12+
useEffect(() => {
13+
if (isLoaded) {
14+
const workspaceCount = Object.keys(workspaces).length;
15+
setOpenAuto(workspaceCount > 0);
16+
}
17+
}, [isLoaded, workspaces, setOpenAuto]);
18+
519
return (
620
<Box flexShrink="0" style={{ flexShrink: 0 }}>
721
<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 ?? [],

apps/array/vite-plugin-auto-services.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,15 @@ ${serviceFiles.map((f) => `import "./${f.replace(".ts", ".js")}";`).join("\n")}
3131
`;
3232

3333
// Generate types.ts (imports type files for declaration merging)
34+
const typesImports = typeFiles
35+
.map((f) => `import "./${f.replace(".ts", ".js")}";`)
36+
.join("\n");
3437
const typesContent = `/**
3538
* Auto-import all IPC service types for declaration merging
3639
* This file is auto-generated by vite-plugin-auto-services.ts
3740
*/
3841
39-
${typeFiles.map((f) => `import "./${f.replace(".ts", ".js")}";`).join("\n")}
42+
${typesImports || "export {};"}
4043
`;
4144

4245
// Check if content actually changed before writing

0 commit comments

Comments
 (0)