2025-12-17 11:12:10 +00:00
|
|
|
import { createRoot } from "react-dom/client";
|
|
|
|
|
import App from "./App.tsx";
|
|
|
|
|
import "./index.css";
|
|
|
|
|
|
2025-12-17 14:19:57 +00:00
|
|
|
// Registrar Service Worker para PWA
|
|
|
|
|
if ('serviceWorker' in navigator) {
|
|
|
|
|
window.addEventListener('load', () => {
|
2025-12-17 15:19:37 +00:00
|
|
|
// Detectar base path dinámicamente (para GitHub Pages)
|
|
|
|
|
const base = import.meta.env.BASE_URL || '/';
|
2025-12-17 14:19:57 +00:00
|
|
|
navigator.serviceWorker
|
2025-12-19 21:26:55 +00:00
|
|
|
.register(`${base}sw.js`, {
|
|
|
|
|
updateViaCache: 'none', // Siempre verificar actualizaciones del SW
|
|
|
|
|
})
|
2025-12-17 14:19:57 +00:00
|
|
|
.then((registration) => {
|
2025-12-19 21:26:55 +00:00
|
|
|
console.log('[SW] Registered:', registration.scope);
|
|
|
|
|
|
|
|
|
|
// Verificar actualizaciones periódicamente
|
|
|
|
|
const checkForUpdates = () => {
|
|
|
|
|
registration.update().catch((err) => {
|
|
|
|
|
console.log('[SW] Update check failed:', err);
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Verificar cada hora
|
|
|
|
|
setInterval(checkForUpdates, 60 * 60 * 1000);
|
|
|
|
|
|
|
|
|
|
// Verificar también cuando la página recupera el foco
|
|
|
|
|
document.addEventListener('visibilitychange', () => {
|
|
|
|
|
if (!document.hidden) {
|
|
|
|
|
checkForUpdates();
|
|
|
|
|
}
|
|
|
|
|
});
|
2025-12-17 14:19:57 +00:00
|
|
|
|
2025-12-19 21:26:55 +00:00
|
|
|
// Escuchar actualizaciones disponibles
|
|
|
|
|
registration.addEventListener('updatefound', () => {
|
|
|
|
|
const newWorker = registration.installing;
|
|
|
|
|
if (!newWorker) return;
|
|
|
|
|
|
|
|
|
|
newWorker.addEventListener('statechange', () => {
|
|
|
|
|
if (newWorker.state === 'installed' && navigator.serviceWorker.controller) {
|
|
|
|
|
// Hay una nueva versión instalada y esperando
|
|
|
|
|
console.log('[SW] New version available');
|
|
|
|
|
// El hook useServiceWorker manejará la notificación
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
});
|
2025-12-17 14:19:57 +00:00
|
|
|
})
|
|
|
|
|
.catch((error) => {
|
2025-12-19 21:26:55 +00:00
|
|
|
console.error('[SW] Registration failed:', error);
|
2025-12-17 14:19:57 +00:00
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-17 11:12:10 +00:00
|
|
|
createRoot(document.getElementById("root")!).render(<App />);
|