Un liste d'ouvrage rafale est accessible depuis le menu

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
mathieu
2026-09-09 19:16:33 +02:00
co-authored by Claude Sonnet 5
parent 42dec0dbd1
commit d76fb10ee0
2 changed files with 47 additions and 4 deletions
+29 -4
View File
@@ -3,6 +3,7 @@
@inject ServiceLivresApi Api
@inject EtatReseau Reseau
@inject NavigationManager Navigation
@inject CacheHorsLigne Cache
@*
Mise en page pensée mobile d'abord : un bandeau, une colonne, rien à gauche.
@@ -93,6 +94,16 @@
</div>
}
@*
Une rafale non vidée reste consultable ailleurs sur le site — sans quoi y revenir
depuis un autre écran demande de refaire tout le chemin d'« Ajouter ». L'entrée
disparaît d'elle-même une fois la file effacée (bouton « Nouvelle rafale »).
*@
@if (_rafale is { Total: > 0 })
{
<NavLink class="menu-lien menu-lien-rafale" href="ajout/rafale">@LibelleRafale</NavLink>
}
<NavLink class="menu-lien" href="" Match="NavLinkMatch.All">Catalogue</NavLink>
<NavLink class="menu-lien" href="auteurs">Auteurs</NavLink>
<NavLink class="menu-lien" href="series">Séries</NavLink>
@@ -148,6 +159,12 @@
private ElementReference _menu;
/// <summary>Rafale non vidée, s'il y en a une. Relue à chaque navigation (lot AB).</summary>
private Rafale? _rafale;
private string LibelleRafale =>
_rafale is { Crees: > 0 } r ? $"Compte rendu ({r.Crees})" : "Rafale à reprendre";
protected override async Task OnInitializedAsync()
{
Reseau.Change += SurChangementReseau;
@@ -158,6 +175,8 @@
// entrées empilées au-dessus de la liste des auteurs.
Navigation.LocationChanged += SurNavigation;
_rafale = await Cache.LireRafaleAsync();
// Écoute des bascules online/offline avant tout appel : un démarrage hors-ligne doit
// aller directement au cache, sans attendre l'échec d'une requête.
await Reseau.DemarrerAsync();
@@ -226,13 +245,19 @@
private void SurNavigation(object? _, LocationChangedEventArgs __)
{
if (!_menuOuvert)
if (_menuOuvert)
{
return;
_menuOuvert = false;
}
_menuOuvert = false;
_ = InvokeAsync(StateHasChanged);
// ⚠️ Relu à CHAQUE navigation, pas seulement au quitter de l'écran de rafale : c'est ce
// qui fait apparaître l'entrée du menu dès le premier code scanné, et disparaître dès
// la file effacée, où qu'on soit rendu entre-temps.
_ = InvokeAsync(async () =>
{
_rafale = await Cache.LireRafaleAsync();
StateHasChanged();
});
}
/// <summary>