From 8d7104f551ecc3c1277a0a0615e41e1ddf67950a Mon Sep 17 00:00:00 2001 From: Navan Chauhan Date: Fri, 7 Feb 2020 19:44:34 +0530 Subject: Publish deploy 2020-02-07 19:44 --- assets/serviceWorker/pwabuilder-sw-register.js | 19 ++++++ assets/serviceWorker/pwabuilder-sw.js | 83 ++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 assets/serviceWorker/pwabuilder-sw-register.js create mode 100644 assets/serviceWorker/pwabuilder-sw.js (limited to 'assets/serviceWorker') 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); + }); +} -- cgit v1.2.3