aboutsummaryrefslogtreecommitdiff
path: root/src/api
diff options
context:
space:
mode:
authorV <vendicated@riseup.net>2023-06-21 02:00:38 +0200
committerV <vendicated@riseup.net>2023-06-21 02:00:59 +0200
commit3020fcc9bb1af9ae40e84c08c3b44ea66344b27b (patch)
treedabe91597853856e5a3e0ed892bf1378271fdc7d /src/api
parentbc0de3926c5b337a8be1fd0407a68a83c28a0c58 (diff)
downloadVencord-3020fcc9bb1af9ae40e84c08c3b44ea66344b27b.tar.gz
Vencord-3020fcc9bb1af9ae40e84c08c3b44ea66344b27b.tar.bz2
Vencord-3020fcc9bb1af9ae40e84c08c3b44ea66344b27b.zip
[skip ci] Improve typings for settings.withPrivateSettings
Diffstat (limited to 'src/api')
-rw-r--r--src/api/Settings.ts14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/api/Settings.ts b/src/api/Settings.ts
index 2f78668..709050f 100644
--- a/src/api/Settings.ts
+++ b/src/api/Settings.ts
@@ -254,8 +254,12 @@ export function migratePluginSettings(name: string, ...oldNames: string[]) {
}
}
-export function definePluginSettings<D extends SettingsDefinition, C extends SettingsChecks<D>>(def: D, checks?: C) {
- const definedSettings: DefinedSettings<D> = {
+export function definePluginSettings<
+ Def extends SettingsDefinition,
+ Checks extends SettingsChecks<Def>,
+ PrivateSettings extends object = {}
+>(def: Def, checks?: Checks) {
+ const definedSettings: DefinedSettings<Def, Checks, PrivateSettings> = {
get store() {
if (!definedSettings.pluginName) throw new Error("Cannot access settings before plugin is initialized");
return Settings.plugins[definedSettings.pluginName] as any;
@@ -264,11 +268,11 @@ export function definePluginSettings<D extends SettingsDefinition, C extends Set
settings?.map(name => `plugins.${definedSettings.pluginName}.${name}`) as UseSettings<Settings>[]
).plugins[definedSettings.pluginName] as any,
def,
- checks: checks ?? {},
+ checks: checks ?? {} as any,
pluginName: "",
- withPrivateSettings<T>() {
- return this as DefinedSettings<D, C> & { store: T; };
+ withPrivateSettings<T extends object>() {
+ return this as DefinedSettings<Def, Checks, T>;
}
};