diff options
author | Ven <vendicated@riseup.net> | 2022-10-29 20:45:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-29 20:45:31 +0200 |
commit | d72542405af8873a542b55128d8b0c6311183235 (patch) | |
tree | caa295bcec18eb56ca2360558130fc0c9c7aa047 /src/api/settings.ts | |
parent | 95aa2d9d8d850c27e88fce76f065d5e71c8022c2 (diff) | |
download | Vencord-d72542405af8873a542b55128d8b0c6311183235.tar.gz Vencord-d72542405af8873a542b55128d8b0c6311183235.tar.bz2 Vencord-d72542405af8873a542b55128d8b0c6311183235.zip |
Implement Subcommands; fix errors due to Settings <-> Plugins circular imports (#174)
Diffstat (limited to 'src/api/settings.ts')
-rw-r--r-- | src/api/settings.ts | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/api/settings.ts b/src/api/settings.ts index e25572f..9e518c6 100644 --- a/src/api/settings.ts +++ b/src/api/settings.ts @@ -42,12 +42,6 @@ const DefaultSettings: Settings = { plugins: {} }; -for (const plugin in plugins) { - DefaultSettings.plugins[plugin] = { - enabled: plugins[plugin].required ?? false - }; -} - try { var settings = JSON.parse(VencordNative.ipc.sendSync(IpcEvents.GET_SETTINGS)) as Settings; mergeDefaults(settings, DefaultSettings); @@ -60,13 +54,19 @@ type SubscriptionCallback = ((newValue: any, path: string) => void) & { _path?: const subscriptions = new Set<SubscriptionCallback>(); // Wraps the passed settings object in a Proxy to nicely handle change listeners and default values -function makeProxy(settings: Settings, root = settings, path = ""): Settings { +function makeProxy(settings: any, root = settings, path = ""): Settings { return new Proxy(settings, { get(target, p: string) { const v = target[p]; // using "in" is important in the following cases to properly handle falsy or nullish values if (!(p in target)) { + // Return empty for plugins with no settings + if (path === "plugins" && p in plugins) + return target[p] = makeProxy({ + enabled: plugins[p].required ?? false + }, root, `plugins/${p}`); + // Since the property is not set, check if this is a plugin's setting and if so, try to resolve // the default value. if (path.startsWith("plugins.")) { |