VencordToolbox: don't subscribe to all settings

Also remove one indirection from useSettings
This commit is contained in:
Nuckyz 2024-03-07 13:06:08 -03:00
parent 102842d528
commit 1c1d82f9a8
No known key found for this signature in database
GPG key ID: 440BF8296E1C4AD9
2 changed files with 9 additions and 7 deletions

View file

@ -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);
} }

View file

@ -30,7 +30,7 @@ import type { ReactNode } from "react";
const HeaderBarIcon = findExportedComponentLazy("Icon", "Divider"); const HeaderBarIcon = findExportedComponentLazy("Icon", "Divider");
function VencordPopout(onClose: () => void) { function VencordPopout(onClose: () => void) {
const { useQuickCss } = useSettings(); const { useQuickCss } = useSettings(["useQuickCss"]);
const pluginEntries = [] as ReactNode[]; const pluginEntries = [] as ReactNode[];