Duffer Derek

Current Path : /var/www/sitesecurity.bitkit.dk/httpdocs/src/lib/
Upload File :
Current File : /var/www/sitesecurity.bitkit.dk/httpdocs/src/lib/serviceWorker.ts

// Service Worker Registration Utility
export const registerServiceWorker = async (): Promise<ServiceWorkerRegistration | null> => {
  if (typeof window === 'undefined' || !('serviceWorker' in navigator)) {
    console.warn('Service Worker not supported');
    return null;
  }

  try {
    // Check if service worker is already registered
    const existingRegistration = await navigator.serviceWorker.getRegistration('/');
    if (existingRegistration) {
      // console.log('Service Worker already registered:', existingRegistration);
      return existingRegistration;
    }

    const registration = await navigator.serviceWorker.register('/sw.js', {
      scope: '/'
    });

    // console.log('Service Worker registered successfully:', registration);

    // Wait for the service worker to be ready
    await navigator.serviceWorker.ready;
    // console.log('Service Worker is ready');

    // Handle updates
    registration.addEventListener('updatefound', () => {
      const newWorker = registration.installing;
      if (newWorker) {
        newWorker.addEventListener('statechange', () => {
          if (newWorker.state === 'installed' && navigator.serviceWorker.controller) {
            // New service worker is available
            // console.log('New service worker is available');
            // You can show a notification to the user here
          }
        });
      }
    });

    return registration;
  } catch (error) {
    console.error('Service Worker registration failed:', error);
    return null;
  }
};

export const unregisterServiceWorker = async (): Promise<boolean> => {
  if (typeof window === 'undefined' || !('serviceWorker' in navigator)) {
    return false;
  }

  try {
    const registrations = await navigator.serviceWorker.getRegistrations();
    
    for (const registration of registrations) {
      await registration.unregister();
    }

    // console.log('Service Worker unregistered successfully');
    return true;
  } catch (error) {
    console.error('Service Worker unregistration failed:', error);
    return false;
  }
};

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists