Prevent invalid YAML config from bricking the UI
This commit is contained in:
1 parent
98698b775c
commit
529386a9b6
3 files changed
+12
-5
No files matched your search
+1
-1
@@ -365,7 +365,7 @@ async function fetchConfig(): Promise<[Config, UiConfig]> {
|
|||||||
let ref = ui;
|
let ref = ui;
|
||||||
while (keys.length > 1) {
|
while (keys.length > 1) {
|
||||||
const k = keys.shift();
|
const k = keys.shift();
|
||||||
if (typeof ref[k] !== "object") ref[k] = {};
|
if (ref[k] == null || typeof ref[k] !== "object") ref[k] = {};
|
||||||
ref = ref[k];
|
ref = ref[k];
|
||||||
}
|
}
|
||||||
ref[keys[0]] = val;
|
ref[keys[0]] = val;
|
||||||
|
|||||||
+8
-1
@@ -144,7 +144,14 @@ export function contextifyComponent(component: ComponentTypes): ComponentTypes {
|
|||||||
applyContext(res, context);
|
applyContext(res, context);
|
||||||
return res;
|
return res;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
return m("p.error", { title: err.message }, "Error!");
|
return m(
|
||||||
|
"p.error",
|
||||||
|
{
|
||||||
|
title: "Click to print stack trace to console",
|
||||||
|
onclick: () => console.error(err),
|
||||||
|
},
|
||||||
|
"Error!"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return state;
|
return state;
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ export function flattenConfig(config: Record<string, unknown>): any {
|
|||||||
// Order keys such that nested objects come last
|
// Order keys such that nested objects come last
|
||||||
function orderKeys(config: any): number {
|
function orderKeys(config: any): number {
|
||||||
let res = 1;
|
let res = 1;
|
||||||
if (typeof config !== "object") return res;
|
if (config == null || typeof config !== "object") return res;
|
||||||
if (Array.isArray(config)) {
|
if (Array.isArray(config)) {
|
||||||
for (const c of config) res += orderKeys(c);
|
for (const c of config) res += orderKeys(c);
|
||||||
return res;
|
return res;
|
||||||
@@ -79,7 +79,7 @@ export function structureConfig(config: Config[]): any {
|
|||||||
let ref = _config;
|
let ref = _config;
|
||||||
while (keys.length > 1) {
|
while (keys.length > 1) {
|
||||||
const k = keys.shift();
|
const k = keys.shift();
|
||||||
if (typeof ref[k] !== "object") ref[k] = {};
|
if (ref[k] == null || typeof ref[k] !== "object") ref[k] = {};
|
||||||
ref = ref[k];
|
ref = ref[k];
|
||||||
}
|
}
|
||||||
ref[keys[0]] = c.value;
|
ref[keys[0]] = c.value;
|
||||||
@@ -137,7 +137,7 @@ export function diffConfig(
|
|||||||
};
|
};
|
||||||
|
|
||||||
for (const [k, v] of Object.entries(target))
|
for (const [k, v] of Object.entries(target))
|
||||||
if (!current[k] || current[k] !== v) diff.add.push({ _id: k, value: v });
|
if (v && current[k] !== v) diff.add.push({ _id: k, value: v });
|
||||||
|
|
||||||
for (const k of Object.keys(current)) if (!target[k]) diff.remove.push(k);
|
for (const k of Object.keys(current)) if (!target[k]) diff.remove.push(k);
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user