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) => {