You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.2 KiB
JavaScript
36 lines
1.2 KiB
JavaScript
|
3 years ago
|
class Setup {
|
||
|
|
async run() {
|
||
|
|
await this.register()
|
||
|
|
const p = document.createElement("p")
|
||
|
|
p.innerText = this.serviceWorkerStatus
|
||
|
|
document.body.appendChild(p)
|
||
|
|
}
|
||
|
|
|
||
|
|
async register() {
|
||
|
|
this.serviceWorkerStatus = "unavailable"
|
||
|
|
if ("serviceWorker" in navigator) {
|
||
|
|
try {
|
||
|
|
this.registration = navigator.serviceWorker.register(
|
||
|
|
"/sw.js",
|
||
|
|
{scope: "/"}
|
||
|
|
)
|
||
|
|
if (this.registration.installing) {
|
||
|
|
this.serviceWorkerStatus = "installing"
|
||
|
|
} else if (this.registration.waiting) {
|
||
|
|
this.serviceWorkerStatus = "waiting"
|
||
|
|
} else if (this.registration.active) {
|
||
|
|
this.serviceWorkerStatus = "active"
|
||
|
|
} else {
|
||
|
|
this.serviceWorkerStatus = "unknown"
|
||
|
|
}
|
||
|
|
} catch (err) {
|
||
|
|
console.error("error registering service worker", err)
|
||
|
|
this.serviceWorkerStatus = "error"
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
console.error("serviceWorker not available")
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
new Setup().run()
|