diff options
author | Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp> | 2018-04-08 20:32:39 +0900 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2018-04-08 13:32:39 +0200 |
commit | 1ed1014546bcfef0d2441702673deab586f6bca0 (patch) | |
tree | 19955d6f747e13b594dd84514ecd2d9186d2f234 /app/javascript/mastodon/service_worker | |
parent | b83ce18b30d33c30b461f593ac4cd6e86057a365 (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.js | 13 |
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; |