diff --git a/core/frontend/services/theme-engine/active.js b/core/frontend/services/theme-engine/active.js index 83c675823e..e9312aa31c 100644 --- a/core/frontend/services/theme-engine/active.js +++ b/core/frontend/services/theme-engine/active.js @@ -26,16 +26,16 @@ let currentActiveTheme; class ActiveTheme { /** * @TODO this API needs to be simpler, but for now should work! + * @param {object} settings + * @param {string} settings.locale - the active locale for i18n * @param {object} loadedTheme - the loaded theme object from the theme list * @param {object} checkedTheme - the result of gscan.format for the theme we're activating - * @param {object} error - bootstrap validates the active theme, we would like to remember this error */ - constructor(settings, loadedTheme, checkedTheme, error) { + constructor(settings, loadedTheme, checkedTheme) { // Assign some data, mark it all as pseudo-private this._name = loadedTheme.name; this._path = loadedTheme.path; this._mounted = false; - this._error = error; // We get passed in a locale this._locale = settings.locale || 'en'; @@ -136,13 +136,14 @@ module.exports = { * At this point we trust that the theme has been validated. * Any handling for invalid themes should happen before we get here * - * @TODO this API needs to be simpler, but for now should work! + * @param {object} settings + * @param {string} settings.locale - the active locale for i18n * @param {object} loadedTheme - the loaded theme object from the theme list * @param {object} checkedTheme - the result of gscan.format for the theme we're activating * @return {ActiveTheme} */ - set(settings, loadedTheme, checkedTheme, error) { - currentActiveTheme = new ActiveTheme(settings, loadedTheme, checkedTheme, error); + set(settings, loadedTheme, checkedTheme) { + currentActiveTheme = new ActiveTheme(settings, loadedTheme, checkedTheme); return currentActiveTheme; } }; diff --git a/core/server/services/themes/index.js b/core/server/services/themes/index.js index d560fcf9fd..6e1c4b176f 100644 --- a/core/server/services/themes/index.js +++ b/core/server/services/themes/index.js @@ -32,36 +32,29 @@ module.exports = { .check(theme) .then(function validationSuccess(checkedTheme) { if (!validate.canActivate(checkedTheme)) { - const checkError = new errors.ThemeValidationError({ + logging.error(new errors.ThemeValidationError({ message: tpl(messages.invalidTheme, {theme: activeThemeName}), errorDetails: Object.assign( _.pick(checkedTheme, ['checkedVersion', 'name', 'path', 'version']), { errors: checkedTheme.results.error } ) - }); - - logging.error(checkError); - - bridge.activateTheme(theme, checkedTheme, checkError); - } else { + })); // CASE: inform that the theme has errors, but not fatal (theme still works) - if (checkedTheme.results.error.length) { - logging.warn(new errors.ThemeValidationError({ - errorType: 'ThemeWorksButHasErrors', - message: tpl(messages.themeHasErrors, {theme: activeThemeName}), - errorDetails: Object.assign( - _.pick(checkedTheme, ['checkedVersion', 'name', 'path', 'version']), { - errors: checkedTheme.results.error - } - ) - })); - } - - debug('Activating theme (method A on boot)', activeThemeName); - - bridge.activateTheme(theme, checkedTheme); + } else if (checkedTheme.results.error.length) { + logging.warn(new errors.ThemeValidationError({ + errorType: 'ThemeWorksButHasErrors', + message: tpl(messages.themeHasErrors, {theme: activeThemeName}), + errorDetails: Object.assign( + _.pick(checkedTheme, ['checkedVersion', 'name', 'path', 'version']), { + errors: checkedTheme.results.error + } + ) + })); } + + debug('Activating theme (method A on boot)', activeThemeName); + bridge.activateTheme(theme, checkedTheme); }); }) .catch(function (err) {