diff --git a/app.js b/app.js index 98626d1..2716443 100644 --- a/app.js +++ b/app.js @@ -4,6 +4,13 @@ class Setup { const p = document.createElement("p") p.innerText = this.serviceWorkerStatus document.body.appendChild(p) + this.statusEl = p + const btn = document.createElement('button') + btn.addEventListener('click', () => this.unregister()) + btn.innerText = 'unregister' + const p2 = document.createElement('p') + document.body.appendChild(p2) + p2.appendChild(btn) } async register() { @@ -31,6 +38,27 @@ class Setup { console.error("serviceWorker not available") } } + + async unregister() { + if ('serviceWorker' in navigator) { + try { + const regs = await navigator.serviceWorker.getRegistrations() + const res = await Promise.allSettled( + regs.map(reg => reg.unregister()) + ) + this.serviceWorkerStatus = ( + res.every(pr => pr.status === 'fulfilled') ? + 'unregistered' : + 'error' + ) + } catch (err) { + console.error("error in unregister", err) + } + } else { + this.serviceWorkerStatus = 'unavailable' + } + this.statusEl.innerText = this.serviceWorkerStatus + } } new Setup().run() \ No newline at end of file