diff options
| author | Navan Chauhan <navanchauhan@gmail.com> | 2020-02-07 19:44:34 +0530 | 
|---|---|---|
| committer | Navan Chauhan <navanchauhan@gmail.com> | 2020-02-07 19:44:34 +0530 | 
| commit | bcdcb98b1cd8b25a1729ed186a2480b196588ef9 (patch) | |
| tree | b2ddec995b4fd523d2f18368abb1cc8a55ddff88 /assets | |
| parent | 02ee8a9c5812ca7aeeedd1f830229f25280487a4 (diff) | |
Publish deploy 2020-02-07 19:44
Diffstat (limited to 'assets')
| -rw-r--r-- | assets/serviceWorker/pwabuilder-sw-register.js | 19 | ||||
| -rw-r--r-- | assets/serviceWorker/pwabuilder-sw.js | 83 | 
2 files changed, 102 insertions, 0 deletions
| diff --git a/assets/serviceWorker/pwabuilder-sw-register.js b/assets/serviceWorker/pwabuilder-sw-register.js new file mode 100644 index 0000000..cd0acf3 --- /dev/null +++ b/assets/serviceWorker/pwabuilder-sw-register.js @@ -0,0 +1,19 @@ +// This is the service worker with the Cache-first network
 +
 +// Add this below content to your HTML page, or add the js file to your page at the very top to register service worker
 +
 +// Check compatibility for the browser we're running this in
 +if ("serviceWorker" in navigator) {
 +  if (navigator.serviceWorker.controller) {
 +    console.log("[PWA Builder] active service worker found, no need to register");
 +  } else {
 +    // Register the service worker
 +    navigator.serviceWorker
 +      .register("pwabuilder-sw.js", {
 +        scope: "./"
 +      })
 +      .then(function (reg) {
 +        console.log("[PWA Builder] Service worker has been registered for scope: " + reg.scope);
 +      });
 +  }
 +}
 diff --git a/assets/serviceWorker/pwabuilder-sw.js b/assets/serviceWorker/pwabuilder-sw.js new file mode 100644 index 0000000..0684da5 --- /dev/null +++ b/assets/serviceWorker/pwabuilder-sw.js @@ -0,0 +1,83 @@ +// This is the service worker with the Cache-first network
 +
 +const CACHE = "pwabuilder-precache";
 +const precacheFiles = [
 +  /* Add an array of files to precache for your app */
 +];
 +
 +self.addEventListener("install", function (event) {
 +  console.log("[PWA Builder] Install Event processing");
 +
 +  console.log("[PWA Builder] Skip waiting on install");
 +  self.skipWaiting();
 +
 +  event.waitUntil(
 +    caches.open(CACHE).then(function (cache) {
 +      console.log("[PWA Builder] Caching pages during install");
 +      return cache.addAll(precacheFiles);
 +    })
 +  );
 +});
 +
 +// Allow sw to control of current page
 +self.addEventListener("activate", function (event) {
 +  console.log("[PWA Builder] Claiming clients for current page");
 +  event.waitUntil(self.clients.claim());
 +});
 +
 +// If any fetch fails, it will look for the request in the cache and serve it from there first
 +self.addEventListener("fetch", function (event) { 
 +  if (event.request.method !== "GET") return;
 +
 +  event.respondWith(
 +    fromCache(event.request).then(
 +      function (response) {
 +        // The response was found in the cache so we responde with it and update the entry
 +
 +        // This is where we call the server to get the newest version of the
 +        // file to use the next time we show view
 +        event.waitUntil(
 +          fetch(event.request).then(function (response) {
 +            return updateCache(event.request, response);
 +          })
 +        );
 +
 +        return response;
 +      },
 +      function () {
 +        // The response was not found in the cache so we look for it on the server
 +        return fetch(event.request)
 +          .then(function (response) {
 +            // If request was success, add or update it in the cache
 +            event.waitUntil(updateCache(event.request, response.clone()));
 +
 +            return response;
 +          })
 +          .catch(function (error) {
 +            console.log("[PWA Builder] Network request failed and no cache." + error);
 +          });
 +      }
 +    )
 +  );
 +});
 +
 +function fromCache(request) {
 +  // Check to see if you have it in the cache
 +  // Return response
 +  // If not in the cache, then return
 +  return caches.open(CACHE).then(function (cache) {
 +    return cache.match(request).then(function (matching) {
 +      if (!matching || matching.status === 404) {
 +        return Promise.reject("no-match");
 +      }
 +
 +      return matching;
 +    });
 +  });
 +}
 +
 +function updateCache(request, response) {
 +  return caches.open(CACHE).then(function (cache) {
 +    return cache.put(request, response);
 +  });
 +}
 | 
