Mercurial
comparison mrjunejune/src/public/pwa-register.js @ 273:e02e2036ef84 default tip
add Layer 2 JRPG component system
Add reusable content and window modals, an isolated component sandbox, shared cyberpunk scroll areas, production-safe cache freshness, and server-rendered JRPG panel state.
Co-authored-by: Copilot <[email protected]>
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Sat, 08 Aug 2026 02:08:08 -0700 |
| parents | 60a876c4587a |
| children |
comparison
equal
deleted
inserted
replaced
| 272:41a49c29a28f | 273:e02e2036ef84 |
|---|---|
| 3 window.addEventListener('load', () => { | 3 window.addEventListener('load', () => { |
| 4 navigator.serviceWorker | 4 navigator.serviceWorker |
| 5 .register('/sw.js', { scope: '/' }) | 5 .register('/sw.js', { scope: '/' }) |
| 6 .then((registration) => { | 6 .then((registration) => { |
| 7 // console.log('[PWA] Service Worker registered:', registration.scope); | 7 // console.log('[PWA] Service Worker registered:', registration.scope); |
| 8 void registration.update(); | |
| 8 | 9 |
| 9 // Check for updates periodically | 10 // Check for updates periodically |
| 10 setInterval(() => { | 11 setInterval(() => { |
| 11 registration.update(); | 12 registration.update(); |
| 12 }, 60000); // Check every minute | 13 }, 60000); // Check every minute |
| 14 // Handle updates | 15 // Handle updates |
| 15 registration.addEventListener('updatefound', () => { | 16 registration.addEventListener('updatefound', () => { |
| 16 const newWorker = registration.installing; | 17 const newWorker = registration.installing; |
| 17 newWorker.addEventListener('statechange', () => { | 18 newWorker.addEventListener('statechange', () => { |
| 18 if (newWorker.state === 'installed' && navigator.serviceWorker.controller) { | 19 if (newWorker.state === 'installed' && navigator.serviceWorker.controller) { |
| 19 // New content available, show update notification | 20 newWorker.postMessage({ type: 'SKIP_WAITING' }); |
| 20 if (confirm('New version available! Reload to update?')) { | |
| 21 newWorker.postMessage({ type: 'SKIP_WAITING' }); | |
| 22 window.location.reload(); | |
| 23 } | |
| 24 } | 21 } |
| 25 }); | 22 }); |
| 26 }); | 23 }); |
| 27 }) | 24 }) |
| 28 .catch((error) => { | 25 .catch((error) => { |