From e6159a22d81ff9a4359c613b1fbb32192091a047 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 9 Aug 2020 13:24:16 +0200 Subject: [PATCH] Fix themes not loading unless signed in --- src/scripts/autoThemes.js | 4 +++ src/scripts/settings/webSettings.js | 39 ++++++++++++++++++++++------- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/src/scripts/autoThemes.js b/src/scripts/autoThemes.js index dad8c10322..75309f377b 100644 --- a/src/scripts/autoThemes.js +++ b/src/scripts/autoThemes.js @@ -3,6 +3,10 @@ import skinManager from 'skinManager'; import connectionManager from 'connectionManager'; import events from 'events'; +// Set the default theme when loading +skinManager.setTheme(userSettings.theme()); + +// Set the user's prefered theme when signing in events.on(connectionManager, 'localusersignedin', function (e, user) { skinManager.setTheme(userSettings.theme()); }); diff --git a/src/scripts/settings/webSettings.js b/src/scripts/settings/webSettings.js index 800b56ec7c..7915e7af76 100644 --- a/src/scripts/settings/webSettings.js +++ b/src/scripts/settings/webSettings.js @@ -1,21 +1,41 @@ + let data; -function getConfig() { +async function getConfig() { if (data) return Promise.resolve(data); - return fetch('config.json?nocache=' + new Date().getUTCMilliseconds()).then(response => { - data = response.json(); + try { + const response = await fetch('config.json', { + cache: 'no-cache' + }); + + if (!response.ok) { + throw new Error('network response was not ok'); + } + + data = await response.json(); + return data; - }).catch(error => { - console.warn('web config file is missing so the template will be used'); + } catch (error) { + console.warn('failed to fetch the web config file:', error); return getDefaultConfig(); - }); + } } -function getDefaultConfig() { - return fetch('config.template.json').then(function (response) { +async function getDefaultConfig() { + try { + const response = await fetch('config.template.json', { + cache: 'no-cache' + }); + + if (!response.ok) { + throw new Error('network response was not ok'); + } + data = response.json(); return data; - }); + } catch (error) { + console.error('failed to fetch the default web config file:', error); + } } export function getMultiServer() { @@ -29,6 +49,7 @@ export function getMultiServer() { export function getThemes() { return getConfig().then(config => { + console.warn(config.themes); return config.themes; }).catch(error => { console.log('cannot get web config:', error);