Newer
Older
Appli / pwa_sw.js
@Rpn2459 Rpn2459 on 28 May 1 KB Update pwa_sw.js
const CACHE = 'prop-immo-v2';
const ASSETS = [
  './',
  './proposition_commerciale.html',
  './pwa_manifest.json',
  './icon-192.png',
  './icon-512.png',
  'https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js',
  'https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js'
];

self.addEventListener('install', e => {
  e.waitUntil(
    caches.open(CACHE).then(c => c.addAll(ASSETS).catch(err => console.warn('Erreur mise en cache ASSETS:', err)))
  );
  self.skipWaiting();
});

self.addEventListener('activate', e => {
  e.waitUntil(
    caches.keys().then(keys =>
      Promise.all(keys.filter(k => k !== CACHE).map(k => caches.delete(k)))
    )
  );
  self.clients.claim();
});

self.addEventListener('fetch', e => {
  // NE PAS intercepter les téléchargements locaux (Blob, data) ni les schémas de messagerie (mailto)
  if (e.request.url.startsWith('blob:') || e.request.url.startsWith('data:') || e.request.url.includes('mailto:')) {
    return;
  }

  e.respondWith(
    fetch(e.request)
      .then(res => {
        if (!res || res.status !== 200 || res.type !== 'basic') return res;
        const clone = res.clone();
        caches.open(CACHE).then(c => c.put(e.request, clone));
        return res;
      })
      .catch(() => caches.match(e.request))
  );
});