refactor: rename function to app.require

This commit is contained in:
Barış Soner Uşaklı
2022-02-19 18:59:28 -05:00
parent 1dceb2b223
commit 799acf83c4
4 changed files with 27 additions and 20 deletions

View File

@@ -15,7 +15,6 @@ logs/
*.iws
/coverage
/build
/dist
.eslintrc
test/files
*.min.js

View File

@@ -353,7 +353,7 @@ ajaxify.widgets = { render: render };
}
if (typeof script === 'string') {
return async function (next) {
const module = await app.importScript(script);
const module = await app.require(script);
// Hint: useful if you want to override a loaded library (e.g. replace core client-side logic),
// or call a method other than .init()
hooks.fire('static:script.init', { tpl_url, name: script, module }).then(() => {

View File

@@ -47,22 +47,6 @@ app.flags = {};
}
};
app.importScript = async function (scriptName) {
let pageScript;
try {
if (scriptName.startsWith('admin')) {
pageScript = await import(/* webpackChunkName: "admin/[request]" */ 'admin/' + scriptName.replace(/^admin\//, ''));
} else if (scriptName.startsWith('forum')) {
pageScript = await import(/* webpackChunkName: "forum/[request]" */ 'forum/' + scriptName.replace(/^forum\//, ''));
} else {
pageScript = await import(/* webpackChunkName: "modules/[request]" */ 'modules/' + scriptName);
}
} catch (err) {
console.warn('error loading script' + err.stack);
}
return pageScript && pageScript.default;
}
app.handleEarlyClicks = function () {
/**
* Occasionally, a button or anchor (not meant to be ajaxified) is clicked before
@@ -148,6 +132,30 @@ app.flags = {};
});
};
app.require = async function (modules) {
const single = !Array.isArray(modules);
if (single) {
modules = [modules];
}
async function requireModule(moduleName) {
let _module;
try {
if (moduleName.startsWith('admin')) {
_module = await import(/* webpackChunkName: "admin/[request]" */ 'admin/' + moduleName.replace(/^admin\//, ''));
} else if (moduleName.startsWith('forum')) {
_module = await import(/* webpackChunkName: "forum/[request]" */ 'forum/' + moduleName.replace(/^forum\//, ''));
} else {
_module = await import(/* webpackChunkName: "modules/[request]" */ 'modules/' + moduleName);
}
} catch (err) {
console.warn(`error loading ${moduleName}\n${err.stack}`);
}
return _module && _module.default;
}
const result = await Promise.all(modules.map(requireModule));
return single ? result.pop() : result;
}
app.logout = function (redirect) {
console.warn('[deprecated] app.logout is deprecated, please use logout module directly');
require(['logout'], function (logout) {

View File

@@ -17,7 +17,7 @@ define('taskbar', ['benchpress', 'translator', 'hooks'], function (Benchpress, t
const moduleName = $btn.attr('data-module');
const uuid = $btn.attr('data-uuid');
const module = await app.importScript(moduleName);
const module = await app.require(moduleName);
if (!$btn.hasClass('active')) {
minimizeAll();
module.load(uuid);
@@ -48,7 +48,7 @@ define('taskbar', ['benchpress', 'translator', 'hooks'], function (Benchpress, t
}
if (btnEl.length) {
const module = await app.importScript(moduleName);
const module = await app.require(moduleName);
if (module && typeof module[fnName] === 'function') {
module[fnName](uuid);
}