From 1cda987723e9579583e2fd1a8b40cc4409b09524 Mon Sep 17 00:00:00 2001 From: shiyu Date: Fri, 12 Dec 2025 17:10:36 +0800 Subject: [PATCH] fix: persist collapsed state in localStorage for layout --- web/src/router/LayoutShell.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/web/src/router/LayoutShell.tsx b/web/src/router/LayoutShell.tsx index 7e5eb22..16bcd16 100644 --- a/web/src/router/LayoutShell.tsx +++ b/web/src/router/LayoutShell.tsx @@ -1,5 +1,5 @@ import { Layout, Flex } from 'antd'; -import { memo, useState } from 'react'; +import { memo, useEffect, useState } from 'react'; import { useParams, useNavigate } from 'react-router'; import SideNav from '../layout/SideNav.tsx'; import TopHeader from '../layout/TopHeader.tsx'; @@ -22,7 +22,11 @@ const ShellBody = memo(function ShellBody() { const navKey = params.navKey ?? 'files'; const subPath = params['*'] ?? ''; const navigate = useNavigate(); - const [collapsed, setCollapsed] = useState(false); + const COLLAPSED_KEY = 'layout.siderCollapsed'; + const [collapsed, setCollapsed] = useState(() => localStorage.getItem(COLLAPSED_KEY) === '1'); + useEffect(() => { + localStorage.setItem(COLLAPSED_KEY, collapsed ? '1' : '0'); + }, [collapsed]); const { windows, closeWindow, toggleMax, bringToFront, updateWindow } = useAppWindows(); const settingsTab = navKey === 'settings' ? (subPath.split('/')[0] || undefined) : undefined; return (