| |
| |
| |
| |
| |
| |
| |
|
|
| |
| const isDevelopment = window.location.hostname === 'localhost' || |
| window.location.hostname === '127.0.0.1' || |
| window.location.port !== ''; |
|
|
| if (isDevelopment) { |
| console.log('[Dev Mode] Service Worker registration skipped in development'); |
| console.log('Service Worker will be active in production builds'); |
| } else if ('serviceWorker' in navigator) { |
| window.addEventListener('load', () => { |
| const swPath = `${import.meta.env.BASE_URL}sw.js`; |
| console.log('[SW] Registering Service Worker at:', swPath); |
| navigator.serviceWorker |
| .register(swPath) |
| .then((registration) => { |
| console.log('[SW] Service Worker registered successfully:', registration.scope); |
|
|
| setInterval(() => { |
| registration.update(); |
| }, 24 * 60 * 60 * 1000); |
|
|
| registration.addEventListener('updatefound', () => { |
| const newWorker = registration.installing; |
| if (newWorker) { |
| newWorker.addEventListener('statechange', () => { |
| if (newWorker.state === 'installed' && navigator.serviceWorker.controller) { |
| console.log('[SW] New version available! Reload to update.'); |
|
|
| if (confirm('A new version of BentoPDF is available. Reload to update?')) { |
| newWorker.postMessage({ type: 'SKIP_WAITING' }); |
| window.location.reload(); |
| } |
| } |
| }); |
| } |
| }); |
| }) |
| .catch((error) => { |
| console.error('[SW] Service Worker registration failed:', error); |
| }); |
|
|
| navigator.serviceWorker.addEventListener('controllerchange', () => { |
| console.log('[SW] New service worker activated, reloading...'); |
| window.location.reload(); |
| }); |
| }); |
| } |
|
|