UNPKG

@digipair/skill-web-push-notification

Version:

48 lines (46 loc) 1.99 kB
let WebHttpNotificationService = class WebHttpNotificationService { async registerServiceWorker(serviceWorkerPath) { if (!('serviceWorker' in navigator)) { console.log('Service Worker not supported in this browser'); return null; } try { const registration = await navigator.serviceWorker.register(serviceWorkerPath); return registration; } catch (error) { console.error('Error when registering the Service Worker', error); return null; } } async subscribeToPushNotifications(registration, vapidPublicKey) { if (!('PushManager' in window)) { console.log('Push Manager not supported in this browser'); return null; } try { const permission = await Notification.requestPermission(); if (permission !== 'granted') { console.log('Notification permission not granted'); return null; } const subscription = await registration.pushManager.subscribe({ userVisibleOnly: true, applicationServerKey: vapidPublicKey }); return subscription; } catch (error) { console.error('Error when subscribing to push notifications', error); return null; } } async initialize(params, _pinsSettingsList, context) { const { SERVICE_WORKER_PATH = '/public/push-notification.worker.js', publicKey = context.variables.PUSH_NOTIFICATION_PUBLIC_KEY } = params; const registration = await this.registerServiceWorker(SERVICE_WORKER_PATH); if (registration) { return await this.subscribeToPushNotifications(registration, publicKey); } return null; } }; const initialize = (params, pinsSettingsList, context)=>new WebHttpNotificationService().initialize(params, pinsSettingsList, context); export { initialize };