Move message listener and add a togglePush listener (should ensure registers/deregisters always go off this way)

This commit is contained in:
Gigiaj 2025-06-10 17:37:54 -05:00
parent 91d6a5d2e9
commit f100279e65

View file

@ -19,18 +19,6 @@ function sendAndWaitForReply(client: WindowClient, type: string, payload: object
return promise; 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 { function fetchConfig(token?: string): RequestInit | undefined {
if (!token) return 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) => { self.addEventListener('activate', (event: ExtendableEvent) => {
event.waitUntil( event.waitUntil(
(async () => { (async () => {