Added settings not resetting on new optiones

This commit is contained in:
2022-07-06 18:08:42 +02:00
parent 7607d41652
commit a213f06961

View File

@@ -25,28 +25,40 @@ const defaultSettings = {
output: defaultOutputPath output: defaultOutputPath
} }
let loadedSuccessfully = false; function catchStr(tryFunc:()=>string, catchFunc:()=>string) {
let val;
try {
val = tryFunc();
} catch(err) {
logger.info("Failed to get setting value. Using default value:" + String(err));
val = catchFunc();
}
return val;
}
const settingList = await fetch(SettingPath).then(function(response) { const settingList = await fetch(SettingPath).then(function(response) {
return response.text(); return response.text();
}).catch(function(err) {
logger.info(err);
return "fileLoadFailed";
}).then(function(data) { }).then(function(data) {
if(data === "fileLoadFailed") {
return defaultSettings;
}
const parser = new DOMParser(); const parser = new DOMParser();
const xmlDoc = parser.parseFromString(data, 'text/xml'); const xmlDoc = parser.parseFromString(data, 'text/xml');
loadedSuccessfully = true;
return { return {
fps: parseInt(getXMLChild(xmlDoc, "fps")), fps: parseInt(catchStr(function() {return getXMLChild(xmlDoc, "fps");},function() {return defaultSettings.fps.toString();})),
width: parseInt(getXMLChild(xmlDoc, "width")), width: parseInt(catchStr(function() {return getXMLChild(xmlDoc, "width");},function() {return defaultSettings.width.toString();})),
stickDistance: parseInt(getXMLChild(xmlDoc, "stickDistance")), stickDistance: parseInt(catchStr(function() {return getXMLChild(xmlDoc, "stickDistance");},function() {return defaultSettings.stickDistance.toString();})),
stickMode2: (getXMLChild(xmlDoc, "stickMode2") === "true"), stickMode2: catchStr(function() {return getXMLChild(xmlDoc, "stickMode2");},function() {return defaultSettings.stickMode2.toString();}) === "true",
videoFormat: getXMLChild(xmlDoc, "videoFormat") as unknown as VideoFormat, videoFormat: catchStr(function() {return getXMLChild(xmlDoc, "videoFormat");},function() {return defaultSettings.videoFormat.toString();}) as VideoFormat as VideoFormat,
log: (getXMLChild(xmlDoc, "log") === "None")? "":getXMLChild(xmlDoc, "log"), log: catchStr(function() {return (getXMLChild(xmlDoc, "log") === "None")? "":getXMLChild(xmlDoc, "log");},function() {return defaultSettings.log;}),
output: getXMLChild(xmlDoc, "output") output: catchStr(function() {return getXMLChild(xmlDoc, "output");},function() {return defaultSettings.output;})
} }
}).catch(function(error) {
logger.warning("Could not load settings: " + error.toString() + "\n Creating new settings file...");
return defaultSettings;
}); });
if(!loadedSuccessfully) updateSettings({});
function updateSettings(optiones:{fps?:number, width?:number, stickDistance?:number, stickMode2?:boolean, videoFormat?:VideoFormat, log?:string, output?:string}) { function updateSettings(optiones:{fps?:number, width?:number, stickDistance?:number, stickMode2?:boolean, videoFormat?:VideoFormat, log?:string, output?:string}) {
if(optiones.fps === undefined) { if(optiones.fps === undefined) {