// Service worker for Second Brain PWA
const CACHE_NAME = 'second-brain-v1';

// Cache static assets on install
self.addEventListener('install', (event) => {
    caches.open(CACHE_NAME).then(cache => {
        return cache.addAll([
            '/',
            '/static/style.css',
            '/static/script.js',
            '/static/manifest.json',
            '/static/favicon.svg',
        ]);
    });
    self.skipWaiting();
});

// Activate and clean old caches
self.addEventListener('activate', (event) => {
    event.waitUntil(
        caches.keys().then(keys =>
            Promise.all(
                keys.filter(k => k !== CACHE_NAME).map(k => caches.delete(k))
            )
        )
    );
    self.clients.claim();
});

// Network-first with cache fallback for API calls
self.addEventListener('fetch', (event) => {
    if (event.request.url.includes('/api/')) {
        event.respondWith(
            fetch(event.request).catch(() => caches.match(event.request))
        );
        return;
    }
    event.respondWith(
        caches.match(event.request).then(cached =>
            cached || fetch(event.request).then(response => {
                if (response.status === 200) {
                    const clone = response.clone();
                    caches.open(CACHE_NAME).then(cache => cache.put(event.request, clone));
                }
                return response;
            }).catch(() => cached)
        )
    );
});