Duffer Derek
// 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