// sw.js - Simple Service Worker const CACHE_NAME = 'zinky-user-v1'; const CACHE_FILES = [ '/', '/index.php', '/login.php', '/register.php', '/dashboard.php', '/book-service.php', '/services.php', '/contact.php', '/offline.php', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css' ]; // Install self.addEventListener('install', event => { event.waitUntil( caches.open(CACHE_NAME) .then(cache => cache.addAll(CACHE_FILES)) .then(() => self.skipWaiting()) ); }); // Activate self.addEventListener('activate', event => { event.waitUntil( caches.keys().then(cacheNames => { return Promise.all( cacheNames .filter(name => name !== CACHE_NAME) .map(name => caches.delete(name)) ); }).then(() => self.clients.claim()) ); }); // Fetch - Network First, then Cache self.addEventListener('fetch', event => { // Skip admin pages if (event.request.url.includes('/admin/')) { return; } event.respondWith( fetch(event.request) .then(response => { const responseClone = response.clone(); caches.open(CACHE_NAME) .then(cache => cache.put(event.request, responseClone)); return response; }) .catch(() => { return caches.match(event.request) .then(cached => cached || caches.match('/offline.php')); }) ); });