}
+
+ @*
+ ⚠️ Ce numéro vient du SERVEUR (voir plus haut) : il ne prouve pas que le navigateur a
+ lui-même récupéré la nouvelle version. Le service worker n'active un nouveau cache
+ qu'une fois TOUS les onglets fermés — un appareil qui reste ouvert en arrière-plan
+ (téléphone surtout) peut rester bloqué sur l'ancienne version indéfiniment. Ce bouton
+ court-circuite cette attente : désinscrire le worker et vider son cache, recharger.
+ Hors-ligne il est désactivé — le déclencher sans réseau couperait l'accès hors-ligne
+ en cours, sans rien pouvoir retélécharger à la place.
+ *@
+
+ Vide le cache de l'application et la recharge entièrement — à utiliser si une nouvelle
+ version tarde à apparaître malgré la fermeture de tous les onglets.
+
}
else
{
@@ -145,6 +174,7 @@
private const string Depot = "https://git.akbar.nohost.me/mathieu/mabibli";
private VersionApplication? _version;
+ private bool _forcageEnCours;
protected override async Task OnInitializedAsync()
{
@@ -161,6 +191,28 @@
StateHasChanged();
});
+ ///
+ /// Désinscrit le service worker et vide son cache avant de recharger — voir js/forcer-maj.js.
+ /// Le bouton reste désactivé pendant l'opération : un double clic déclencherait deux
+ /// désinscriptions concurrentes pour un seul rechargement.
+ ///
+ private async Task ForcerMiseAJourAsync()
+ {
+ _forcageEnCours = true;
+ try
+ {
+ await using var module = await JS.InvokeAsync("import", "./js/forcer-maj.js");
+ await module.InvokeVoidAsync("forcerMiseAJour");
+ }
+ catch
+ {
+ // Le rechargement forcé qui suit normalement l'appel JS ne survient pas ici : on
+ // rend la main pour que l'utilisateur puisse réessayer plutôt que de rester sur un
+ // bouton grisé pour rien.
+ _forcageEnCours = false;
+ }
+ }
+
private static string Quand(DateTimeOffset instant)
{
var local = instant.ToLocalTime();
diff --git a/MaBibli.Client/Pages/Catalogue.razor b/MaBibli.Client/Pages/Catalogue.razor
index 315124a..d6cb24d 100644
--- a/MaBibli.Client/Pages/Catalogue.razor
+++ b/MaBibli.Client/Pages/Catalogue.razor
@@ -228,7 +228,7 @@
@if (_chargement && _livres is null)
{
-
Chargement…
+
}
else if (_livres is { Count: 0 })
{
diff --git a/MaBibli.Client/wwwroot/css/app.css b/MaBibli.Client/wwwroot/css/app.css
index 77e91f5..67b1deb 100644
--- a/MaBibli.Client/wwwroot/css/app.css
+++ b/MaBibli.Client/wwwroot/css/app.css
@@ -1180,41 +1180,6 @@ body {
font-weight: 600;
}
-/* --- Mise à jour de l'application --- */
-
-/* Injecté par js/mise-a-jour.js, hors composants Blazor : ce bandeau doit pouvoir s'afficher
- même si l'application WebAssembly n'a pas démarré. D'où une règle globale et non scopée.
- Il existe parce que les empreintes des assets WASM sont désactivées (CLAUDE.md) : le service
- worker est le seul cache-busting du projet, et sa mise à jour attendrait sinon la fermeture
- de tous les onglets. */
-#mb-maj {
- position: fixed;
- left: 0;
- right: 0;
- bottom: 0;
- z-index: 1100;
- display: flex;
- gap: 0.75rem;
- align-items: center;
- justify-content: center;
- flex-wrap: wrap;
- padding: 0.7rem 1rem;
- background: #1b3a5c;
- color: #fff;
- font-size: 0.9rem;
-}
-
-#mb-maj button {
- min-height: 2.5rem;
- padding: 0.4rem 0.9rem;
- border: 0;
- border-radius: 6px;
- background: #f5d76e;
- color: #4a3800;
- font-weight: 600;
- cursor: pointer;
-}
-
/* Un ISBN se relit chiffre à chiffre : une chasse fixe évite de confondre 1 et l,
0 et O, et rend les tranches séparées par des tirets alignées d'une ligne à l'autre. */
/* ⚠️ PAS de « white-space: nowrap » ici, et ce n'est pas un oubli. Un ISBN à tirets mesure
@@ -1263,7 +1228,11 @@ body {
display: flex;
flex-wrap: wrap;
gap: 0.4rem;
- flex: 0 0 auto;
+ /* flex-shrink à 0 empêchait ce bloc de rétrécir : sur un écran étroit, il gardait la
+ largeur de ses boutons mis bout à bout et débordait à droite au lieu de les enrouler
+ sur une seconde ligne, malgré le flex-wrap ci-dessus. */
+ flex: 1 1 auto;
+ min-width: 0;
}
/* --- Liste d'envies : ordre choisi --- */
diff --git a/MaBibli.Client/wwwroot/index.html b/MaBibli.Client/wwwroot/index.html
index 46a39b7..766f845 100644
--- a/MaBibli.Client/wwwroot/index.html
+++ b/MaBibli.Client/wwwroot/index.html
@@ -43,8 +43,8 @@
+ navigator.serviceWorker (absent hors contexte sécurisé), et journalise un échec au lieu
+ de l'avaler. Comportement de mise à jour par défaut de Blazor : voir js/mise-a-jour.js. -->