// Enregistrement du service worker — comportement par défaut de Blazor : un nouveau worker // attend que tous les onglets de l'application soient fermés avant de prendre la main. Pas de // SKIP_WAITING, pas de rechargement forcé, pas de bandeau : la mise à jour a lieu au prochain // lancement de l'application, silencieusement. // // ⚠️ Revenu en arrière le 2026-09-10 : le mécanisme précédent (application automatique dans les // 10 premières secondes, sinon bandeau « Mettre à jour ») ne se montrait pas fiable en pratique // (constaté sur l'application installée, PC comme téléphone : la version affichée dans « À // propos » — qui vient d'un appel au serveur, donc toujours à jour — changeait sans que le reste // de l'application suive). Le comportement par défaut est plus simple à raisonner ; s'il rebloque // comme en août 2026, le correctif portera sur un diagnostic visible avant de complexifier à // nouveau ce fichier. // // Ce qui reste, et pourquoi : // 1. `navigator.serviceWorker` n'existe pas en contexte non sécurisé (http sur une IP locale). // L'appeler sans vérification lève une TypeError qui casse le script — et fait croire à un // défaut de la PWA alors que c'est le contexte qui n'est pas éligible. // 2. Chemin ABSOLU, et scope explicite. `register('service-worker.js')` se résout contre l'URL // du DOCUMENT et non contre : ouvrir l'application sur une route profonde // (/souhaits, /livres/3) visait /souhaits/service-worker.js, que le serveur ne sert pas — // l'enregistrement échouait alors silencieusement, et avec lui tout le hors-ligne. (function () { 'use strict'; if (!('serviceWorker' in navigator)) { // Cas normal en http sur une IP de réseau local : rien à signaler à l'utilisateur, // l'application fonctionne, elle n'est simplement pas installable ni hors-ligne. console.info('Service worker indisponible (contexte non sécurisé ou navigateur sans support).'); return; } // updateViaCache: 'none' — sans lien avec le comportement d'application (ci-dessus) : ceci // évite seulement qu'un cache HTTP intermédiaire masque une nouvelle version du script lui- // même, y compris service-worker-assets.js qu'il importe. navigator.serviceWorker.register('/service-worker.js', { scope: '/', updateViaCache: 'none' }) .catch(function (erreur) { // Ne jamais laisser cet échec passer inaperçu : sans service worker, l'application // ne démarre pas hors-ligne, et le cache IndexedDB ne sert alors à rien. console.error("Échec de l'enregistrement du service worker :", erreur); }); })();