48 lines
1.6 KiB
TypeScript
Raw Normal View History

2018-04-02 05:34:16 +00:00
import AnimeNotifier from "../AnimeNotifier"
2017-10-17 09:27:15 +00:00
// Enable notifications
export async function enableNotifications(arn: AnimeNotifier, button: HTMLElement) {
2018-03-29 10:14:46 +00:00
arn.statusMessage.showInfo("Enabling instant notifications...")
2017-10-17 09:27:15 +00:00
await arn.pushManager.subscribe(arn.user.dataset.id)
arn.updatePushUI()
2018-03-29 10:14:46 +00:00
arn.statusMessage.showInfo("Enabled instant notifications for this device.")
2017-10-17 09:27:15 +00:00
}
// Disable notifications
export async function disableNotifications(arn: AnimeNotifier, button: HTMLElement) {
2018-03-29 10:14:46 +00:00
arn.statusMessage.showInfo("Disabling instant notifications...")
2017-10-17 09:27:15 +00:00
await arn.pushManager.unsubscribe(arn.user.dataset.id)
arn.updatePushUI()
2018-03-29 10:14:46 +00:00
arn.statusMessage.showInfo("Disabled instant notifications for this device.")
2017-10-17 09:27:15 +00:00
}
// Test notification
2018-02-28 22:26:06 +00:00
export async function testNotification(arn: AnimeNotifier) {
2018-04-18 10:33:19 +00:00
arn.statusMessage.showInfo("Sending test notification...this might take a few seconds...")
2018-02-28 22:26:06 +00:00
await fetch("/api/test/notification", {
2017-10-17 09:27:15 +00:00
credentials: "same-origin"
})
2018-02-28 23:06:03 +00:00
}
// Mark notifications as seen
export async function markNotificationsAsSeen(arn: AnimeNotifier) {
await fetch("/api/mark/notifications/seen", {
credentials: "same-origin"
})
// Update notification counter
2018-03-20 17:29:10 +00:00
if("serviceWorker" in navigator) {
// If we have service worker support, broadcast the "notifications marked as seen" message to all open tabs
arn.serviceWorkerManager.postMessage({
type: "broadcast",
realType: "notifications marked as seen"
})
2018-03-20 17:29:10 +00:00
} else {
// If there is no service worker, update the counter on this tab
arn.notificationManager.update()
}
2018-02-28 23:06:03 +00:00
// Update notifications
arn.reloadContent()
2017-10-17 09:27:15 +00:00
}