diff options
author | Yamagishi Kazutoshi <ykzts@desire.sh> | 2022-10-04 01:15:47 +0900 |
---|---|---|
committer | Claire <claire.github-309c@sitedethib.com> | 2022-10-09 18:23:15 +0200 |
commit | cc93cd5d6cf302140d9df56e64dc6e902ce56708 (patch) | |
tree | 86d6d0aa5784167f85657dfe797cc3674252a217 /app/javascript/flavours/glitch/util/ready.js | |
parent | d86cb4cab89e99afae8ebf49e4276b40d444c498 (diff) |
[Glitch] Disable push notification when not logged in
Port 216dbaedaf587db834cfdd53b896e9c7e1284d9c to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com>
Diffstat (limited to 'app/javascript/flavours/glitch/util/ready.js')
-rw-r--r-- | app/javascript/flavours/glitch/util/ready.js | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/app/javascript/flavours/glitch/util/ready.js b/app/javascript/flavours/glitch/util/ready.js index dd543910b..e769cc756 100644 --- a/app/javascript/flavours/glitch/util/ready.js +++ b/app/javascript/flavours/glitch/util/ready.js @@ -1,7 +1,32 @@ -export default function ready(loaded) { - if (['interactive', 'complete'].includes(document.readyState)) { - loaded(); - } else { - document.addEventListener('DOMContentLoaded', loaded); - } +// @ts-check + +/** + * @param {(() => void) | (() => Promise<void>)} callback + * @returns {Promise<void>} + */ +export default function ready(callback) { + return new Promise((resolve, reject) => { + function loaded() { + let result; + try { + result = callback(); + } catch (err) { + reject(err); + + return; + } + + if (typeof result?.then === 'function') { + result.then(resolve).catch(reject); + } else { + resolve(); + } + } + + if (['interactive', 'complete'].includes(document.readyState)) { + loaded(); + } else { + document.addEventListener('DOMContentLoaded', loaded); + } + }); } |