summaryrefslogtreecommitdiff
path: root/pwabuilder-sw 2.js
diff options
context:
space:
mode:
authorNavan Chauhan <navanchauhan@gmail.com>2020-02-07 20:04:16 +0530
committerNavan Chauhan <navanchauhan@gmail.com>2020-02-07 20:04:16 +0530
commitfea552a35ee0b83f4977927d461e9577c8067562 (patch)
tree5405258cbdafbf52bdf2d66569ae7f7d4163d4de /pwabuilder-sw 2.js
parent3b3bde20c8dc66772a9f22b8679f8d1556a8b268 (diff)
Publish deploy 2020-02-07 20:04
Diffstat (limited to 'pwabuilder-sw 2.js')
-rw-r--r--pwabuilder-sw 2.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/pwabuilder-sw 2.js b/pwabuilder-sw 2.js
new file mode 100644
index 0000000..29c32b7
--- /dev/null
+++ b/pwabuilder-sw 2.js
@@ -0,0 +1,83 @@
+// This is the service worker with the Cache-first network
+
+const CACHE = "pwabuilder-precache";
+const precacheFiles = [
+ '/posts','/about/','/assets/'
+];
+
+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);
+ });
+}