document.addEventListener('DOMContentLoaded', function () { if ('serviceWorker' in navigator && 'PushManager' in window) { navigator.serviceWorker.register('/service-worker.js') .then(function (swReg) { console.log('Service Worker Registered', swReg); swReg.pushManager.getSubscription() .then(function (subscription) { if (!subscription) { subscribeUser(swReg); } }); }) .catch(function(error) { console.log('Service Worker registration failed:', error); }); } // Get the client website's URL const clientWebsiteUrl = window.location.origin; function subscribeUser(swReg) { const applicationServerKey = "BGBArDKpjuuu4HhzaHbdXeHGHm71_enqv5iTS4Y6EvI8ppLgZJojzvD9CQhVCCNMYK4liuL0QEvP6cGk3Zz6Z58"; swReg.pushManager.subscribe({ userVisibleOnly: true, applicationServerKey: applicationServerKey }) .then(function (subscription) { console.log('User is subscribed:', subscription); updateSubscriptionOnServer(subscription); }) .catch(function (err) { console.log('Failed to subscribe the user: ', err); }); } // function urlB64ToUint8Array(base64String) { // const padding = '='.repeat((4 - base64String.length % 4) % 4); // const base64 = (base64String + padding) // .replace(/\-/g, '+') // .replace(/_/g, '/'); // const rawData = window.atob(base64); // const outputArray = new Uint8Array(rawData.length); // for (let i = 0; i < rawData.length; ++i) { // outputArray[i] = rawData.charCodeAt(i); // } // return outputArray; // } function updateSubscriptionOnServer(subscription) { // Send subscription to the server using your preferred method fetch('https://app.goequi.com/api/save-push-notification-sub', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ subscription: subscription, clientUrl: clientWebsiteUrl }), }); } });