ente/src/serviceWorker.js
2021-08-13 08:17:10 +05:30

35 lines
1 KiB
JavaScript

import { precacheAndRoute, cleanupOutdatedCaches } from 'workbox-precaching';
import { registerRoute, setDefaultHandler } from 'workbox-routing';
import { NetworkOnly } from 'workbox-strategies';
import { pageCache, offlineFallback } from 'workbox-recipes';
pageCache();
precacheAndRoute(self.__WB_MANIFEST);
cleanupOutdatedCaches();
registerRoute(
'/share-target',
async ({ event }) => {
event.waitUntil(
(async function () {
const data = await event.request.formData();
const client = await self.clients.get(
event.resultingClientId || event.clientId
);
const files = data.getAll('files');
setTimeout(() => {
client.postMessage({ files, action: 'upload-files' });
}, 1000);
})()
);
return Response.redirect('./');
},
'POST'
);
// Use a stale-while-revalidate strategy for all other requests.
setDefaultHandler(new NetworkOnly());
offlineFallback();