summaryrefslogtreecommitdiffhomepage
path: root/gui/src
diff options
context:
space:
mode:
Diffstat (limited to 'gui/src')
-rw-r--r--gui/src/main/gui-settings.ts35
1 files changed, 19 insertions, 16 deletions
diff --git a/gui/src/main/gui-settings.ts b/gui/src/main/gui-settings.ts
index 753f767bde..7708facc84 100644
--- a/gui/src/main/gui-settings.ts
+++ b/gui/src/main/gui-settings.ts
@@ -125,25 +125,28 @@ export default class GuiSettings {
private validateSettings(settings: Record<string, unknown>) {
Object.entries(settingsSchema).forEach(([key, expectedType]) => {
- if (/^Array<.*>/.test(expectedType)) {
- const value = settings[key];
- if (!Array.isArray(value)) {
- throw new Error(`Expected ${key} to be array but wasn't`);
+ if (key in settings) {
+ if (/^Array<.*>/.test(expectedType)) {
+ const value = settings[key];
+ if (!Array.isArray(value)) {
+ throw new Error(`Expected ${key} to be array but wasn't`);
+ } else {
+ const expectedInnerType = expectedType.replace(/^Array</, '').replace(/>$/, '');
+ const innerTypes: string[] = value.map((value) => typeof value);
+ if (
+ innerTypes.length > 0 &&
+ (innerTypes.some((value) => value !== innerTypes[0]) ||
+ innerTypes[0] !== expectedInnerType)
+ ) {
+ throw new Error(`Expected ${key} to contain ${expectedInnerType}s`);
+ }
+ }
} else {
- const expectedInnerType = expectedType.replace(/^Array</, '').replace(/>$/, '');
- const innerTypes: string[] = value.map((value) => typeof value);
- if (
- innerTypes.some((value) => value !== innerTypes[0]) ||
- innerTypes[0] !== expectedInnerType
- ) {
- throw new Error(`Expected ${key} to to contain ${expectedInnerType}s`);
+ const actualType = typeof settings[key];
+ if (actualType !== expectedType) {
+ throw new Error(`Expected ${key} to be of type ${expectedType} but was ${actualType}`);
}
}
- } else {
- const actualType = typeof settings[key];
- if (key in settings && actualType !== expectedType) {
- throw new Error(`Expected ${key} to be of type ${expectedType} but was ${actualType}`);
- }
}
});