From 126d9c0b49268bfdfb251fd90c9c94073d1048dd Mon Sep 17 00:00:00 2001 From: Pas <74743263+Pasithea0@users.noreply.github.com> Date: Fri, 20 Feb 2026 23:13:48 -0700 Subject: [PATCH] Dont reset inprogress settings when backend loads useDerived resets its local edit whenever initial changes. When the async loadSettings() completes it updates the store, so initial changes and the effect clears the user's toggle before they click Save. Fixing by: 1) removing the effect in useDerived that clears overwrite when initial changes; 2) calling state.reset() in Settings after applying loaded settings so the form reflects backend values without wiping in-progress edits. --- src/hooks/useSettingsState.ts | 4 ---- src/pages/Settings.tsx | 1 + 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/hooks/useSettingsState.ts b/src/hooks/useSettingsState.ts index 422d9bcf..105e340b 100644 --- a/src/hooks/useSettingsState.ts +++ b/src/hooks/useSettingsState.ts @@ -2,7 +2,6 @@ import { Dispatch, SetStateAction, useCallback, - useEffect, useMemo, useState, } from "react"; @@ -14,9 +13,6 @@ export function useDerived( initial: T, ): [T, Dispatch>, () => void, boolean] { const [overwrite, setOverwrite] = useState(undefined); - useEffect(() => { - setOverwrite(undefined); - }, [initial]); const changed = useMemo( () => JSON.stringify(overwrite) !== JSON.stringify(initial) && diff --git a/src/pages/Settings.tsx b/src/pages/Settings.tsx index 4da6d20d..1c5409d5 100644 --- a/src/pages/Settings.tsx +++ b/src/pages/Settings.tsx @@ -667,6 +667,7 @@ export function SettingsPage() { } else { setCustomThemeBaseline(useThemeStore.getState().customTheme); } + state.reset(); } }; loadSettings();