major: migrate sw to workbox
This commit is contained in:
45
src/components/sw-toolbox.js
Normal file
45
src/components/sw-toolbox.js
Normal file
@ -0,0 +1,45 @@
|
||||
import {
|
||||
Workbox,
|
||||
messageSW
|
||||
} from 'https://storage.googleapis.com/workbox-cdn/releases/6.1.1/workbox-window.prod.mjs';
|
||||
|
||||
if ('serviceWorker' in navigator) {
|
||||
window.addEventListener('load', function () {
|
||||
|
||||
const wb = new Workbox('/service-worker.js');
|
||||
let registration;
|
||||
|
||||
const showSkipWaitingPrompt = (event) => {
|
||||
Swal.fire({
|
||||
position: 'bottom-end',
|
||||
backdrop: false,
|
||||
title: "",
|
||||
text: hubl.intl.t('serviceWorker.newUpdate') + ". " + hubl.intl.t('serviceWorker.wantToUpdate'),
|
||||
imageUrl: hubl.client.logo || 'https://cdn.startinblox.com/logos/webp/hubl.webp',
|
||||
imageAlt: hubl.client.name,
|
||||
showCancelButton: true,
|
||||
confirmButtonClass: 'button text-xsmall text-bold text-center reversed color-secondary bordered icon icon-check no-background-image',
|
||||
cancelButtonClass: 'button text-xsmall text-bold text-center reversed color-primary bordered icon icon-exclamation no-background-image',
|
||||
confirmButtonText: hubl.intl.t('serviceWorker.yes'),
|
||||
cancelButtonText: hubl.intl.t('serviceWorker.no')
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
wb.addEventListener('controlling', (event) => {
|
||||
window.location.reload();
|
||||
});
|
||||
|
||||
if (registration && registration.waiting) {
|
||||
messageSW(registration.waiting, {
|
||||
type: 'SKIP_WAITING'
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
wb.addEventListener('waiting', showSkipWaitingPrompt);
|
||||
wb.addEventListener('externalwaiting', showSkipWaitingPrompt);
|
||||
|
||||
wb.register().then((r) => registration = r);
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user