import { useCallback, useState } from "react"; import { useEffect } from "react"; import { DEFAULT_LOCAL_SETTINGS, getLocalSettings, saveLocalSettings, type LocalSettings, } from "./local"; export function useLocalSettings(): [ LocalSettings, ( key: keyof LocalSettings, value: Partial, ) => void, ] { const [mounted, setMounted] = useState(false); const [state, setState] = useState(DEFAULT_LOCAL_SETTINGS); useEffect(() => { if (!mounted) { setState(getLocalSettings()); } setMounted(true); }, [mounted]); const setter = useCallback( ( key: keyof LocalSettings, value: Partial, ) => { setState((prev) => { const newState = { ...prev, [key]: { ...prev[key], ...value, }, }; saveLocalSettings(newState); return newState; }); }, [], ); return [state, setter]; }