From 946d351f3a00cf8dce66f918c993791ee7e21554 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 14 Feb 2022 21:50:30 -0500 Subject: [PATCH] refactor: lazy load slugify --- public/src/client/topic/postTools.js | 60 +++++++++++++++------------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/public/src/client/topic/postTools.js b/public/src/client/topic/postTools.js index 00961bc883..0f07e884a1 100644 --- a/public/src/client/topic/postTools.js +++ b/public/src/client/topic/postTools.js @@ -11,8 +11,7 @@ define('forum/topic/postTools', [ 'bootbox', 'alerts', 'hooks', - 'slugify', -], function (share, navigator, components, translator, votes, api, bootbox, alerts, hooks, slugify) { +], function (share, navigator, components, translator, votes, api, bootbox, alerts, hooks) { const PostTools = {}; let staleReplyAnyway = false; @@ -256,8 +255,8 @@ define('forum/topic/postTools', [ function onReplyClicked(button, tid) { const selectedNode = getSelectedNode(); - showStaleWarning(function () { - let username = getUserSlug(button); + showStaleWarning(async function () { + let username = await getUserSlug(button); if (getData(button, 'data-uid') === '0' || !getData(button, 'data-userslug')) { username = ''; } @@ -289,8 +288,8 @@ define('forum/topic/postTools', [ function onQuoteClicked(button, tid) { const selectedNode = getSelectedNode(); - showStaleWarning(function () { - const username = getUserSlug(button); + showStaleWarning(async function () { + const username = await getUserSlug(button); const toPid = getData(button, 'data-pid'); function quote(text) { @@ -316,7 +315,7 @@ define('forum/topic/postTools', [ }); } - function getSelectedNode() { + async function getSelectedNode() { let selectedText = ''; let selectedPid; let username = ''; @@ -343,7 +342,7 @@ define('forum/topic/postTools', [ selectedText = range.toString(); const postEl = $(content).parents('[component="post"]'); selectedPid = postEl.attr('data-pid'); - username = getUserSlug($(content)); + username = await getUserSlug($(content)); range.detach(); } return { text: selectedText, pid: selectedPid, username: username }; @@ -367,28 +366,33 @@ define('forum/topic/postTools', [ } function getUserSlug(button) { - let slug = ''; - const post = button.parents('[data-pid]'); - - if (button.attr('component') === 'topic/reply') { - return slug; - } - - if (post.length) { - slug = slugify(post.attr('data-username'), true); - if (!slug) { - if (post.attr('data-uid') !== '0') { - slug = '[[global:former_user]]'; - } else { - slug = '[[global:guest]]'; - } + return new Promise((resolve) => { + let slug = ''; + if (button.attr('component') === 'topic/reply') { + resolve(slug); + return; + } + const post = button.parents('[data-pid]'); + if (post.length) { + require(['slugify'], function (slugify) { + slug = slugify(post.attr('data-username'), true); + if (!slug) { + if (post.attr('data-uid') !== '0') { + slug = '[[global:former_user]]'; + } else { + slug = '[[global:guest]]'; + } + } + resolve(slug); + }); + return; + } + if (post.length && post.attr('data-uid') !== '0') { + slug = '@' + slug; } - } - if (post.length && post.attr('data-uid') !== '0') { - slug = '@' + slug; - } - return slug; + resolve(slug); + }); } function togglePostDelete(button) {