|
|
@ -223,13 +223,13 @@ export const Settings = makeProxy(settings);
|
|
|
|
export function useSettings(paths?: UseSettings<Settings>[]) {
|
|
|
|
export function useSettings(paths?: UseSettings<Settings>[]) {
|
|
|
|
const [, forceUpdate] = React.useReducer(() => ({}), {});
|
|
|
|
const [, forceUpdate] = React.useReducer(() => ({}), {});
|
|
|
|
|
|
|
|
|
|
|
|
const onUpdate: SubscriptionCallback = paths
|
|
|
|
if (paths) {
|
|
|
|
? (value, path) => paths.includes(path as UseSettings<Settings>) && forceUpdate()
|
|
|
|
(forceUpdate as SubscriptionCallback)._paths = paths;
|
|
|
|
: forceUpdate;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
React.useEffect(() => {
|
|
|
|
React.useEffect(() => {
|
|
|
|
subscriptions.add(onUpdate);
|
|
|
|
subscriptions.add(forceUpdate);
|
|
|
|
return () => void subscriptions.delete(onUpdate);
|
|
|
|
return () => void subscriptions.delete(forceUpdate);
|
|
|
|
}, []);
|
|
|
|
}, []);
|
|
|
|
|
|
|
|
|
|
|
|
return Settings;
|
|
|
|
return Settings;
|
|
|
@ -253,8 +253,10 @@ type ResolvePropDeep<T, P> = P extends "" ? T :
|
|
|
|
export function addSettingsListener<Path extends keyof Settings>(path: Path, onUpdate: (newValue: Settings[Path], path: Path) => void): void;
|
|
|
|
export function addSettingsListener<Path extends keyof Settings>(path: Path, onUpdate: (newValue: Settings[Path], path: Path) => void): void;
|
|
|
|
export function addSettingsListener<Path extends string>(path: Path, onUpdate: (newValue: Path extends "" ? any : ResolvePropDeep<Settings, Path>, path: Path extends "" ? string : Path) => void): void;
|
|
|
|
export function addSettingsListener<Path extends string>(path: Path, onUpdate: (newValue: Path extends "" ? any : ResolvePropDeep<Settings, Path>, path: Path extends "" ? string : Path) => void): void;
|
|
|
|
export function addSettingsListener(path: string, onUpdate: (newValue: any, path: string) => void) {
|
|
|
|
export function addSettingsListener(path: string, onUpdate: (newValue: any, path: string) => void) {
|
|
|
|
if (path)
|
|
|
|
if (path) {
|
|
|
|
((onUpdate as SubscriptionCallback)._paths ??= []).push(path);
|
|
|
|
((onUpdate as SubscriptionCallback)._paths ??= []).push(path);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
subscriptions.add(onUpdate);
|
|
|
|
subscriptions.add(onUpdate);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|