Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
281eb1406f | ||
|
|
ef37c69076 |
+17
-2
@@ -232,9 +232,13 @@ async function requestWakeLock() {
|
|||||||
|
|
||||||
/* ---------- service worker ---------- */
|
/* ---------- service worker ---------- */
|
||||||
|
|
||||||
|
let swRegistration = null;
|
||||||
|
|
||||||
function registerServiceWorker() {
|
function registerServiceWorker() {
|
||||||
if (!('serviceWorker' in navigator)) return;
|
if (!('serviceWorker' in navigator)) return;
|
||||||
navigator.serviceWorker.register('./sw.js').catch((err) => console.warn('weerscherm: service worker', err));
|
navigator.serviceWorker.register('./sw.js')
|
||||||
|
.then((reg) => { swRegistration = reg; })
|
||||||
|
.catch((err) => console.warn('weerscherm: service worker', err));
|
||||||
let reloading = false;
|
let reloading = false;
|
||||||
navigator.serviceWorker.addEventListener('controllerchange', () => {
|
navigator.serviceWorker.addEventListener('controllerchange', () => {
|
||||||
if (reloading) return;
|
if (reloading) return;
|
||||||
@@ -243,6 +247,16 @@ function registerServiceWorker() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Vraagt de browser expliciet een nieuwe sw.js te controleren. Op een kiosk-scherm dat nooit navigeert
|
||||||
|
* (geen tabwissel, geen echte reload) gebeurt dat anders alleen impliciet en onvoorspelbaar laat — soms
|
||||||
|
* pas bij de volgende dagelijkse 04:00-reload. Met skipWaiting + clients.claim in sw.js activeert een
|
||||||
|
* gevonden update zich meteen, en de controllerchange-listener hierboven herlaadt de pagina dan vanzelf.
|
||||||
|
*/
|
||||||
|
function checkForUpdate() {
|
||||||
|
swRegistration?.update().catch(() => {});
|
||||||
|
}
|
||||||
|
|
||||||
/* ---------- start ---------- */
|
/* ---------- start ---------- */
|
||||||
|
|
||||||
window.addEventListener('resize', fit);
|
window.addEventListener('resize', fit);
|
||||||
@@ -252,7 +266,7 @@ document.addEventListener('visibilitychange', () => {
|
|||||||
fit();
|
fit();
|
||||||
refresh();
|
refresh();
|
||||||
requestWakeLock();
|
requestWakeLock();
|
||||||
registerServiceWorker();
|
checkForUpdate();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -260,6 +274,7 @@ fit();
|
|||||||
render();
|
render();
|
||||||
refresh();
|
refresh();
|
||||||
setInterval(refresh, REFRESH_MS);
|
setInterval(refresh, REFRESH_MS);
|
||||||
|
setInterval(checkForUpdate, REFRESH_MS);
|
||||||
scheduleClock();
|
scheduleClock();
|
||||||
scheduleMidnight();
|
scheduleMidnight();
|
||||||
scheduleReload();
|
scheduleReload();
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/* Service worker: app-shell cache-first, API network-first met timeout en fallback op de laatste response. */
|
/* Service worker: app-shell cache-first, API network-first met timeout en fallback op de laatste response. */
|
||||||
|
|
||||||
const VERSION = 'weerscherm-v2';
|
const VERSION = 'weerscherm-v3';
|
||||||
const SHELL = [
|
const SHELL = [
|
||||||
'./',
|
'./',
|
||||||
'./index.html',
|
'./index.html',
|
||||||
|
|||||||
Reference in New Issue
Block a user