Skip to content
Snippets Groups Projects
serviceWorker.js 1.09 KiB
Newer Older
  • Learn to ignore specific revisions
  • /* eslint-disable no-undef */
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    const staticCacheName = 'ecolyo-v1'
    
    const urlsToCache = ['index.html', 'offline.html']
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    
    // Install SW
    self.addEventListener('install', event => {
      event.waitUntil(
        caches.open(staticCacheName).then(cache => {
          return cache.addAll(urlsToCache)
        })
      )
    })
    
    // Listen for requests
    
    self.addEventListener('fetch', event => {
    
      // Exception for Matomo & Sentry
      if (
        event.request.url.includes('statweb') ||
        event.request.url.includes('grandlyon.errors')
      ) {
    
      event.respondWith(
        caches.match(event.request).then(() => {
          return fetch(event.request).catch(() => caches.match('offline.html'))
        })
      )
    })
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    
    // Activate the SW
    
    self.addEventListener('activate', event => {
      const cacheWhitelist = []
      cacheWhitelist.push(staticCacheName)
    
      event.waitUntil(
        caches.keys().then(cacheNames =>
          Promise.all(
            cacheNames.map(cacheName => {
              if (!cacheWhitelist.includes(cacheName)) {
                return caches.delete(cacheName)
              }
            })
          )
        )
      )
    })