Use WindowClient.navigate() instead of service worker message (#2294)

This commit is contained in:
ekzyis 2025-09-15 22:08:08 +02:00 committed by GitHub
parent c4042fdf4b
commit 5aa5956afc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 1 additions and 16 deletions

View File

@ -60,14 +60,6 @@ export default function MyApp ({ Component, pageProps: { ...props } }) {
router.events.on('routeChangeComplete', nprogressDone) router.events.on('routeChangeComplete', nprogressDone)
router.events.on('routeChangeError', nprogressDone) router.events.on('routeChangeError', nprogressDone)
const handleServiceWorkerMessage = (event) => {
if (event.data?.type === 'navigate') {
router.push(event.data.url)
}
}
navigator.serviceWorker?.addEventListener('message', handleServiceWorkerMessage)
if (!props?.apollo) return if (!props?.apollo) return
// HACK: 'cause there's no way to tell Next to skip SSR // HACK: 'cause there's no way to tell Next to skip SSR
// So every page load, we modify the route in browser history // So every page load, we modify the route in browser history
@ -90,7 +82,6 @@ export default function MyApp ({ Component, pageProps: { ...props } }) {
router.events.off('routeChangeStart', nprogressStart) router.events.off('routeChangeStart', nprogressStart)
router.events.off('routeChangeComplete', nprogressDone) router.events.off('routeChangeComplete', nprogressDone)
router.events.off('routeChangeError', nprogressDone) router.events.off('routeChangeError', nprogressDone)
navigator.serviceWorker?.removeEventListener('message', handleServiceWorkerMessage)
} }
}, [router.asPath, props?.apollo, shouldShowProgressBar]) }, [router.asPath, props?.apollo, shouldShowProgressBar])

View File

@ -123,13 +123,7 @@ self.addEventListener('notificationclick', function (event) {
.then(clients => { .then(clients => {
if (clients.length > 0) { if (clients.length > 0) {
const client = clients[0] const client = clients[0]
return client.focus() return client.focus().then(() => client.navigate(url))
.then(() => {
return client.postMessage({
type: 'navigate',
url
})
})
} else { } else {
return self.clients.openWindow(url) return self.clients.openWindow(url)
} }