40 lines
1.5 KiB
JavaScript
40 lines
1.5 KiB
JavaScript
const KEY_UPDATES_ENABLED = "updatesEnabled"
|
|
|
|
const canReceiveUpdates = "Notification" in window && "serviceWorker" in navigator
|
|
const getSummaryButton = document.getElementById("get-summary-btn")
|
|
const loc = getSummaryButton.dataset.loc
|
|
getSummaryButton.style.display = "none"
|
|
|
|
console.log("can receive updates?", canReceiveUpdates)
|
|
|
|
if (canReceiveUpdates) {
|
|
window.addEventListener("load", () => {
|
|
navigator.serviceWorker.register("/sw.js")
|
|
})
|
|
|
|
navigator.serviceWorker.ready.then((reg) => {
|
|
if (Notification.permission === "granted" && localStorage.getItem(KEY_UPDATES_ENABLED) === "true") {
|
|
getSummaryButton.innerText = "Stop updates"
|
|
reg.active.postMessage(loc)
|
|
} else {
|
|
getSummaryButton.innerText = "Get daily updates at 7am"
|
|
}
|
|
|
|
getSummaryButton.addEventListener("click", async () => {
|
|
const currentlyEnabled = localStorage.getItem(KEY_UPDATES_ENABLED) === "true"
|
|
const worker = await navigator.serviceWorker.ready
|
|
if (currentlyEnabled) {
|
|
localStorage.removeItem(KEY_UPDATES_ENABLED)
|
|
worker.active.postMessage("cancel")
|
|
} else if (await Notification.requestPermission()) {
|
|
localStorage.setItem(KEY_UPDATES_ENABLED, "true")
|
|
worker.active.postMessage(loc)
|
|
} else {
|
|
console.log("notification denied")
|
|
}
|
|
})
|
|
|
|
getSummaryButton.style.display = "block"
|
|
})
|
|
}
|