aboutsummaryrefslogtreecommitdiff
path: root/src/api/settings.ts
diff options
context:
space:
mode:
authorVen <vendicated@riseup.net>2022-10-29 20:45:31 +0200
committerGitHub <noreply@github.com>2022-10-29 20:45:31 +0200
commitd72542405af8873a542b55128d8b0c6311183235 (patch)
treecaa295bcec18eb56ca2360558130fc0c9c7aa047 /src/api/settings.ts
parent95aa2d9d8d850c27e88fce76f065d5e71c8022c2 (diff)
downloadVencord-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.ts14
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.")) {