From b5a6a3149d4211ffad2a73c0b6be52e5af4949b2 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Thu, 4 Mar 2021 12:46:54 -0500 Subject: [PATCH] refactor: app.parseAndTranslate to return promise if no callback passed --- public/src/app.js | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/public/src/app.js b/public/src/app.js index c2ed7d941c..8db1282cc8 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -736,21 +736,29 @@ app.cacheBuster = null; }; app.parseAndTranslate = function (template, blockName, data, callback) { - require(['translator', 'benchpress'], function (translator, Benchpress) { - if (typeof blockName !== 'string') { - callback = data; - data = blockName; - blockName = undefined; - } + if (typeof blockName !== 'string') { + callback = data; + data = blockName; + blockName = undefined; + } - Benchpress.render(template, data, blockName) - .then(rendered => translator.translate(rendered)) - .then(translated => translator.unescape(translated)) - .then( - result => setTimeout(callback, 0, $(result)), - err => console.error(err) - ); - }); + const execute = (resolve, reject) => { + require(['translator', 'benchpress'], function (translator, Benchpress) { + Benchpress.render(template, data, blockName) + .then(rendered => translator.translate(rendered)) + .then(translated => translator.unescape(translated)) + .then(resolve, reject); + }); + }; + + if (callback) { + execute( + result => setTimeout(callback, 0, $(result)), + err => console.error(err) + ); + } else { + return new Promise(execute).then(html => $(html)); + } }; app.showCookieWarning = function () {