| |
| const CACHE_NAME = 'mariam-ai-cache-v1'; |
|
|
| |
| const CACHE_ASSETS = [ |
| '/', |
| '/static/css/style.css', |
| '/static/js/chat.js', |
| '/static/icons/icon-192x192.png', |
| '/static/icons/icon-512x512.png', |
| '/static/manifest.json' |
| ]; |
|
|
| |
| self.addEventListener('install', (event) => { |
| event.waitUntil( |
| caches.open(CACHE_NAME) |
| .then((cache) => { |
| return cache.addAll(CACHE_ASSETS); |
| }) |
| .then(() => self.skipWaiting()) |
| ); |
| }); |
|
|
| |
| self.addEventListener('activate', (event) => { |
| const currentCaches = [CACHE_NAME]; |
| event.waitUntil( |
| caches.keys().then((cacheNames) => { |
| return cacheNames.filter((cacheName) => !currentCaches.includes(cacheName)); |
| }).then((cachesToDelete) => { |
| return Promise.all(cachesToDelete.map((cacheToDelete) => { |
| return caches.delete(cacheToDelete); |
| })); |
| }).then(() => self.clients.claim()) |
| ); |
| }); |
|
|
| |
| self.addEventListener('fetch', (event) => { |
| |
| if (event.request.url.includes('/api/')) { |
| return; |
| } |
| |
| event.respondWith( |
| caches.match(event.request) |
| .then((response) => { |
| |
| if (response) { |
| return response; |
| } |
| |
| |
| return fetch(event.request).then( |
| (response) => { |
| |
| if(!response || response.status !== 200 || response.type !== 'basic') { |
| return response; |
| } |
| |
| |
| const responseToCache = response.clone(); |
| |
| caches.open(CACHE_NAME) |
| .then((cache) => { |
| cache.put(event.request, responseToCache); |
| }); |
| |
| return response; |
| } |
| ); |
| }) |
| ); |
| }); |