import { useEffect, useState } from 'react'; interface GetSettingArgs { key: string; default: T; } interface SetSettingArgs { key: string; value: T; } export function useSetting(key: string, def: T): [value: T | null, setValue: (value: T) => void] { const [value, setValue] = useState(def); const [ready, setReady] = useState(false); useEffect(() => { (async () => { const res = (await window.DeckyPluginLoader.callServerMethod('get_setting', { key, default: def, } as GetSettingArgs)) as { result: T }; setReady(true); setValue(res.result); })(); }, []); useEffect(() => { if (ready) (async () => { await window.DeckyPluginLoader.callServerMethod('set_setting', { key, value, } as SetSettingArgs); })(); }, [value]); return [value, setValue]; }