diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index 97d2d6ecab..1bfef52f50 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -17,6 +17,7 @@ import '../assets/css/scrollstyles.css'; import '../assets/css/flexstyles.scss'; import Dashboard from './clientUtils'; import ServerConnections from '../components/ServerConnections'; +import Headroom from 'headroom.js'; /* eslint-disable indent */ @@ -801,10 +802,8 @@ import ServerConnections from '../components/ServerConnections'; } function initHeadRoom(elem) { - import('headroom.js').then((Headroom) => { - const headroom = new Headroom(elem); - headroom.init(); - }); + const headroom = new Headroom(elem); + headroom.init(); } function refreshLibraryDrawer(user) { diff --git a/src/scripts/settings/webSettings.js b/src/scripts/settings/webSettings.js index ae50c68285..8df0d97acb 100644 --- a/src/scripts/settings/webSettings.js +++ b/src/scripts/settings/webSettings.js @@ -85,35 +85,41 @@ export function getMultiServer() { }); } -const defaultTheme = { +const baseDefaultTheme = { 'name': 'Dark', 'id': 'dark', 'default': true }; +let internalDefaultTheme = baseDefaultTheme; + const checkDefaultTheme = (themes) => { if (themes) { const defaultTheme = themes.find((theme) => theme.default); - if (!defaultTheme) { - themes.push(defaultTheme); + if (defaultTheme) { + internalDefaultTheme = defaultTheme; + return; } - - return themes; } - return [defaultTheme]; + internalDefaultTheme = baseDefaultTheme; }; export function getThemes() { return getConfig().then(config => { - return checkDefaultTheme(Array.isArray(config.themes) ? config.themes : []); + const themes = Array.isArray(config.themes) ? config.themes : []; + checkDefaultTheme(themes); + return themes; }).catch(error => { console.log('cannot get web config:', error); - return checkDefaultTheme(); + checkDefaultTheme(); + return []; }); } +export const getDefaultTheme = () => internalDefaultTheme; + export function getPlugins() { return getConfig().then(config => { return config.plugins; diff --git a/src/scripts/themeManager.js b/src/scripts/themeManager.js index f7dcf597d1..0f45f1804b 100644 --- a/src/scripts/themeManager.js +++ b/src/scripts/themeManager.js @@ -1,4 +1,4 @@ -import * as webSettings from './settings/webSettings'; +import { getDefaultTheme, getThemes as getConfiguredThemes } from './settings/webSettings'; let themeStyleElement = document.querySelector('#cssTheme'); let currentThemeId; @@ -12,14 +12,22 @@ function unloadTheme() { } function getThemes() { - return webSettings.getThemes(); + return getConfiguredThemes(); } function getThemeStylesheetInfo(id) { return getThemes().then(themes => { - const theme = themes.find(theme => { - return id ? theme.id === id : theme.default; - }); + let theme; + + if (id) { + theme = themes.find(theme => { + return theme.id === id; + }); + } + + if (!theme) { + theme = getDefaultTheme(); + } return { stylesheetPath: 'themes/' + theme.id + '/theme.css',