SW-to-window communication
This commit is contained in:
parent
e3bf9a5185
commit
f449bfe2f1
@ -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) {
|
||||||
|
@ -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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user