diff --git a/.eslintignore b/.eslintignore index 18275c1c1a871cac03e13ac7acab033d5b74937c..43ab7824efa0352bbcbffde924c60fb1d2634518 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1,3 @@ /functions/mock/** -/scripts \ No newline at end of file +/scripts +/config \ No newline at end of file diff --git a/src/global.js b/src/global.js index fb4e46cab32568db0188defecd9cb99888a2aa8a..62f8ccebefe899371f39e0419cc3f82d514fafc9 100644 --- a/src/global.js +++ b/src/global.js @@ -9,9 +9,38 @@ window.addEventListener('sw.offline', () => { // Pop up a prompt on the page asking the user if they want to use the latest version window.addEventListener('sw.updated', e => { + 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 Promise.resolve(); + } + // Send skip-waiting event to waiting SW with MessageChannel + await new Promise((resolve, reject) => { + const channel = new MessageChannel(); + channel.port1.onmessage = event => { + if (event.data.error) { + reject(event.data.error); + } else { + resolve(event.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(true); + return true; + }; const key = `open${Date.now()}`; const btn = ( - ); @@ -20,28 +49,6 @@ window.addEventListener('sw.updated', e => { description: formatMessage({ id: 'app.pwa.serviceworker.updated.hint' }), btn, key, - onClose: 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 Promise.resolve(); - } - // Send skip-waiting event to waiting SW with MessageChannel - await new Promise((resolve, reject) => { - const channel = new MessageChannel(); - channel.port1.onmessage = event => { - if (event.data.error) { - reject(event.data.error); - } else { - resolve(event.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(true); - return true; - }, + onClose: async () => {}, }); });