@page "/ajout/manuel" @inject ServiceLivresApi Api @inject NavigationManager Navigation @inject EtatReseau Reseau @implements IDisposable MaBibli — saisie manuelle

Saisie manuelle

Pour les livres sans ISBN, ou dont aucune notice ne convient. L'ISBN reste facultatif.

@* Le formulaire s'efface pendant qu'on tranche le doublon : la saisie n'est pas perdue pour autant, elle attend dans « _saisie » et revient telle quelle si l'on renonce. Laisser les deux à l'écran donnerait deux boutons d'ajout, dont un seul confirme. *@ @if (_doublons is { } doublons) { } else { } @code { private readonly EnregistrementLivre _saisie = new(); protected override void OnInitialized() => Reseau.Change += SurChangementReseau; private void SurChangementReseau() => _ = InvokeAsync(StateHasChanged); public void Dispose() => Reseau.Change -= SurChangementReseau; private bool _enregistrement; private string? _erreur; private DoublonsLivre? _doublons; private Task EnregistrerAsync() => AjouterAsync(false); /// Ajout maintenu après avoir vu ce que le catalogue contenait déjà. private Task ConfirmerAsync() => AjouterAsync(true); private async Task AjouterAsync(bool confirmerDoublon) { _enregistrement = true; _erreur = null; var resultat = await Api.CreerAsync(_saisie, confirmerDoublon); _enregistrement = false; // Un doublon signalé n'est pas un échec : rien n'a été écrit, et la même saisie // confirmée s'enregistrera telle quelle. if (resultat.Doublons is { } doublons) { _doublons = doublons; return; } _doublons = null; if (!resultat.EstOk) { _erreur = resultat.Erreur; return; } Navigation.NavigateTo("/"); } private void Retour() => Navigation.NavigateTo("/"); }