From 9dd16838925e4bae9ba0304aa32a3774b54b61ca Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 10 Mar 2021 09:53:42 -0500 Subject: [PATCH 1/4] Fix default values for invalid config.json files --- src/scripts/settings/webSettings.js | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/scripts/settings/webSettings.js b/src/scripts/settings/webSettings.js index b35b0dc626..54929727f1 100644 --- a/src/scripts/settings/webSettings.js +++ b/src/scripts/settings/webSettings.js @@ -78,7 +78,7 @@ async function getDefaultConfig() { export function getIncludeCorsCredentials() { return getConfig() - .then(config => config.includeCorsCredentials) + .then(config => !!config.includeCorsCredentials) .catch(error => { console.log('cannot get web config:', error); return false; @@ -87,7 +87,7 @@ export function getIncludeCorsCredentials() { export function getMultiServer() { return getConfig().then(config => { - return config.multiserver; + return !!config.multiserver; }).catch(error => { console.log('cannot get web config:', error); return false; @@ -126,23 +126,39 @@ const checkDefaultTheme = (themes) => { export function getThemes() { return getConfig().then(config => { - const themes = Array.isArray(config.themes) ? config.themes : []; + const themes = Array.isArray(config.themes) ? config.themes : [ baseDefaultTheme ]; checkDefaultTheme(themes); return themes; }).catch(error => { console.log('cannot get web config:', error); checkDefaultTheme(); - return []; + return [ baseDefaultTheme ]; }); } export const getDefaultTheme = () => internalDefaultTheme; +const defaultPlugins = [ + 'playAccessValidation/plugin', + 'experimentalWarnings/plugin', + 'htmlAudioPlayer/plugin', + 'htmlVideoPlayer/plugin', + 'photoPlayer/plugin', + 'comicsPlayer/plugin', + 'bookPlayer/plugin', + 'youtubePlayer/plugin', + 'backdropScreensaver/plugin', + 'pdfPlayer/plugin', + 'logoScreensaver/plugin', + 'sessionPlayer/plugin', + 'chromecastPlayer/plugin' +]; + export function getPlugins() { return getConfig().then(config => { - return config.plugins; + return config.plugins || defaultPlugins; }).catch(error => { console.log('cannot get web config:', error); - return []; + return defaultPlugins; }); } From 0736069fd7c54abbe6df70a9f6b15d5ba75b746d Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 10 Mar 2021 10:24:29 -0500 Subject: [PATCH 2/4] Fix default web settings values --- src/scripts/settings/webSettings.js | 46 +++++------------------------ 1 file changed, 7 insertions(+), 39 deletions(-) diff --git a/src/scripts/settings/webSettings.js b/src/scripts/settings/webSettings.js index 54929727f1..f0022ec590 100644 --- a/src/scripts/settings/webSettings.js +++ b/src/scripts/settings/webSettings.js @@ -1,5 +1,6 @@ -let data; +import DefaultConfig from '../../config.json'; +let data; const urlResolver = document.createElement('a'); // `fetch` with `file:` support @@ -55,24 +56,7 @@ async function getConfig() { return data; } catch (error) { console.warn('failed to fetch the web config file:', error); - return getDefaultConfig(); - } -} - -async function getDefaultConfig() { - try { - const response = await fetchLocal('config.template.json', { - cache: 'no-cache' - }); - - if (!response.ok) { - throw new Error('network response was not ok'); - } - - data = await response.json(); - return data; - } catch (error) { - console.error('failed to fetch the default web config file:', error); + return DefaultConfig; } } @@ -126,39 +110,23 @@ const checkDefaultTheme = (themes) => { export function getThemes() { return getConfig().then(config => { - const themes = Array.isArray(config.themes) ? config.themes : [ baseDefaultTheme ]; + const themes = Array.isArray(config.themes) ? config.themes : DefaultConfig.themes; checkDefaultTheme(themes); return themes; }).catch(error => { console.log('cannot get web config:', error); checkDefaultTheme(); - return [ baseDefaultTheme ]; + return DefaultConfig.themes; }); } export const getDefaultTheme = () => internalDefaultTheme; -const defaultPlugins = [ - 'playAccessValidation/plugin', - 'experimentalWarnings/plugin', - 'htmlAudioPlayer/plugin', - 'htmlVideoPlayer/plugin', - 'photoPlayer/plugin', - 'comicsPlayer/plugin', - 'bookPlayer/plugin', - 'youtubePlayer/plugin', - 'backdropScreensaver/plugin', - 'pdfPlayer/plugin', - 'logoScreensaver/plugin', - 'sessionPlayer/plugin', - 'chromecastPlayer/plugin' -]; - export function getPlugins() { return getConfig().then(config => { - return config.plugins || defaultPlugins; + return config.plugins || DefaultConfig.plugins; }).catch(error => { console.log('cannot get web config:', error); - return defaultPlugins; + return DefaultConfig.plugins; }); } From 8e8a5f61b9e27e8bf9c857099ea9ead01266df15 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 10 Mar 2021 10:30:34 -0500 Subject: [PATCH 3/4] Add error logging for invalid config --- src/scripts/settings/webSettings.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/scripts/settings/webSettings.js b/src/scripts/settings/webSettings.js index f0022ec590..ecac7ee6c3 100644 --- a/src/scripts/settings/webSettings.js +++ b/src/scripts/settings/webSettings.js @@ -110,6 +110,9 @@ const checkDefaultTheme = (themes) => { export function getThemes() { return getConfig().then(config => { + if (!Array.isArray(config.themes)) { + console.error('web config is invalid, missing themes:', config); + } const themes = Array.isArray(config.themes) ? config.themes : DefaultConfig.themes; checkDefaultTheme(themes); return themes; @@ -124,6 +127,9 @@ export const getDefaultTheme = () => internalDefaultTheme; export function getPlugins() { return getConfig().then(config => { + if (!config.plugins) { + console.error('web config is invalid, missing plugins:', config); + } return config.plugins || DefaultConfig.plugins; }).catch(error => { console.log('cannot get web config:', error); From 9a51e42118da65494dcf5dee8de89991e8770487 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 10 Mar 2021 10:46:39 -0500 Subject: [PATCH 4/4] Fix default config assignment Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- src/scripts/settings/webSettings.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/scripts/settings/webSettings.js b/src/scripts/settings/webSettings.js index ecac7ee6c3..e88e65ad8f 100644 --- a/src/scripts/settings/webSettings.js +++ b/src/scripts/settings/webSettings.js @@ -56,7 +56,8 @@ async function getConfig() { return data; } catch (error) { console.warn('failed to fetch the web config file:', error); - return DefaultConfig; + data = DefaultConfig; + return data; } }