peers syncing for a single user

This commit is contained in:
bobbydigitales
2024-09-20 20:54:54 -07:00
parent 88f5cb677b
commit 998840ec2c
17 changed files with 1099 additions and 733 deletions

View File

@@ -2,16 +2,16 @@
const cacheName = "dandelion_cache_v1";
const contentToCache = [
"/index.html",
"/main.js",
"/marked.min.js",
"/db.js",
"/bookerly.woff2",
"/virgil.woff2",
"/favicon.ico"
'/index.html',
'/main.css',
'/main.js',
'lib//marked.min.js',
'lib/qrcode.min.js',
'/db.js',
'/favicon.ico'
];
self.addEventListener("install", (e:any) => {
self.addEventListener("install", (e: any) => {
e.waitUntil(
(async () => {
const cache = await caches.open(cacheName);
@@ -24,49 +24,53 @@ self.addEventListener("install", (e:any) => {
);
});
self.addEventListener("fetch", (e:any) => {
e.respondWith(
(async () => {
const r = await caches.match(e.request);
if (r) {
console.log(
`[Service Worker] Cache hit for resource: ${e.request.url}`
);
return r;
}
async function responder(event: any) {
console.log('Fetching', event.request.url);
let response;
try {
console.log(
`[Service Worker] Cache miss, attempting to fetch resource: ${e.request.url}`
);
let response = await fetch(event.request);
response = await fetch(e.request);
} catch (e) {
console.warn(e);
}
const cache = await caches.open(cacheName);
console.log(
`[Service Worker] Adding resource to cache: ${e.request.url}`
);
if (!response) {
console.log('Fetch failed, falling back to cache', event.request.url);
let cacheMatch = await caches.match(event.request);
if (!cacheMatch) {
// DUnno what to return here!
}
return cacheMatch;
}
if (!response) {
throw new Error(`Failed to fetch resource: ${e.request.url}`)
}
cache.put(e.request, response.clone());
return response;
})()
);
if (response.status === 206) {
console.log('Not caching partial content');
return response;
}
console.log('Fetch successful, updating cache');
const cache = await caches.open(cacheName);
try {
cache.put(event.request, response.clone()).catch((error)=>console.log('failed to cache', event.request, error));
} catch (e) {
console.log('failed to cache', event.request)
}
return response;
}
self.addEventListener('fetch', function (event: any) {
event.respondWith(responder(event));
});
addEventListener("message", async (e) => {
console.log(`Message received: ${e.data}`);
console.log(`Message received:`, e.data);
switch (e.data.type) {
case "updateMain":
case "update_app":
const cache = await caches.open(cacheName);
console.log(`[Service Worker] Caching new resource: main.js`);
cache.put("/main.js", new Response());
console.log(`[Service Worker] Caching resources`);
// cache.put("/main.js", new Response());
for (let item of contentToCache) {
cache.delete(item);
}
await cache.addAll(contentToCache);
break;
}
});