import { settings } from "@/utils/settings"; export default function useSettings(key: K): SettingsHook { const [value, setValue] = useState | null>(null); useEffect(() => { settings[key].getValue() .then(value => setValue(value as SettingsValue)); const unwatch = settings[key].watch(value => setValue(value as SettingsValue)); return () => unwatch(); }, [key]); return [value, settings[key].setValue] as SettingsHook; } export type SettingsValue = typeof settings[K] extends { fallback: infer T; } ? T : never; export type SettingsHook = [SettingsValue | null, (newValue: SettingsValue) => Promise];