From e832d365bafee1df2173c969f7d906df0eda21cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 4 May 2023 15:38:30 -0400 Subject: [PATCH] refactor: removed parsing for taskbar harmony doesnt have a taskbar --- public/src/modules/taskbar.js | 90 ++++++++++++++++++++++++----------- 1 file changed, 62 insertions(+), 28 deletions(-) diff --git a/public/src/modules/taskbar.js b/public/src/modules/taskbar.js index 768dd8820b..56cd38e294 100644 --- a/public/src/modules/taskbar.js +++ b/public/src/modules/taskbar.js @@ -1,35 +1,33 @@ 'use strict'; -define('taskbar', ['benchpress', 'translator', 'hooks'], function (Benchpress, translator, hooks) { +define('taskbar', ['translator', 'hooks'], function (translator, hooks) { const taskbar = {}; - + let noTaskbar = false; taskbar.init = function () { - const self = this; - - Benchpress.render('modules/taskbar', {}).then(function (html) { - self.taskbar = $(html); - self.tasklist = self.taskbar.find('ul'); - $(document.body).append(self.taskbar); - - self.taskbar.on('click', 'li', async function () { - const $btn = $(this); - const moduleName = $btn.attr('data-module'); - const uuid = $btn.attr('data-uuid'); - - const module = await app.require(moduleName); - if (!$btn.hasClass('active')) { - minimizeAll(); - module.load(uuid); - taskbar.toggleNew(uuid, false); - - taskbar.tasklist.removeClass('active'); - $btn.addClass('active'); - } else { - module.minimize(uuid); - } - return false; - }); + taskbar.taskbar = $('[component="taskbar"]'); + taskbar.tasklist = taskbar.taskbar.find('ul'); + if (!taskbar.taskbar.length || !taskbar.tasklist.length) { + noTaskbar = true; + return; + } + taskbar.taskbar.on('click', 'li', async function () { + const $btn = $(this); + const moduleName = $btn.attr('data-module'); + const uuid = $btn.attr('data-uuid'); + + const module = await app.require(moduleName); + if (!$btn.hasClass('active')) { + minimizeAll(); + module.load(uuid); + taskbar.toggleNew(uuid, false); + + taskbar.tasklist.removeClass('active'); + $btn.addClass('active'); + } else { + module.minimize(uuid); + } + return false; }); $(window).on('action:app.loggedOut', function () { @@ -38,6 +36,9 @@ define('taskbar', ['benchpress', 'translator', 'hooks'], function (Benchpress, t }; taskbar.close = async function (moduleName, uuid) { + if (noTaskbar) { + return; + } // Sends signal to the appropriate module's .close() fn (if present) const btnEl = taskbar.tasklist.find('[data-module="' + module + '"][data-uuid="' + uuid + '"]'); @@ -50,6 +51,9 @@ define('taskbar', ['benchpress', 'translator', 'hooks'], function (Benchpress, t }; taskbar.closeAll = function (module) { + if (noTaskbar) { + return; + } // module is optional let selector = '[data-uuid]'; @@ -63,6 +67,9 @@ define('taskbar', ['benchpress', 'translator', 'hooks'], function (Benchpress, t }; taskbar.discard = function (module, uuid) { + if (noTaskbar) { + return; + } const btnEl = taskbar.tasklist.find('[data-module="' + module + '"][data-uuid="' + uuid + '"]'); btnEl.remove(); @@ -71,6 +78,9 @@ define('taskbar', ['benchpress', 'translator', 'hooks'], function (Benchpress, t taskbar.push = function (module, uuid, options, callback) { callback = callback || function () {}; + if (noTaskbar) { + return callback(); + } const element = taskbar.tasklist.find('li[data-uuid="' + uuid + '"]'); const data = { @@ -90,6 +100,9 @@ define('taskbar', ['benchpress', 'translator', 'hooks'], function (Benchpress, t }; taskbar.get = function (module) { + if (noTaskbar) { + return []; + } const items = $('[data-module="' + module + '"]').map(function (idx, el) { return $(el).data(); }); @@ -98,11 +111,17 @@ define('taskbar', ['benchpress', 'translator', 'hooks'], function (Benchpress, t }; taskbar.minimize = function (module, uuid) { + if (noTaskbar) { + return; + } const btnEl = taskbar.tasklist.find('[data-module="' + module + '"][data-uuid="' + uuid + '"]'); btnEl.toggleClass('active', false); }; taskbar.toggleNew = function (uuid, state, silent) { + if (noTaskbar) { + return; + } const btnEl = taskbar.tasklist.find('[data-uuid="' + uuid + '"]'); btnEl.toggleClass('new', state); @@ -112,7 +131,7 @@ define('taskbar', ['benchpress', 'translator', 'hooks'], function (Benchpress, t }; taskbar.updateActive = function (uuid) { - if (!taskbar.tasklist) { + if (noTaskbar) { return; } @@ -125,11 +144,17 @@ define('taskbar', ['benchpress', 'translator', 'hooks'], function (Benchpress, t }; taskbar.isActive = function (uuid) { + if (noTaskbar) { + return false; + } const taskBtn = taskbar.tasklist.find('li[data-uuid="' + uuid + '"]'); return taskBtn.hasClass('active'); }; function update() { + if (noTaskbar) { + return; + } const tasks = taskbar.tasklist.find('li'); if (tasks.length > 0) { @@ -140,10 +165,16 @@ define('taskbar', ['benchpress', 'translator', 'hooks'], function (Benchpress, t } function minimizeAll() { + if (noTaskbar) { + return; + } taskbar.tasklist.find('.active').removeClass('active'); } function createTaskbarItem(data, callback) { + if (noTaskbar) { + return callback(); + } translator.translate(data.options.title, function (taskTitle) { const title = $('
').text(taskTitle || 'NodeBB Task').html(); @@ -196,6 +227,9 @@ define('taskbar', ['benchpress', 'translator', 'hooks'], function (Benchpress, t }; taskbar.update = function (module, uuid, options) { + if (noTaskbar) { + return; + } const element = taskbar.tasklist.find('[data-module="' + module + '"][data-uuid="' + uuid + '"]'); if (!element.length) { return;