From d3aba388db80319d330c6c74aa78ff563d2dcb0b Mon Sep 17 00:00:00 2001 From: "Jibon L. Costa" <jiboncosta57@gmail.com> Date: Fri, 9 Jun 2023 15:50:16 +0200 Subject: [PATCH] fixed: cross origin error for worker (#437) --- package.json | 2 +- .../virtual-background/helpers/timerHelper.ts | 23 ++++++++++++++++-- .../virtual-background/helpers/timerWorker.ts | 24 ------------------- 3 files changed, 22 insertions(+), 27 deletions(-) delete mode 100644 src/components/virtual-background/helpers/timerWorker.ts diff --git a/package.json b/package.json index 8f23107c..b398a11e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plugnmeet-client", - "version": "1.4.2", + "version": "1.4.3", "author": "Jibon L. Costa", "license": "MIT", "scripts": { diff --git a/src/components/virtual-background/helpers/timerHelper.ts b/src/components/virtual-background/helpers/timerHelper.ts index 05351489..b74f87b8 100644 --- a/src/components/virtual-background/helpers/timerHelper.ts +++ b/src/components/virtual-background/helpers/timerHelper.ts @@ -8,10 +8,29 @@ export type TimerWorker = { terminate(): void; }; +// we'll have to write like this way, otherwise browser won't load because of cross origin error +const timerWorker = ` +const timeoutIds = new Map(); +self.onmessage = (event) => { + if (event.data.timeoutMs !== undefined) { + const timeoutId = self.setTimeout(() => { + self.postMessage({ callbackId: event.data.callbackId }); + timeoutIds.delete(event.data.callbackId); + }, event.data.timeoutMs); + timeoutIds.set(event.data.callbackId, timeoutId); + } else { + const timeoutId = timeoutIds.get(event.data.callbackId); + self.clearTimeout(timeoutId); + timeoutIds.delete(event.data.callbackId); + } +}; +`; + export function createTimerWorker(): TimerWorker { const callbacks = new Map<number, () => void>(); - - const worker = new Worker(new URL('./timerWorker', import.meta.url)); + const worker = new Worker( + URL.createObjectURL(new Blob([timerWorker], { type: 'text/javascript' })), + ); worker.onmessage = (event: MessageEvent<TimerData>) => { const callback = callbacks.get(event.data.callbackId); diff --git a/src/components/virtual-background/helpers/timerWorker.ts b/src/components/virtual-background/helpers/timerWorker.ts deleted file mode 100644 index 23345384..00000000 --- a/src/components/virtual-background/helpers/timerWorker.ts +++ /dev/null @@ -1,24 +0,0 @@ -declare const self: DedicatedWorkerGlobalScope; - -type TimerData = { - callbackId: number; - timeoutMs?: number; -}; - -const timeoutIds = new Map<number, number>(); - -self.onmessage = (event: MessageEvent<TimerData>) => { - if (event.data.timeoutMs !== undefined) { - const timeoutId = self.setTimeout(() => { - self.postMessage({ callbackId: event.data.callbackId }); - timeoutIds.delete(event.data.callbackId); - }, event.data.timeoutMs); - timeoutIds.set(event.data.callbackId, timeoutId); - } else { - const timeoutId = timeoutIds.get(event.data.callbackId); - self.clearTimeout(timeoutId); - timeoutIds.delete(event.data.callbackId); - } -}; - -export {};