- Ajout d'un bouton pour forcer la mise à jour (si coupure internet pdt le dl, il faut tout désinstaller et re-instalter...).
- Pour les grandes bibli, ajouter un visuel que l'appli est en train de charger les données en cache
This commit is contained in:
@@ -6,15 +6,10 @@ self.addEventListener('install', event => event.waitUntil(onInstall(event)));
|
||||
self.addEventListener('activate', event => event.waitUntil(onActivate(event)));
|
||||
self.addEventListener('fetch', event => event.respondWith(onFetch(event)));
|
||||
|
||||
// Mise à jour à la demande. Sans cela, un nouveau worker attend que TOUS les onglets de
|
||||
// l'application soient fermés — un onglet oublié fige indéfiniment l'utilisateur sur l'ancienne
|
||||
// version. C'est d'autant plus important ici que les empreintes des assets WASM sont désactivées
|
||||
// (voir CLAUDE.md) : ce worker est le SEUL mécanisme de cache-busting du projet.
|
||||
// Le message ne vient que de js/mise-a-jour.js, après un clic explicite : jamais tout seul, pour
|
||||
// ne pas mélanger deux versions au milieu d'une session.
|
||||
self.addEventListener('message', event => {
|
||||
if (event.data && event.data.type === 'SKIP_WAITING') self.skipWaiting();
|
||||
});
|
||||
// Comportement par défaut : pas de SKIP_WAITING. Un nouveau worker attend que TOUS les onglets
|
||||
// de l'application soient fermés avant de prendre la main — la mise à jour a lieu au prochain
|
||||
// lancement, jamais au milieu d'une session. Revenu en arrière le 2026-09-10 après un mécanisme
|
||||
// de mise à jour immédiate qui ne se montrait pas fiable en pratique (voir js/mise-a-jour.js).
|
||||
|
||||
const cacheNamePrefix = 'offline-cache-';
|
||||
const cacheName = `${cacheNamePrefix}${self.assetsManifest.version}`;
|
||||
@@ -46,10 +41,9 @@ async function onActivate(event) {
|
||||
.filter(key => key.startsWith(cacheNamePrefix) && key !== cacheName)
|
||||
.map(key => caches.delete(key)));
|
||||
|
||||
// Prendre la main sur les pages déjà ouvertes. skipWaiting() est censé le faire seul, mais
|
||||
// c'est ce qui déclenche `controllerchange`, donc le rechargement côté page : sans reprise
|
||||
// effective, le bouton « Mettre à jour » se grise et il ne se passe plus rien — symptôme
|
||||
// observé sur téléphone. Cet appel est sans effet quand la reprise a déjà eu lieu.
|
||||
// Sans effet sur les onglets déjà ouverts avant cette activation (ils ont fermé pour qu'elle
|
||||
// ait lieu) ; utile seulement pour la toute première installation, où aucun worker ne
|
||||
// contrôlait encore la page.
|
||||
await self.clients.claim();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user