SW-to-window communication

This commit is contained in:
Henry Jameson 2023-11-09 01:52:39 +02:00
parent e3bf9a5185
commit f449bfe2f1
2 changed files with 11 additions and 3 deletions

View File

@ -82,9 +82,13 @@ function sendSubscriptionToBackEnd (subscription, token, notificationVisibility)
return responseData return responseData
}) })
} }
export function initServiceWorker () { export async function initServiceWorker () {
if (!isSWSupported()) return 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) { export async function showDesktopNotification (content) {

View File

@ -56,7 +56,6 @@ self.addEventListener('push', async (event) => {
self.addEventListener('message', async (event) => { self.addEventListener('message', async (event) => {
const { type, content } = event.data const { type, content } = event.data
console.log(event)
if (type === 'desktopNotification') { if (type === 'desktopNotification') {
const { title, ...rest } = content const { title, ...rest } = content
@ -79,6 +78,11 @@ self.addEventListener('notificationclick', (event) => {
event.notification.close() event.notification.close()
event.waitUntil(getWindowClients().then((list) => { 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++) { for (let i = 0; i < list.length; i++) {
const client = list[i] const client = list[i]
if (state.lastFocused === null || client.id === state.lastFocused) { if (state.lastFocused === null || client.id === state.lastFocused) {