40 lines
1.3 KiB
JavaScript
40 lines
1.3 KiB
JavaScript
const broadcast = new BroadcastChannel('update-channel');
|
|
|
|
export async function RegisterSWUpdateCallback(dotNetHelper){
|
|
broadcast.onmessage = (event) => {
|
|
if (event.data && event.data.type === 'INSTALLING_WORKER') {
|
|
dotNetHelper.invokeMethod('NewServiceWorker');
|
|
}
|
|
};
|
|
}
|
|
|
|
export async function ServiceWorkerCheckRegistration(){
|
|
if (navigator.serviceWorker == null) return null;
|
|
const registration = await navigator.serviceWorker.getRegistration();
|
|
if (registration.installing) return "installing";
|
|
if (registration.waiting) return "waiting";
|
|
if (registration.active) return "active";
|
|
else return null
|
|
}
|
|
|
|
export async function ServiceWorkerUpdate(){
|
|
if (navigator.serviceWorker == null) return null;
|
|
const registration = await navigator.serviceWorker.getRegistration();
|
|
var res = await registration.update();
|
|
if (res.installing) return "installing";
|
|
if (res.waiting) return "waiting";
|
|
if (res.active) return "active";
|
|
else return null;
|
|
}
|
|
|
|
export async function ServiceWorkerSkipWaiting(){
|
|
if (navigator.serviceWorker == null) return null;
|
|
const registration = await navigator.serviceWorker.getRegistration();
|
|
if (registration.waiting){
|
|
registration.waiting.postMessage({ type: 'SKIP_WAITING' })
|
|
return true;
|
|
}
|
|
else {
|
|
return false;
|
|
}
|
|
}
|