fix(PWA): avoid repeated notification of SW update

This commit is contained in:
Cotes Chung 2022-06-08 16:09:18 +08:00
parent ac1731d123
commit 20caace68a
No known key found for this signature in database
GPG key ID: 0D9E54843167A808

View file

@ -18,13 +18,10 @@ if ('serviceWorker' in navigator) {
.then(registration => {
if (registration) {
registration.addEventListener('updatefound', () => {
/* console.log('updatefound'); */
let serviceWorker = registration.installing;
serviceWorker.addEventListener('statechange', () => {
/* console.log(`statechange -> ${serviceWorker.state}`); */
if (serviceWorker.state === 'installed') {
/* console.log('installed'); */
if (navigator.serviceWorker.controller) {
$notification.toast('show');
/* in case the user ignores the notification */
@ -39,9 +36,14 @@ if ('serviceWorker' in navigator) {
$notification.toast('hide');
});
/* there's a new Service Worker waiting to be activated */
if (localStorage.getItem(keyWaiting)) {
$notification.toast('show');
if (registration.waiting) {
/* there's a new Service Worker waiting to be activated */
$notification.toast('show');
} else {
/* closed all open pages after receiving notification */
localStorage.removeItem(keyWaiting);
}
}
}
});