From 617853540813b4b9943dec79ea023aa0351388d3 Mon Sep 17 00:00:00 2001 From: bc-nick Date: Wed, 14 Aug 2024 12:08:43 +0200 Subject: [PATCH] chore(common): PAYPAL-4550 added ability to reload script by passing an addition parameter --- src/script-loader.spec.ts | 8 ++++++++ src/script-loader.ts | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/script-loader.spec.ts b/src/script-loader.spec.ts index 029161d..4c7cfa4 100644 --- a/src/script-loader.spec.ts +++ b/src/script-loader.spec.ts @@ -62,6 +62,14 @@ describe('ScriptLoader', () => { .toEqual(false); }); + it('reload existing script', async () => { + await loader.loadScript('https://code.jquery.com/jquery-3.2.1.min.js'); + await loader.loadScript('https://code.jquery.com/jquery-3.2.1.min.js', undefined, true); + + expect(document.body.appendChild) + .toHaveBeenCalledTimes(2); + }); + it('resolves promise if script is loaded', async () => { const output = await loader.loadScript('https://code.jquery.com/jquery-3.2.1.min.js'); diff --git a/src/script-loader.ts b/src/script-loader.ts index ca20c4c..fa56806 100644 --- a/src/script-loader.ts +++ b/src/script-loader.ts @@ -27,8 +27,8 @@ export default class ScriptLoader { private _requestSender: RequestSender ) {} - loadScript(src: string, options?: LoadScriptOptions): Promise { - if (!this._scripts[src]) { + loadScript(src: string, options?: LoadScriptOptions, reloadScript?: boolean): Promise { + if (!this._scripts[src] || !!this._scripts[src] && reloadScript) { this._scripts[src] = new Promise((resolve, reject) => { const script = document.createElement('script') as LegacyHTMLScriptElement; const { async = false, attributes = {} } = options || {};