From 15f935da81e17e5f6a9f0cd6d321d96801d3cb4e Mon Sep 17 00:00:00 2001 From: Navan Chauhan Date: Fri, 2 Oct 2020 19:26:57 +0530 Subject: Publish deploy 2020-10-02 19:26 --- pwabuilder-sw.js | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 pwabuilder-sw.js (limited to 'pwabuilder-sw.js') diff --git a/pwabuilder-sw.js b/pwabuilder-sw.js new file mode 100644 index 0000000..0684da5 --- /dev/null +++ b/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); + }); +} -- cgit v1.2.3