Skip to content
Snippets Groups Projects
Commit f0cd957c authored by Akihiko Odaki's avatar Akihiko Odaki Committed by Eugen Rochko
Browse files

Cache HTML page with Service Worker (#6802)

This is the first step to make Mastodon work offline. It is also required
by Chromium to trigger Web Manifest automated install prompt.
parent 64fc8d2b
No related branches found
No related tags found
No related merge requests found
import './web_push_notifications';
function fetchRoot() {
return fetch('/', { credentials: 'include' });
}
// Cause a new version of a registered Service Worker to replace an existing one
// that is already installed, and replace the currently active worker on open pages.
self.addEventListener('install', function(event) {
event.waitUntil(self.skipWaiting());
const promises = Promise.all([caches.open('mastodon-web'), fetchRoot()]);
const asyncAdd = promises.then(([cache, root]) => cache.put('/', root));
event.waitUntil(asyncAdd);
});
self.addEventListener('activate', function(event) {
event.waitUntil(self.clients.claim());
});
self.addEventListener('fetch', function(event) {
const url = new URL(event.request.url);
if (url.pathname.startsWith('/web/')) {
event.respondWith(fetchRoot().then(response => {
if (response.ok) {
return response;
}
throw null;
}).catch(() => caches.match('/')));
}
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment