const CACHE_NAME = 'ana-elmasry-calc-v16'; const ASSETS = [ 'Calculator.html', 'manifest.json', 'logo.png' ]; // التثبيت وحفظ كل الملفات في الكاش self.addEventListener('install', event => { event.waitUntil( caches.open(CACHE_NAME).then(cache => { return Promise.all( ASSETS.map(asset => { return cache.add(asset).catch(err => console.log('ملف لم يتم حفظه في الكاش:', asset)); }) ); }).then(() => self.skipWaiting()) ); }); // تفعيل وتنظيف الكاش القديم فوراً self.addEventListener('activate', event => { event.waitUntil( caches.keys().then(keys => { return Promise.all( keys.map(key => { if (key !== CACHE_NAME) { return caches.delete(key); } }) ); }).then(() => self.clients.claim()) ); }); // تشغيل التطبيق بالكامل من الكاش لو مفيش نت self.addEventListener('fetch', event => { event.respondWith( caches.match(event.request).then(cachedResponse => { // لو الملف موجود في الكاش رجعه، لو مش موجود اطلبه من النت if (cachedResponse) { return cachedResponse; } return fetch(event.request).catch(() => { // حماية إضافية: لو مفيش نت خالص والطلب هو الصفحة الرئيسية، افتح حاسبة كالكوليتور if (event.request.mode === 'navigate') { return caches.match('Calculator.html'); } }); }) ); }); self.addEventListener('message', event => { if (event.data && event.data.type === 'SKIP_WAITING') { self.skipWaiting(); } });