From d3adc7afb8180df27438b7c3fe2bb04acdb0970d Mon Sep 17 00:00:00 2001 From: Haileyesus <118998054+blackmammoth@users.noreply.github.com> Date: Sat, 25 Apr 2026 21:49:09 +0300 Subject: [PATCH] refactor: optimize project auto-expand logic --- .../sidebar/hooks/useSidebarController.ts | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/components/sidebar/hooks/useSidebarController.ts b/src/components/sidebar/hooks/useSidebarController.ts index c3a5973a..586b61db 100644 --- a/src/components/sidebar/hooks/useSidebarController.ts +++ b/src/components/sidebar/hooks/useSidebarController.ts @@ -80,7 +80,7 @@ type UseSidebarControllerArgs = { export function useSidebarController({ projects, selectedProject, - selectedSession, + selectedSession: _selectedSession, isLoading, isMobile, t, @@ -133,19 +133,23 @@ export function useSidebarController({ }, [projects]); useEffect(() => { - // Expanded-project tracking is now keyed by the DB `projectId` so state - // survives display-name edits and other mutations. - if (selectedProject) { - setExpandedProjects((prev) => { - if (prev.has(selectedProject.projectId)) { - return prev; - } - const next = new Set(prev); - next.add(selectedProject.projectId); - return next; - }); + // Auto-expand only when the selected project identity changes. + // Depending on the full `selectedProject` object (or `selectedSession`) causes + // websocket-driven list refreshes to re-open projects users manually collapsed. + const selectedProjectId = selectedProject?.projectId; + if (!selectedProjectId) { + return; } - }, [selectedSession, selectedProject]); + + setExpandedProjects((prev) => { + if (prev.has(selectedProjectId)) { + return prev; + } + const next = new Set(prev); + next.add(selectedProjectId); + return next; + }); + }, [selectedProject?.projectId]); useEffect(() => { if (projects.length > 0 && !isLoading) {