/* * @Author: your name * @Date: 2021-09-03 14:28:27 * @LastEditTime: 2022-01-14 11:37:33 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: /MedicalWisdomCheckSys/src/global.tsx */ import { Button, message, notification } from 'antd'; import defaultSettings from '../config/defaultSettings'; const { pwa } = defaultSettings; const isHttps = document.location.protocol === 'https:'; // if pwa is true if (pwa) { // Pop up a prompt on the page asking the user if they want to use the latest version window.addEventListener('sw.updated',(event: Event) => { const e = event as CustomEvent; const reloadSW = async () => { // Check if there is sw whose state is waiting in ServiceWorkerRegistration // https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration const worker = e.detail && e.detail.waiting; if (!worker) { return true; } // Send skip-waiting event to waiting SW with MessageChannel await new Promise((resolve, reject) => { const channel = new MessageChannel(); channel.port1.onmessage = (msgEvent) => { if (msgEvent.data.error) { reject(msgEvent.data.error); } else { resolve(msgEvent.data); } }; worker.postMessage({ type: 'skip-waiting' }, [channel.port2]); }); // Refresh current page to use the updated HTML and other assets after SW has skiped waiting window.location.reload(); return true; }; const key = `open${Date.now()}`; const btn = ( ); notification.open({ message: 'app.pwa.serviceworker.updated', description: 'pp.pwa.serviceworker.updated.hint', btn, key, onClose: async () => null, }); }); } else if ('serviceWorker' in navigator && isHttps) { // unregister service worker const { serviceWorker } = navigator; if (serviceWorker.getRegistrations) { serviceWorker.getRegistrations().then((sws) => { sws.forEach((sw) => { sw.unregister(); }); }); } serviceWorker.getRegistration().then((sw) => { if (sw) sw.unregister(); }); //remove all caches // if (window.caches && await window.caches.keys()) { // caches.keys().then((keys) => { // keys.forEach((key) => { // caches.delete(key); // }); // }); // } }