@page "/souhaits/revues/{Id:int}/edition" @inject ServiceLivresApi Api @inject EtatReseau Reseau @inject NavigationManager Navigation @implements IDisposable @* Le même geste que pour une envie de livre, sur la table sœur : écran dédié, mode dans l'adresse. Les deux formulaires ne se fondent pas en un seul — une revue n'a ni auteur, ni éditeur, ni ISBN, et un formulaire à moitié grisé se lit plus mal que deux formulaires courts. *@ MaBibli — modifier une envie de revue

Modifier une envie de revue

@if (_erreur is not null) { } @if (_introuvable) {

@(Reseau.EnLigne ? "Cette envie n'existe plus dans votre liste." : "Cette envie n'est pas dans les données enregistrées sur cet appareil.")

} else if (_saisie is null) { } else {
@* La saisie garde ce qui est tapé : le tiret est posé à l'enregistrement, jamais à la frappe — sinon il se battrait avec le curseur. *@ @if (!Reseau.EnLigne) {

@EtatReseau.MotifHorsLigne

}
Annuler
} @code { [Parameter] public int Id { get; set; } private EnregistrementRevueSouhaitee? _saisie; private bool _introuvable; private bool _enCours; private string? _erreur; protected override async Task OnInitializedAsync() { Reseau.Change += SurChangementReseau; await ChargerAsync(); } private void SurChangementReseau() => _ = InvokeAsync(StateHasChanged); public void Dispose() => Reseau.Change -= SurChangementReseau; private string? MotifBlocage => Reseau.EnLigne ? null : EtatReseau.MotifHorsLigne; private async Task ChargerAsync() { var envies = await Api.ListerRevuesSouhaiteesAsync(); var envie = envies.FirstOrDefault(e => e.Id == Id); if (envie is null) { _introuvable = true; return; } _saisie = new EnregistrementRevueSouhaitee { Titre = envie.Titre, Numero = envie.Numero, Issn = envie.Issn, Note = envie.Note, }; } private async Task EnregistrerAsync() { if (_saisie is null) { return; } _enCours = true; _erreur = null; var resultat = await Api.ModifierRevueSouhaiteeAsync(Id, _saisie); _enCours = false; if (!resultat.EstOk) { _erreur = resultat.Erreur; return; } Navigation.NavigateTo("souhaits"); } }