From 56b2fe70d34be8f3bfe1f34a49c8123ef61ba99d Mon Sep 17 00:00:00 2001 From: Alina Sireneva Date: Mon, 4 Mar 2024 06:32:54 +0300 Subject: [PATCH] fix(web): worker fixes --- packages/web/src/exit-hook.ts | 3 +++ packages/web/src/worker.ts | 19 ++++++++++--------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/packages/web/src/exit-hook.ts b/packages/web/src/exit-hook.ts index ce8f3e1e..223c5da0 100644 --- a/packages/web/src/exit-hook.ts +++ b/packages/web/src/exit-hook.ts @@ -3,6 +3,9 @@ const callbacks = new Set<() => void>() let registered = false export function beforeExit(fn: () => void): () => void { + if (typeof window === 'undefined') { + return () => {} + } if (!registered) { registered = true diff --git a/packages/web/src/worker.ts b/packages/web/src/worker.ts index 885ac17c..e45f7463 100644 --- a/packages/web/src/worker.ts +++ b/packages/web/src/worker.ts @@ -26,15 +26,6 @@ export class TelegramWorker extends TelegramWorke _registered = true - if (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) { - const respond: RespondFn = self.postMessage.bind(self) - - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument - self.addEventListener('message', (message) => handler(message.data, respond)) - - return respond - } - if (typeof SharedWorkerGlobalScope !== 'undefined' && self instanceof SharedWorkerGlobalScope) { const connections: MessagePort[] = [] @@ -90,11 +81,21 @@ export class TelegramWorker extends TelegramWorke // eslint-disable-next-line @typescript-eslint/no-unsafe-argument handler(message.data, respond) }) + port.start() } return broadcast } + if (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) { + const respond: RespondFn = self.postMessage.bind(self) + + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + self.addEventListener('message', (message) => handler(message.data, respond)) + + return respond + } + throw new Error('TelegramWorker must be created from a worker') } }