From bbbeea8eb121fc945d47a5bdce2ecca1023e9324 Mon Sep 17 00:00:00 2001 From: Evelyn Zheng Date: Thu, 5 Sep 2024 01:51:21 -0400 Subject: [PATCH] split up button clicks into multiple functions --- public/src/admin/appearance/themes.js | 167 ++++++++++++++------------ 1 file changed, 92 insertions(+), 75 deletions(-) diff --git a/public/src/admin/appearance/themes.js b/public/src/admin/appearance/themes.js index f2a023206f..65f63e5b32 100644 --- a/public/src/admin/appearance/themes.js +++ b/public/src/admin/appearance/themes.js @@ -5,92 +5,108 @@ define('admin/appearance/themes', ['bootbox', 'translator', 'alerts'], function const Themes = {}; Themes.init = function () { - $('#installed_themes').on('click', function (e) { - const target = $(e.target); - const action = target.attr('data-action'); - - if (action && action === 'use') { - const parentEl = target.parents('[data-theme]'); - const themeType = parentEl.attr('data-type'); - const cssSrc = parentEl.attr('data-css'); - const themeId = parentEl.attr('data-theme'); - - if (config['theme:id'] === themeId) { - return; - } - socket.emit('admin.themes.set', { - type: themeType, - id: themeId, - src: cssSrc, - }, function (err) { - if (err) { - return alerts.error(err); - } - config['theme:id'] = themeId; - highlightSelectedTheme(themeId); - - alerts.alert({ - alert_id: 'admin:theme', - type: 'info', - title: '[[admin/appearance/themes:theme-changed]]', - message: '[[admin/appearance/themes:restart-to-activate]]', - timeout: 5000, - clickfn: function () { - require(['admin/modules/instance'], function (instance) { - instance.rebuildAndRestart(); - }); - }, - }); - }); - } - }); + $('#installed_themes').on('click', clickedTheme); + $('#revert_theme').on('click', clickedRevert); + }; - $('#revert_theme').on('click', function () { - if (config['theme:id'] === 'nodebb-theme-harmony') { + function clickedTheme(e) { + const target = $(e.target); + const action = target.attr('data-action'); + + if (action && action === 'use') { + const parentEl = target.parents('[data-theme]'); + const themeType = parentEl.attr('data-type'); + const cssSrc = parentEl.attr('data-css'); + const themeId = parentEl.attr('data-theme'); + + if (config['theme:id'] === themeId) { return; } - bootbox.confirm('[[admin/appearance/themes:revert-confirm]]', function (confirm) { - if (confirm) { - socket.emit('admin.themes.set', { - type: 'local', - id: 'nodebb-theme-harmony', - }, function (err) { - if (err) { - return alerts.error(err); - } - config['theme:id'] = 'nodebb-theme-harmony'; - highlightSelectedTheme('nodebb-theme-harmony'); - alerts.alert({ - alert_id: 'admin:theme', - type: 'success', - title: '[[admin/appearance/themes:theme-changed]]', - message: '[[admin/appearance/themes:revert-success]]', - timeout: 3500, - }); - }); - } - }); - }); + setTheme(themeType, themeId, cssSrc); + } + } - socket.emit('admin.themes.getInstalled', function (err, themes) { + function setTheme(themeType, themeId, cssSrc) { + socket.emit('admin.themes.set', { + type: themeType, + id: themeId, + src: cssSrc, + }, function (err) { if (err) { return alerts.error(err); } + config['theme:id'] = themeId; + highlightSelectedTheme(themeId); + showChange(); + }); + } - const instListEl = $('#installed_themes'); - - if (!themes.length) { - instListEl.append($('
  • ').addClass('no-themes').translateHtml('[[admin/appearance/themes:no-themes]]')); - } else { - app.parseAndTranslate('admin/partials/theme_list', { - themes: themes, - }, function (html) { - instListEl.html(html); - highlightSelectedTheme(config['theme:id']); + function showChange() { + alerts.alert({ + alert_id: 'admin:theme', + type: 'info', + title: '[[admin/appearance/themes:theme-changed]]', + message: '[[admin/appearance/themes:restart-to-activate]]', + timeout: 5000, + clickfn: function () { + require(['admin/modules/instance'], function (instance) { + instance.rebuildAndRestart(); }); + }, + }); + } + + function clickedRevert() { + console.log('EVELYN'); + if (config['theme:id'] === 'nodebb-theme-harmony') { + return; + } + bootbox.confirm('[[admin/appearance/themes:revert-confirm]]', function (confirm) { + if (confirm) { + revertTheme(); } }); - }; + } + + function revertTheme() { + socket.emit('admin.themes.set', { + type: 'local', + id: 'nodebb-theme-harmony', + }, function (err) { + if (err) { + return alerts.error(err); + } + config['theme:id'] = 'nodebb-theme-harmony'; + highlightSelectedTheme('nodebb-theme-harmony'); + alerts.alert({ + alert_id: 'admin:theme', + type: 'success', + title: '[[admin/appearance/themes:theme-changed]]', + message: '[[admin/appearance/themes:revert-success]]', + timeout: 3500, + }); + }); + } + + socket.emit('admin.themes.getInstalled', function (err, themes) { + if (err) { + return alerts.error(err); + } + + const instListEl = $('#installed_themes'); + + if (!themes.length) { + instListEl.append($('
  • ').addClass('no-themes').translateHtml('[[admin/appearance/themes:no-themes]]')); + } else { + app.parseAndTranslate('admin/partials/theme_list', { + themes: themes, + }, function (html) { + instListEl.html(html); + highlightSelectedTheme(config['theme:id']); + }); + } + }); + function highlightSelectedTheme(themeId) { translator.translate('[[admin/appearance/themes:select-theme]] || [[admin/appearance/themes:current-theme]]', function (text) { @@ -116,3 +132,4 @@ define('admin/appearance/themes', ['bootbox', 'translator', 'alerts'], function return Themes; }); +