project-client/src/renderer/settings.ts
2023-07-13 19:03:13 +02:00

30 lines
927 B
TypeScript

/*
* SPDX-License-Identifier: GPL-3.0
* Vesktop, a desktop app aiming to give you a snappier Discord Experience
* Copyright (c) 2023 Vendicated and Vencord contributors
*/
import { useEffect, useReducer } from "@vencord/types/webpack/common";
import { SettingsStore } from "shared/utils/SettingsStore";
export const Settings = new SettingsStore(VesktopNative.settings.get());
Settings.addGlobalChangeListener((o, p) => VesktopNative.settings.set(o, p));
export function useSettings() {
const [, update] = useReducer(x => x + 1, 0);
useEffect(() => {
Settings.addGlobalChangeListener(update);
return () => Settings.removeGlobalChangeListener(update);
}, []);
return Settings.store;
}
export function getValueAndOnChange(key: keyof typeof Settings.store) {
return {
value: Settings.store[key] as any,
onChange: (value: any) => (Settings.store[key] = value)
};
}