// VIBN Service Worker — enables PWA install + basic offline shell
const CACHE = 'vibn-v1';

// Cache the app shell on install
self.addEventListener('install', (e) => {
  e.waitUntil(
    caches.open(CACHE).then(cache =>
      cache.addAll(['/', '/manifest.json'])
    )
  );
  self.skipWaiting();
});

self.addEventListener('activate', () => self.clients.claim());

// Network-first for API calls, cache-first for static assets
self.addEventListener('fetch', (e) => {
  const { request } = e;
  const url = new URL(request.url);

  // Never cache API calls
  if (url.pathname.startsWith('/api/')) return;

  // Cache-first for static assets
  if (
    request.destination === 'image' ||
    request.destination === 'font' ||
    url.pathname.startsWith('/_next/static/')
  ) {
    e.respondWith(
      caches.match(request).then(cached => {
        if (cached) return cached;
        return fetch(request).then(res => {
          const clone = res.clone();
          caches.open(CACHE).then(c => c.put(request, clone));
          return res;
        });
      })
    );
    return;
  }

  // Network-first for everything else (HTML pages)
  e.respondWith(
    fetch(request).catch(() => caches.match(request))
  );
});
