From 81e5ba5bda91c2c357a2c44c2f5558b6be37355c Mon Sep 17 00:00:00 2001 From: David <33458145+davidmcpowell@users.noreply.github.com> Date: Thu, 17 Jul 2025 10:33:51 +0100 Subject: [PATCH] Merge pull request #27183 from overleaf/dp-file-tree-open-state Persist rail tab isOpen state GitOrigin-RevId: f1cbaa80fecd10953e9be61a993d69bd2c3c7915 --- .../js/features/ide-redesign/contexts/rail-context.tsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/services/web/frontend/js/features/ide-redesign/contexts/rail-context.tsx b/services/web/frontend/js/features/ide-redesign/contexts/rail-context.tsx index 16d06edad4..47d30f8cee 100644 --- a/services/web/frontend/js/features/ide-redesign/contexts/rail-context.tsx +++ b/services/web/frontend/js/features/ide-redesign/contexts/rail-context.tsx @@ -1,5 +1,6 @@ import { sendSearchEvent } from '@/features/event-tracking/search-events' import useEventListener from '@/shared/hooks/use-event-listener' +import usePersistedState from '@/shared/hooks/use-persisted-state' import { isMac } from '@/shared/utils/os' import { createContext, @@ -44,7 +45,7 @@ const RailContext = createContext< >(undefined) export const RailProvider: FC = ({ children }) => { - const [isOpen, setIsOpen] = useState(true) + const [isOpen, setIsOpen] = usePersistedState('rail-is-open', true) const [resizing, setResizing] = useState(false) const [activeModal, setActiveModalInternal] = useState( null @@ -58,15 +59,15 @@ export const RailProvider: FC = ({ children }) => { const togglePane = useCallback(() => { setIsOpen(value => !value) - }, []) + }, [setIsOpen]) const handlePaneExpand = useCallback(() => { setIsOpen(true) - }, []) + }, [setIsOpen]) const handlePaneCollapse = useCallback(() => { setIsOpen(false) - }, []) + }, [setIsOpen]) // NOTE: The file tree **MUST** be the first tab to be opened // since it is responsible for opening the initial document.