diff --git a/app/javascript/mastodon/service_worker/entry.js b/app/javascript/mastodon/service_worker/entry.js index 2435da1170..17b05a837b 100644 --- a/app/javascript/mastodon/service_worker/entry.js +++ b/app/javascript/mastodon/service_worker/entry.js @@ -32,8 +32,11 @@ self.addEventListener('fetch', function(event) { const asyncCache = openWebCache(); event.respondWith(asyncResponse.then( - response => asyncCache.then(cache => cache.put('/', response.clone())) - .then(() => response), + response => { + const clonedResponse = response.clone(); + asyncCache.then(cache => cache.put('/', clonedResponse)).catch(); + return response; + }, () => asyncCache.then(cache => cache.match('/')))); } else if (url.pathname === '/auth/sign_out') { const asyncResponse = fetch(event.request); @@ -58,14 +61,9 @@ self.addEventListener('fetch', function(event) { return asyncResponse.then(response => { if (response.ok) { - const put = cache.put(event.request.url, response.clone()); - - put.catch(() => freeStorage()); - - return put.then(() => { - freeStorage(); - return response; - }); + cache + .put(event.request.url, response.clone()) + .catch(()=>{}).then(freeStorage()).catch(); } return response;