%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/management-fe/static/
Upload File :
Create Path :
Current File : /var/www/html/management-fe/static/swloader.js

(function () {
  let body;

  function showSampleNotification() {
    navigator.serviceWorker.getRegistration().then((reg) => {
      const options = {
        body: 'Notificamelo!',
        icon: 'static/img/icons/android-chrome-512x512.png',
        vibrate: [100, 50, 100],
        data: {
          dateOfArrival: Date.now(),
          primaryKey: 1,
        },
      };
      reg.showNotification('VUE Commit', options);
    });
  }

  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;
  }

  if ('serviceWorker' in navigator) {
    window.addEventListener('load', () => {
      navigator.serviceWorker.register('/sw.js')
        .then((registration) => {
          console.log('SW registered: ', registration);
          if ('Notification' in window) {
            if (Notification.permission === 'granted') {
              showSampleNotification();
              if ('PushManager' in window) {
                console.info('Notifiche push abilitate');
                return registration.pushManager.getSubscription()
                  .then((sub) => {
                    if (sub) {
                      console.log('Subscription object: ', sub);
                      return sub;
                    }
                    console.log('Not subscribed to push service!');
                    return registration.pushManager.subscribe({
                      userVisibleOnly: true,
                      applicationServerKey: urlB64ToUint8Array('BEibYAQBhAaq4wcONEz6Ow8QdspHTKf4S8sH9AZNTLXejCRVJGGbyRfaIEmu5j557MWQPpiNCyvFCc7GpWcnw-E'),
                    });
                  })
                  .catch((subscriptionError) => {
                    console.log('Subscription failed: ', subscriptionError);
                  });
              }
            } else if (Notification.permission === 'blocked') {
              console.log('Notification denied');
            } else {
              Notification.requestPermission((status) => {
                console.log('Notification permission status:', status);
              });
            }
          }
        })
        .then((subscription) => {
          const rawKey = subscription.getKey ? subscription.getKey('p256dh') : '';
          const key = rawKey ? btoa(String.fromCharCode.apply(null, new Uint8Array(rawKey))) : '';
          const rawAuthSecret = subscription.getKey ? subscription.getKey('auth') : '';
          const authSecret = rawAuthSecret ? btoa(String.fromCharCode.apply(null, new Uint8Array(rawAuthSecret))) : '';
          const endpoint = subscription.endpoint;
          body = {
            endpoint,
            key,
            authSecret,
          };
          console.log('Body Request: ', JSON.stringify(body));
          fetch('http://localhost:5000/v1/dashboard/register', {
            method: 'post',
            headers: {
              'Content-type': 'application/json',
            },
            body: JSON.stringify(body),
          });
        })
        .then((response) => {
          console.info('registration done', response);
        })
        .catch((registrationError) => {
          console.log('SW registration failed: ', registrationError);
        });
    });
  }
}(navigator, window));

Zerion Mini Shell 1.0