From 70b69e318a7856d20a9822f0b34d0944d1608a82 Mon Sep 17 00:00:00 2001
From: Jarek Radosz <jradosz@gmail.com>
Date: Fri, 22 Apr 2022 11:53:39 +0200
Subject: [PATCH] DEV: Clean up `loadScript()` (#16537)

---
 .../discourse/app/lib/load-script.js          | 20 +++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/app/assets/javascripts/discourse/app/lib/load-script.js b/app/assets/javascripts/discourse/app/lib/load-script.js
index 8aca0d5f95b..2eb5a52c096 100644
--- a/app/assets/javascripts/discourse/app/lib/load-script.js
+++ b/app/assets/javascripts/discourse/app/lib/load-script.js
@@ -47,28 +47,24 @@ export function loadCSS(url) {
   return loadScript(url, { css: true });
 }
 
-export default function loadScript(url, opts) {
+export default function loadScript(url, opts = {}) {
   // TODO: Remove this once plugins have been updated not to use it:
   if (url === "defer/html-sanitizer-bundle") {
     return Promise.resolve();
   }
 
-  opts = opts || {};
-
   if (_loaded[url]) {
     return Promise.resolve();
   }
 
-  if (PUBLIC_JS_VERSIONS) {
-    url = cacheBuster(url);
-  }
+  url = cacheBuster(url);
 
   // Scripts should always load from CDN
   // CSS is type text, to accept it from a CDN we would need to handle CORS
   const fullUrl = opts.css ? getURL(url) : getURLWithCDN(url);
 
-  $("script").each((i, tag) => {
-    const src = tag.getAttribute("src");
+  document.querySelectorAll("script").forEach((element) => {
+    const src = element.getAttribute("src");
 
     if (src && src !== fullUrl && !_loading[src]) {
       _loaded[src] = true;
@@ -80,6 +76,7 @@ export default function loadScript(url, opts) {
     if (_loaded[fullUrl]) {
       return resolve();
     }
+
     if (_loading[fullUrl]) {
       return _loading[fullUrl].then(resolve);
     }
@@ -94,9 +91,12 @@ export default function loadScript(url, opts) {
     });
 
     const cb = function (data) {
-      if (opts && opts.css) {
-        $("head").append("<style>" + data + "</style>");
+      if (opts?.css) {
+        const style = document.createElement("style");
+        style.innerText = data;
+        document.querySelector("head").appendChild(style);
       }
+
       done();
       resolve();
       _loaded[url] = true;