about summary refs log tree commit diff
path: root/app/javascript/mastodon/service_worker
diff options
context:
space:
mode:
authorAkihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>2018-04-08 20:32:39 +0900
committerEugen Rochko <eugen@zeonfederated.com>2018-04-08 13:32:39 +0200
commit1ed1014546bcfef0d2441702673deab586f6bca0 (patch)
tree19955d6f747e13b594dd84514ecd2d9186d2f234 /app/javascript/mastodon/service_worker
parentb83ce18b30d33c30b461f593ac4cd6e86057a365 (diff)
Free stroage if it is exceeding disk quota (#7061)
Diffstat (limited to 'app/javascript/mastodon/service_worker')
-rw-r--r--app/javascript/mastodon/service_worker/entry.js13
1 files changed, 10 insertions, 3 deletions
diff --git a/app/javascript/mastodon/service_worker/entry.js b/app/javascript/mastodon/service_worker/entry.js
index 160c3fbf2..ba54ae996 100644
--- a/app/javascript/mastodon/service_worker/entry.js
+++ b/app/javascript/mastodon/service_worker/entry.js
@@ -1,3 +1,4 @@
+import { freeStorage } from '../storage/modifier';
 import './web_push_notifications';
 
 function openSystemCache() {
@@ -42,8 +43,10 @@ self.addEventListener('fetch', function(event) {
 
     event.respondWith(asyncResponse.then(async response => {
       if (response.ok || response.type === 'opaqueredirect') {
-        const cache = await asyncCache;
-        await cache.delete('/');
+        await Promise.all([
+          asyncCache.then(cache => cache.delete('/')),
+          indexedDB.deleteDatabase('mastodon'),
+        ]);
       }
 
       return response;
@@ -56,7 +59,11 @@ self.addEventListener('fetch', function(event) {
         const fetched = await fetch(event.request);
 
         if (fetched.ok) {
-          await cache.put(event.request.url, fetched.clone());
+          try {
+            await cache.put(event.request.url, fetched.clone());
+          } finally {
+            freeStorage();
+          }
         }
 
         return fetched;