⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.19
Server IP:
178.33.27.10
Server:
Linux cpanel.dev-unit.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
Server Software:
Apache/2.4.57 (Unix) OpenSSL/1.0.2k-fips
PHP Version:
8.2.11
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
id
/
cms.dev-unit.com
/
assets
/
js
/
View File Name :
push-notification.js
'use strict'; $(window).on('load', function () { initSW(); }); function initSW() { if (!'serviceWorker' in navigator) { // service worker does not support return; } if (!'PushManager' in window) { // push does not support return; } // register the service worker if ('serviceWorker' in navigator) { navigator.serviceWorker.register('./sw.js') .then(() => { initPush(); }) .catch((error) => { }); } } function initPush() { if (!navigator.serviceWorker.ready) { return; } new Promise(function (resolve, reject) { const permissionResult = Notification.requestPermission().then(function (result) { resolve(result); }); if (permissionResult) { permissionResult.then(resolve, reject); } }).then((permissionResult) => { if (permissionResult !== 'granted') { throw new Error('Permission not granted!'); } subscribeGuest(); }); } function subscribeGuest() { navigator.serviceWorker.ready .then((registration) => { const subscribeOptions = { userVisibleOnly: true, applicationServerKey: urlBase64ToUint8Array(vapid_public_key) }; return registration.pushManager.subscribe(subscribeOptions); }) .then((pushSubscription) => { storePushSubscription(pushSubscription); }) .catch(error => { }); } function urlBase64ToUint8Array(base64String) { var padding = '='.repeat((4 - base64String.length % 4) % 4); var base64 = (base64String + padding) .replace(/\-/g, '+') .replace(/_/g, '/'); var rawData = window.atob(base64); var outputArray = new Uint8Array(rawData.length); for (var i = 0; i < rawData.length; ++i) { outputArray[i] = rawData.charCodeAt(i); } return outputArray; } function storePushSubscription(pushSubscription) { const token = document.querySelector('meta[name="csrf-token"]').getAttribute('content'); fetch(baseURL + '/push-notification/store-endpoint', { method: 'POST', body: JSON.stringify(pushSubscription), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', 'X-CSRF-Token': token } }).then((response) => { return response.json(); }).catch((error) => { }); }