From 84d4e9522a417de4879cbde41a543ee5c052096b Mon Sep 17 00:00:00 2001 From: ZacharyZcR Date: Thu, 16 Jul 2026 11:52:26 +0800 Subject: [PATCH] fix: sync cloud preference storage mode (#1058) --- src/ui/AppShell.tsx | 4 +++- src/ui/sidebar/UserProfilePanel.tsx | 12 +++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/ui/AppShell.tsx b/src/ui/AppShell.tsx index acde8077..ef127fe0 100644 --- a/src/ui/AppShell.tsx +++ b/src/ui/AppShell.tsx @@ -1683,7 +1683,9 @@ export function AppShell({ onLogout={onLogout} onChangeServer={onChangeServer} userPrefs={userPrefs} - onPrefsChange={setUserPrefs} + onPrefsChange={(updates) => + setUserPrefs((current) => ({ ...current, ...updates })) + } /> )} diff --git a/src/ui/sidebar/UserProfilePanel.tsx b/src/ui/sidebar/UserProfilePanel.tsx index be357f55..36de8eda 100644 --- a/src/ui/sidebar/UserProfilePanel.tsx +++ b/src/ui/sidebar/UserProfilePanel.tsx @@ -445,7 +445,10 @@ export function UserProfilePanel({ hiddenRailTabs?: string | null; statusColorScheme?: string | null; }; - onPrefsChange?: (prefs: { reopenTabsOnLogin: boolean }) => void; + onPrefsChange?: (prefs: { + reopenTabsOnLogin?: boolean; + storageMode?: "local" | "cloud"; + }) => void; }) { const { t } = useTranslation(); const themeLabel: Record = { @@ -522,6 +525,12 @@ export function UserProfilePanel({ userPrefs?.storageMode === "cloud" ? "cloud" : "local", ); + useEffect(() => { + if (userPrefs?.storageMode) { + setStorageMode(userPrefs.storageMode === "cloud" ? "cloud" : "local"); + } + }, [userPrefs?.storageMode]); + // Settings toggles — all backed by localStorage const [commandAutocomplete, setCommandAutocomplete] = useState( () => localStorage.getItem("commandAutocomplete") === "true", @@ -623,6 +632,7 @@ export function UserProfilePanel({ async function handleStorageModeChange(mode: "local" | "cloud") { setStorageMode(mode); + onPrefsChange?.({ storageMode: mode }); if (mode === "cloud") { // Snapshot current browser localStorage values so any tab can restore them later const SNAPSHOT_KEYS = [