From bf49acd53578a141689f7faedbe5912ab10ab570 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Fri, 14 Oct 2022 00:36:44 +0200 Subject: Fix Settings errors when retrieving a null value; add PlainSettings --- src/api/settings.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/api/settings.ts') diff --git a/src/api/settings.ts b/src/api/settings.ts index 0f2356f..a5bda83 100644 --- a/src/api/settings.ts +++ b/src/api/settings.ts @@ -46,7 +46,7 @@ function makeProxy(settings: Settings, root = settings, path = ""): Settings { return new Proxy(settings, { get(target, p: string) { const v = target[p]; - if (typeof v === "object" && !Array.isArray(v)) + if (typeof v === "object" && !Array.isArray(v) && v !== null) return makeProxy(v, root, `${path}${path && "."}${p}`); return v; }, @@ -66,12 +66,18 @@ function makeProxy(settings: Settings, root = settings, path = ""): Settings { }); } +/** + * Same as {@link Settings} but unproxied. You should treat this as readonly, + * as modifying properties on this will not save to disk or call settings + * listeners. + */ +export const PlainSettings = settings; /** * A smart settings object. Altering props automagically saves * the updated settings to disk. + * This recursively proxies objects. If you need the object non proxied, use {@link PlainSettings} */ export const Settings = makeProxy(settings); - /** * Settings hook for React components. Returns a smart settings * object that automagically triggers a rerender if any properties -- cgit