const CACHE_NAME = 'espacioapp-v3'; // Subimos a v3 para detonar la actualización automática

// Guardamos tanto la raíz (/) como el archivo directo (index.html)
const urlsToCache = [
  './', 
  'index.html',
  'css/style.css',
  'js/main.js'
];

// 1. INSTALACIÓN: Guardar archivos base y tomar el control inmediatamente
self.addEventListener('install', event => {
  self.skipWaiting(); // ¡Clave! Obliga al nuevo SW a instalarse sin esperar a que el usuario cierre todas las pestañas
  event.waitUntil(
    caches.open(CACHE_NAME).then(cache => {
      return cache.addAll(urlsToCache);
    })
  );
});

// 2. ACTIVACIÓN: El "Camión de Basura". Destruye cualquier bóveda vieja (v1, v2...)
self.addEventListener('activate', event => {
  event.waitUntil(
    caches.keys().then(cacheNames => {
      return Promise.all(
        cacheNames.map(cacheName => {
          if (cacheName !== CACHE_NAME) {
            console.log('Borrando caché antiguo de EspacioApp:', cacheName);
            return caches.delete(cacheName); // Elimina el caché viejo sin piedad
          }
        })
      );
    }).then(() => self.clients.claim()) // Toma el control de la página en ese mismo instante
  );
});

// 3. ESTRATEGIA FETCH: "Internet Primero, Caché como Respaldo"
self.addEventListener('fetch', event => {
  // Ignorar peticiones que no sean GET (como el envío de formularios o subida de fotos POST)
  if (event.request.method !== 'GET') return;

  event.respondWith(
    fetch(event.request)
      .then(response => {
        // Si hay internet y todo salió bien, guardamos una copia fresca en la bóveda silenciosamente
        if (response && response.status === 200 && response.type === 'basic') {
          const responseToCache = response.clone();
          caches.open(CACHE_NAME).then(cache => {
            cache.put(event.request, responseToCache);
          });
        }
        return response; // Le mostramos al usuario la versión web real (actualizada)
      })
      .catch(() => {
        // Si el usuario no tiene internet, lo rescatamos buscando en la bóveda
        return caches.match(event.request);
      })
  );
});