diff --git a/src/components/virtual-background/helpers/timerHelper.ts b/src/components/virtual-background/helpers/timerHelper.ts index cf0bb629..b74f87b8 100644 --- a/src/components/virtual-background/helpers/timerHelper.ts +++ b/src/components/virtual-background/helpers/timerHelper.ts @@ -1,5 +1,3 @@ -import { CrossOriginWorkerMaker as Worker } from '../../../helpers/cross-origin-worker'; - type TimerData = { callbackId: number; }; @@ -10,11 +8,30 @@ 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 void>(); - const workerMaker = new Worker(new URL('./timerWorker', import.meta.url)); + const worker = new Worker( + URL.createObjectURL(new Blob([timerWorker], { type: 'text/javascript' })), + ); - const worker = workerMaker.worker; worker.onmessage = (event: MessageEvent) => { const callback = callbacks.get(event.data.callbackId); if (!callback) { 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(); - -self.onmessage = (event: MessageEvent) => { - 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 {};