mirror of
https://github.com/9001/copyparty.git
synced 2026-06-20 05:02:28 -06:00
PWA: serviceworker wip
This commit is contained in:
parent
d80f3b76c5
commit
4ce26d337a
|
|
@ -336,6 +336,7 @@ class HttpCli(object):
|
|||
"""returns true if connection can be reused"""
|
||||
self.out_headers = {
|
||||
"Cache-Control": "no-store, max-age=0",
|
||||
"Service-Worker-Allowed": "/",
|
||||
}
|
||||
|
||||
if self.args.early_ban and self.is_banned():
|
||||
|
|
|
|||
|
|
@ -1,10 +1,13 @@
|
|||
// service worker. required for PWAs
|
||||
// https://www.digitalapplied.com/blog/progressive-web-apps-2026-pwa-performance-guide
|
||||
// Register service worker on page load
|
||||
console.log('sw.js')
|
||||
if ('serviceWorker' in navigator) {
|
||||
console.log('sw load')
|
||||
self.addEventListener("fetch", (event) => {
|
||||
// Regular requests not related to Web Share Target.
|
||||
if (event.request.method !== "POST" || !event.request.action.has("share-target")) {
|
||||
console.log('normal response')
|
||||
event.respondWith(fetch(event.request));
|
||||
return;
|
||||
}
|
||||
|
|
@ -12,15 +15,41 @@ if ('serviceWorker' in navigator) {
|
|||
// Requests related to Web Share Target.
|
||||
event.respondWith(
|
||||
(async () => {
|
||||
const formData = await event.request.formData();
|
||||
const files = formData.get("files") || "";
|
||||
const responseUrl = '/'; // (ToDo: remember last upload dir)
|
||||
// ToDo: keep file references in clipboard
|
||||
// -> upload on paste
|
||||
event.respondWith(fetch(event.request));
|
||||
alert(files);
|
||||
return;
|
||||
const formData = await event.request.formData();
|
||||
const files = formData.get("files") || "";
|
||||
console.log('sw share:')
|
||||
console.log(files)
|
||||
await addResourcesToCache(files)
|
||||
|
||||
// const responseUrl = '/'; // (ToDo: remember last upload dir)
|
||||
// ToDo: keep file references in clipboard
|
||||
// (maybe read from cache on page load somehow)
|
||||
// -> upload on paste
|
||||
|
||||
// Copy existing headers
|
||||
const headers = new Headers(event.request.headers);
|
||||
|
||||
// Set a new header
|
||||
var pw = await CookieStore.get('cppwd');
|
||||
headers.set('pw', pw);
|
||||
|
||||
headers.delete('origin'); // 99% sure this doesn't work, but hey
|
||||
|
||||
const newRequest = new Request(event.request, {
|
||||
mode: 'cors',
|
||||
credentials: 'omit',
|
||||
headers: headers
|
||||
})
|
||||
return fetch(newRequest)
|
||||
})(),
|
||||
);
|
||||
});
|
||||
self.addEventListener('install', (event) => {
|
||||
console.log('sw wait skip')
|
||||
self.skipWaiting(); // insta replace old service workers (helpful for dev)
|
||||
});
|
||||
const addResourcesToCache = async (resources) => {
|
||||
const cache = await caches.open("files");
|
||||
await cache.addAll(resources);
|
||||
};
|
||||
}
|
||||
Loading…
Reference in a new issue