peers syncing for a single user
This commit is contained in:
72
sw.js
72
sw.js
@@ -2,13 +2,13 @@
|
||||
// Establish a cache name
|
||||
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) => {
|
||||
e.waitUntil((async () => {
|
||||
@@ -17,37 +17,45 @@ self.addEventListener("install", (e) => {
|
||||
await cache.addAll(contentToCache);
|
||||
})());
|
||||
});
|
||||
self.addEventListener("fetch", (e) => {
|
||||
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) {
|
||||
console.log('Fetching', event.request.url);
|
||||
let response = await fetch(event.request);
|
||||
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!
|
||||
}
|
||||
let response;
|
||||
try {
|
||||
console.log(`[Service Worker] Cache miss, attempting to fetch resource: ${e.request.url}`);
|
||||
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) {
|
||||
throw new Error(`Failed to fetch resource: ${e.request.url}`);
|
||||
}
|
||||
cache.put(e.request, response.clone());
|
||||
return cacheMatch;
|
||||
}
|
||||
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) {
|
||||
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;
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user