// ============================================================================
// Service Worker de AUTO-LIMPIEZA (kill switch)
// ----------------------------------------------------------------------------
// El SW anterior (PWA experimental) usaba estrategia cache-first para todo:
//  - servía HTML/JS obsoletos tras cada deploy ("los cambios no se ven"),
//  - intentaba cache.put() sobre POSTs (TypeError) rompiendo peticiones Livewire,
//  - su precache incluía /css/app.css y /js/app.js, que no existen con Vite,
//    haciendo fallar la instalación (Failed to execute 'addAll' on 'Cache').
//
// Este SW sustituye al anterior en cuanto el navegador lo actualiza:
// borra TODOS los caches, se desregistra y recarga las pestañas abiertas.
// Mantener este fichero publicado un tiempo para que todos los clientes
// que tengan la PWA vieja instalada se limpien solos.
// ============================================================================

self.addEventListener('install', () => {
  self.skipWaiting();
});

self.addEventListener('activate', (event) => {
  event.waitUntil((async () => {
    // 1) Borrar todos los caches que dejó la versión anterior
    const keys = await caches.keys();
    await Promise.all(keys.map((key) => caches.delete(key)));

    // 2) Desregistrarse
    await self.registration.unregister();

    // 3) Recargar las pestañas controladas para que salgan del SW
    const clients = await self.clients.matchAll({ type: 'window' });
    clients.forEach((client) => client.navigate(client.url));
  })());
});
