From 640aec42dd1d3c3b98a78106356b0426626ad08f Mon Sep 17 00:00:00 2001 From: Erik Ziegler Date: Thu, 9 Aug 2018 11:31:06 +0200 Subject: [PATCH] fix(plugins): Fix issues with loadScript not executing onload callback --- .../client/lib/classes/plugins/OHIFPlugin.js | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/Packages/ohif-viewerbase/client/lib/classes/plugins/OHIFPlugin.js b/Packages/ohif-viewerbase/client/lib/classes/plugins/OHIFPlugin.js index 596addb60..7ae83a2e2 100644 --- a/Packages/ohif-viewerbase/client/lib/classes/plugins/OHIFPlugin.js +++ b/Packages/ohif-viewerbase/client/lib/classes/plugins/OHIFPlugin.js @@ -8,17 +8,20 @@ export class OHIFPlugin { // load an individual script URL static loadScript(scriptURL, type = "text/javascript") { - const script = document.createElement("script"); + return new Promise((resolve, reject) => { + const script = document.createElement("script"); - script.src = scriptURL; - script.type = type; - script.async = false; + script.onload = resolve; + script.onerror = reject; - const head = document.getElementsByTagName("head")[0]; - head.appendChild(script); - head.removeChild(script); + script.src = scriptURL; + script.type = type; + script.async = false; - return script; + const head = document.getElementsByTagName("head")[0]; + head.appendChild(script); + head.removeChild(script); + }); } // reload all the dependency scripts and also @@ -26,14 +29,14 @@ export class OHIFPlugin { static reloadPlugin(plugin) { if (plugin.scriptURLs && plugin.scriptURLs.length) { plugin.scriptURLs.forEach(scriptURL => { - this.loadScript(scriptURL).onload = function() {} + this.loadScript(scriptURL); }); } // TODO: Later we should probably merge script and module URLs if (plugin.moduleURLs && plugin.moduleURLs.length) { plugin.moduleURLs.forEach(moduleURLs => { - this.loadScript(moduleURLs, "module").onload = function() {} + this.loadScript(moduleURLs, "module"); }); } @@ -45,12 +48,14 @@ export class OHIFPlugin { const type = plugin.module === true ? 'module' : 'text/javascript' - this.loadScript(scriptURL, type).onload = function() { + this.loadScript(scriptURL, type).then(function() { const entryPointFunction = OHIF.plugins.entryPoints[plugin.name]; if (entryPointFunction) { entryPointFunction(); } - } + }, error => { + throw new Error(error); + }); } }