From 84e2d2bb566e1c8cc3bb800c5fe8a57e80eb5e86 Mon Sep 17 00:00:00 2001 From: xintaofei Date: Wed, 11 Mar 2026 14:25:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E6=8C=81=E4=B9=85=E5=8C=96?= =?UTF-8?q?=E2=80=9C=E5=B9=B3=E9=93=BA=E6=98=BE=E7=A4=BA=E2=80=9D=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/contexts/tab-context.tsx | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/contexts/tab-context.tsx b/src/contexts/tab-context.tsx index 12e335e..d9e2265 100644 --- a/src/contexts/tab-context.tsx +++ b/src/contexts/tab-context.tsx @@ -396,7 +396,23 @@ export function TabProvider({ children }: TabProviderProps) { [folder?.path, t] ) - const [isTileMode, setIsTileMode] = useState(false) + const tileModeKey = `folder:${folderId}:tile-mode` + const [isTileMode, setIsTileMode] = useState(() => { + if (typeof window === "undefined") return false + try { + return localStorage.getItem(tileModeKey) === "true" + } catch { + return false + } + }) + + useEffect(() => { + try { + localStorage.setItem(tileModeKey, String(isTileMode)) + } catch { + /* ignore */ + } + }, [isTileMode, tileModeKey]) const closeTab = useCallback( (tabId: string) => { @@ -454,8 +470,6 @@ export function TabProvider({ children }: TabProviderProps) { const kept = prev.filter((t) => t.id === tabId) return kept.length === prev.length ? prev : kept }) - setIsTileMode(false) - const tab = rawTabsRef.current.find((t) => t.id === tabId) if (tab) { setActiveTabId(tabId) @@ -475,7 +489,6 @@ export function TabProvider({ children }: TabProviderProps) { const replacementTab = makeReplacementDraftTab(seedTab) setTabs([replacementTab]) - setIsTileMode(false) setActiveTabId(replacementTab.id) syncFolderContext(replacementTab) activateConversationPane()