update service worker
This commit is contained in:
+28
-1
@@ -1,9 +1,36 @@
|
||||
export function registerServiceWorker() {
|
||||
if ('serviceWorker' in navigator) {
|
||||
window.addEventListener('load', () => {
|
||||
let refreshing = false
|
||||
|
||||
navigator.serviceWorker.addEventListener('controllerchange', () => {
|
||||
if (refreshing) return
|
||||
refreshing = true
|
||||
window.location.reload()
|
||||
})
|
||||
|
||||
navigator.serviceWorker
|
||||
.register('/sw.js')
|
||||
.then((reg) => console.log('Service worker registered:', reg))
|
||||
.then((reg) => {
|
||||
console.log('Service worker registered:', reg)
|
||||
|
||||
void reg.update().catch(() => undefined)
|
||||
|
||||
if (reg.waiting) {
|
||||
reg.waiting.postMessage({ type: 'SKIP_WAITING' })
|
||||
}
|
||||
|
||||
reg.addEventListener('updatefound', () => {
|
||||
const installingWorker = reg.installing
|
||||
if (!installingWorker) return
|
||||
|
||||
installingWorker.addEventListener('statechange', () => {
|
||||
if (installingWorker.state === 'installed' && navigator.serviceWorker.controller) {
|
||||
installingWorker.postMessage({ type: 'SKIP_WAITING' })
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
.catch((err) => console.log('Service worker registration failed:', err))
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user