Ver Fonte

Fix service worker for disabled docs

Jasper van Merle há 6 anos atrás
pai
commit
96cadd449b
1 ficheiros alterados com 18 adições e 8 exclusões
  1. 18 8
      views/service-worker.js.erb

+ 18 - 8
views/service-worker.js.erb

@@ -35,15 +35,25 @@ self.addEventListener('fetch', event => {
     const cachedResponse = await caches.match(event.request);
     if (cachedResponse) return cachedResponse;
 
-    const url = new URL(event.request.url);
+    try {
+      const response = await fetch(event.request);
 
-    <%# Attempt to return the index page from the cache if the user is visiting a url like devdocs.io/offline or devdocs.io/javascript/global_objects/array/find %>
-    <%# The index page will handle the routing %>
-    if (url.origin === location.origin && !url.pathname.includes('.')) {
-      const cachedIndex = await caches.match('/');
-      if (cachedIndex) return cachedIndex;
-    }
+      if (!response.ok) {
+        throw new Error(`The HTTP request failed with status code ${response.status}`);
+      }
+
+      return response;
+    } catch (err) {
+      const url = new URL(event.request.url);
 
-    return fetch(event.request);
+      <%# Attempt to return the index page from the cache if the user is visiting a url like devdocs.io/offline or devdocs.io/javascript/global_objects/array/find %>
+      <%# The index page will make sure the correct documentation or a proper offline page is shown  %>
+      if (url.origin === location.origin && !url.pathname.includes('.')) {
+        const cachedIndex = await caches.match('/');
+        if (cachedIndex) return cachedIndex;
+      }
+
+      throw err;
+    }
   })());
 });