From f100279e650a4e504701575d083294a44ce12613 Mon Sep 17 00:00:00 2001 From: Gigiaj Date: Tue, 10 Jun 2025 17:37:54 -0500 Subject: [PATCH] Move message listener and add a togglePush listener (should ensure registers/deregisters always go off this way) --- src/sw.ts | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/src/sw.ts b/src/sw.ts index ac86f622..c62d560a 100644 --- a/src/sw.ts +++ b/src/sw.ts @@ -19,18 +19,6 @@ function sendAndWaitForReply(client: WindowClient, type: string, payload: object return promise; } -self.addEventListener('message', (event: ExtendableMessageEvent) => { - const { replyTo } = event.data; - if (replyTo) { - const resolve = pendingReplies.get(replyTo); - if (resolve) { - pendingReplies.delete(replyTo); - resolve(event.data.payload); - } - } -}); - - function fetchConfig(token?: string): RequestInit | undefined { if (!token) return undefined; @@ -42,6 +30,29 @@ function fetchConfig(token?: string): RequestInit | undefined { }; } +self.addEventListener('message', (event: ExtendableMessageEvent) => { + if (event.data.type === 'togglePush') { + const token = event.data?.token; + const fetchOptions = fetchConfig(token); + event.waitUntil( + fetch(`${event.data.url}/_matrix/client/v3/pushers/set`, { + method: 'POST', + ...fetchOptions, + body: JSON.stringify(event.data.pusherData), + }) + ); + return; + } + const { replyTo } = event.data; + if (replyTo) { + const resolve = pendingReplies.get(replyTo); + if (resolve) { + pendingReplies.delete(replyTo); + resolve(event.data.payload); + } + } +}); + self.addEventListener('activate', (event: ExtendableEvent) => { event.waitUntil( (async () => {