const CACHE_NAME = 'my-site-cache-v1';
const urlsToCache = [
    '/',
    'index.html',
    'editor.html',
    'asset/styles/editor.css',
    'asset/styles/index.css',
    'asset/scripts/editor.js',
    'asset/scripts/index.js',
    'asset/scripts/exercises.js',
    'asset/libs/docx.js',
    'asset/libs/html2canvas.min.js',
    'asset/libs/jspdf.umd.min.js',
    'asset/libs/jszip.min.js',
    'asset/fonts/IRANSansWeb_Bold.ttf',
    'asset/fonts/IRANSansWeb_Medium.ttf',
    'asset/fonts/IRANSansWeb_Light.ttf',
    // مسیر فایل‌های CSS و JS دیگر را اضافه کنید
    // برای عکس‌ها می‌توانید الگو اضافه کنید
];

// نصب Service Worker و کش کردن فایل‌های اصلی
self.addEventListener('install', event => {
    event.waitUntil(
        caches.open(CACHE_NAME)
            .then(cache => {
                console.log('Opened cache');
                return cache.addAll(urlsToCache);
            })
    );
});

// استراتژی Cache First برای عکس‌ها
self.addEventListener('fetch', event => {
    // برای عکس‌ها
    if (event.request.url.match(/\.(jpg|jpeg|png|gif|webp)$/)) {
        event.respondWith(
            caches.match(event.request)
                .then(response => {
                    if (response) {
                        return response;
                    }
                    return fetch(event.request)
                        .then(response => {
                            const responseToCache = response.clone();
                            caches.open(CACHE_NAME)
                                .then(cache => {
                                    cache.put(event.request, responseToCache);
                                });
                            return response;
                        });
                })
        );
    }
    // برای سایر فایل‌ها
    else {
        event.respondWith(
            fetch(event.request)
                .catch(() => {
                    return caches.match(event.request);
                })
        );
    }
});

// پاکسازی کش قدیمی
self.addEventListener('activate', event => {
    const cacheWhitelist = [CACHE_NAME];
    event.waitUntil(
        caches.keys().then(cacheNames => {
            return Promise.all(
                cacheNames.map(cacheName => {
                    if (cacheWhitelist.indexOf(cacheName) === -1) {
                        return caches.delete(cacheName);
                    }
                })
            );
        })
    );
});