mirror of
https://github.com/XFox111/TabsAsideExtension.git
synced 2026-04-22 07:58:01 +03:00
Major 3.0 (#118)
Co-authored-by: Maison da Silva <maisonmdsgreen@hotmail.com>
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
import { settings } from "@/utils/settings";
|
||||
|
||||
export default function useSettings<K extends keyof typeof settings>(key: K): SettingsHook<K>
|
||||
{
|
||||
const [value, setValue] = useState<SettingsValue<K> | null>(null);
|
||||
|
||||
useEffect(() =>
|
||||
{
|
||||
settings[key].getValue()
|
||||
.then(value => setValue(value as SettingsValue<K>));
|
||||
|
||||
const unwatch = settings[key].watch(value => setValue(value as SettingsValue<K>));
|
||||
|
||||
return () => unwatch();
|
||||
}, [key]);
|
||||
|
||||
return [value, settings[key].setValue] as SettingsHook<K>;
|
||||
}
|
||||
|
||||
export type SettingsValue<K extends keyof typeof settings> =
|
||||
typeof settings[K] extends { fallback: infer T; } ? T : never;
|
||||
|
||||
export type SettingsHook<K extends keyof typeof settings> =
|
||||
[SettingsValue<K> | null, (newValue: SettingsValue<K>) => Promise<void>];
|
||||
Reference in New Issue
Block a user