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) => Promise] { const [value, setValue] = useState(def); useEffect(() => { (async () => { const res = (await window.DeckyPluginLoader.callServerMethod('get_setting', { key, default: def, } as GetSettingArgs)) as { result: T }; setValue(res.result); })(); }, []); return [ value, async (val: T) => { setValue(val); await window.DeckyPluginLoader.callServerMethod('set_setting', { key, value: val, } as SetSettingArgs); }, ]; }