From 8ac8bced5bb98788ecd224da253a14b3193de8a4 Mon Sep 17 00:00:00 2001 From: tree Date: Sun, 5 Feb 2023 16:24:34 +0100 Subject: [PATCH] Update service-worker, show tag --- package-lock.json | 24 +++++++ package.json | 1 + src/lib/components/Footer.svelte | 3 +- src/lib/pbw.js | 3 +- src/routes/+layout.svelte | 31 +++++++- src/service-worker.js | 118 ++++++++++++++++++------------- 6 files changed, 126 insertions(+), 54 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5bdcf67c..a61489e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,6 +21,7 @@ "postcss": "^8.4.21", "prettier": "^2.8.3", "prettier-plugin-svelte": "^2.9.0", + "s-offline": "^0.5.1", "svelte": "^3.55.1", "svelte-markdown": "^0.2.3", "tailwindcss": "^3.2.4", @@ -2068,6 +2069,12 @@ "node": ">=0.10.0" } }, + "node_modules/ping.js": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ping.js/-/ping.js-0.3.0.tgz", + "integrity": "sha512-qisFwio7j0cwYbOcRL4BlTdxKALcpGPTkpl8ichGASgkrVqfI3sZfQDsP8wETR5rfutXZJLjlJ117aLkRnk2mA==", + "dev": true + }, "node_modules/playwright-core": { "version": "1.30.0", "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.30.0.tgz", @@ -2411,6 +2418,23 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/s-offline": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/s-offline/-/s-offline-0.5.1.tgz", + "integrity": "sha512-CD8OWW87Y2XYbPYqfKgeHF/4yv33A2RFrcD8stgxuL+QI+ydMcMTX6CtA6SRlbhAMKScwhvXCXDxBcwk4hqiPw==", + "dev": true, + "dependencies": { + "ping.js": "^0.3.0" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=9.0.0" + }, + "peerDependencies": { + "ping.js": "^0.3.0", + "svelte": "^3.53.1" + } + }, "node_modules/sade": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", diff --git a/package.json b/package.json index d2be56b3..83bb8654 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "postcss": "^8.4.21", "prettier": "^2.8.3", "prettier-plugin-svelte": "^2.9.0", + "s-offline": "^0.5.1", "svelte": "^3.55.1", "svelte-markdown": "^0.2.3", "tailwindcss": "^3.2.4", diff --git a/src/lib/components/Footer.svelte b/src/lib/components/Footer.svelte index 96eb110f..c1a5e0d9 100644 --- a/src/lib/components/Footer.svelte +++ b/src/lib/components/Footer.svelte @@ -55,8 +55,9 @@ href="https://github.com/utxo-foundation/prague-blockchain-week/commits/main" target="_blank" class="underline hover:no-underline" - >{formatDistanceToNow(new Date(bundle.time))} ago{formatDistanceToNow(new Date(bundle.__time || null))} ago + ({bundle.__tag})  |  { + console.log('event details: ', status); + }; $: homepage = !$page.params.type && @@ -12,7 +17,31 @@
-
+
+
+ {#if typeof window !== 'undefined'} + + +
+ + + +
+
Online
+
+ +
+ + + +
+
Offline
+
+
+ {/if} +
diff --git a/src/service-worker.js b/src/service-worker.js index 9fbf606c..d97c2fff 100644 --- a/src/service-worker.js +++ b/src/service-worker.js @@ -1,61 +1,77 @@ import { build, files, version } from '$service-worker'; - +import data from '$lib/data.json' assert { type: 'json' }; +import { config } from '$lib/pbw.js'; + // Create a unique cache name for this deployment const CACHE = `cache-${version}`; - + +const images = []; +for (const col in config.collections) { + if (config.collections[col].virtual) continue; + images.push(...data[col].map((x) => x.logo || x.photoUrl || x.photo).filter((e) => e)); +} +for (const ev of data.events) { + if (ev.speakers) { + images.push(...ev.speakers.map((s) => s.photoUrl).filter((x) => x)); + } +} + const ASSETS = [ - ...build, // the app itself - ...files // everything in `static` + ...build, // the app itself + ...files, // everything in `static` + ...images ]; - + +console.log(ASSETS); + self.addEventListener('install', (event) => { - // Create a new cache and add all files to it - async function addFilesToCache() { - const cache = await caches.open(CACHE); - await cache.addAll(ASSETS); - } - - event.waitUntil(addFilesToCache()); + // Create a new cache and add all files to it + async function addFilesToCache() { + const cache = await caches.open(CACHE); + await cache.addAll(ASSETS); + } + + event.waitUntil(addFilesToCache()); }); - + self.addEventListener('activate', (event) => { - // Remove previous cached data from disk - async function deleteOldCaches() { - for (const key of await caches.keys()) { - if (key !== CACHE) await caches.delete(key); - } - } - - event.waitUntil(deleteOldCaches()); + // Remove previous cached data from disk + async function deleteOldCaches() { + for (const key of await caches.keys()) { + if (key !== CACHE) await caches.delete(key); + } + } + + event.waitUntil(deleteOldCaches()); }); - + self.addEventListener('fetch', (event) => { - // ignore POST requests etc - if (event.request.method !== 'GET') return; - - async function respond() { - const url = new URL(event.request.url); - const cache = await caches.open(CACHE); - - // `build`/`files` can always be served from the cache - if (ASSETS.includes(url.pathname)) { - return cache.match(event.request); - } - - // for everything else, try the network first, but - // fall back to the cache if we're offline - try { - const response = await fetch(event.request); - - if (response.status === 200) { - cache.put(event.request, response.clone()); - } - - return response; - } catch { - return cache.match(event.request); - } - } - - event.respondWith(respond()); -}); \ No newline at end of file + // ignore POST requests etc + if (event.request.method !== 'GET') return; + + async function respond() { + const url = new URL(event.request.url); + const cache = await caches.open(CACHE); + + // `build`/`files` can always be served from the cache + if (ASSETS.includes(url.pathname)) { + return cache.match(event.request); + } + + // for everything else, try the network first, but + // fall back to the cache if we're offline + try { + const response = await fetch(event.request); + + if (response.status === 200) { + cache.put(event.request, response.clone()); + } + + return response; + } catch { + return cache.match(event.request); + } + } + + event.respondWith(respond()); +});