logo

pleroma-fe

My custom branche(s) on git.pleroma.social/pleroma/pleroma-fe git clone https://hacktivis.me/git/pleroma-fe.git
commit: f449bfe2f1d77172aee0433f63ec4a82bcc7ea1e
parent e3bf9a518574b19877a308b7331994b68ca5ef5b
Author: Henry Jameson <me@hjkos.com>
Date:   Thu,  9 Nov 2023 01:52:39 +0200

SW-to-window communication

Diffstat:

Msrc/services/sw/sw.js8++++++--
Msrc/sw.js6+++++-
2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/services/sw/sw.js b/src/services/sw/sw.js @@ -82,9 +82,13 @@ function sendSubscriptionToBackEnd (subscription, token, notificationVisibility) return responseData }) } -export function initServiceWorker () { +export async function initServiceWorker () { if (!isSWSupported()) return - getOrCreateServiceWorker() + await getOrCreateServiceWorker() + navigator.serviceWorker.addEventListener('message', (event) => { + console.log('SW MESSAGE', event) + // TODO actually act upon click (open drawer on mobile for now) + }) } export async function showDesktopNotification (content) { diff --git a/src/sw.js b/src/sw.js @@ -56,7 +56,6 @@ self.addEventListener('push', async (event) => { self.addEventListener('message', async (event) => { const { type, content } = event.data - console.log(event) if (type === 'desktopNotification') { const { title, ...rest } = content @@ -81,6 +80,11 @@ self.addEventListener('notificationclick', (event) => { event.waitUntil(getWindowClients().then((list) => { for (let i = 0; i < list.length; i++) { const client = list[i] + client.postMessage({ type: 'notificationClicked', id: event.notification.tag }) + } + + for (let i = 0; i < list.length; i++) { + const client = list[i] if (state.lastFocused === null || client.id === state.lastFocused) { if ('focus' in client) return client.focus() }