aboutsummaryrefslogtreecommitdiff
path: root/src/services/push/push.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/services/push/push.js')
-rw-r--r--src/services/push/push.js17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/services/push/push.js b/src/services/push/push.js
index 1ac304d1..ff67fd5a 100644
--- a/src/services/push/push.js
+++ b/src/services/push/push.js
@@ -19,6 +19,12 @@ function registerServiceWorker () {
.catch((err) => console.error('Unable to register service worker.', err))
}
+function unregisterServiceWorker () {
+ return runtime.register()
+ .then((registration) => registration.unregister())
+ .catch((err) => console.error('Unable to unregister serviceworker', err))
+}
+
function subscribe (registration, isEnabled, vapidPublicKey) {
if (!isEnabled) return Promise.reject(new Error('Web Push is disabled in config'))
if (!vapidPublicKey) return Promise.reject(new Error('VAPID public key is not found'))
@@ -59,7 +65,7 @@ function sendSubscriptionToBackEnd (subscription, token) {
})
}
-export default function registerPushNotifications (isEnabled, vapidPublicKey, token) {
+export function registerPushNotifications (isEnabled, vapidPublicKey, token) {
if (isPushSupported()) {
registerServiceWorker()
.then((registration) => subscribe(registration, isEnabled, vapidPublicKey))
@@ -67,3 +73,12 @@ export default function registerPushNotifications (isEnabled, vapidPublicKey, to
.catch((e) => console.warn(`Failed to setup Web Push Notifications: ${e.message}`))
}
}
+
+export function unregisterPushNotifications (isEnabled, vapidPublicKey, token) {
+ if (isPushSupported()) {
+ unregisterServiceWorker()
+ .then((registration) => subscribe(registration, isEnabled, vapidPublicKey))
+ .then((subscription) => sendSubscriptionToBackEnd(subscription, token))
+ .catch((e) => console.warn(`Failed to setup Web Push Notifications: ${e.message}`))
+ }
+}