@page "/envelope/login/{EnvelopeKey}" @rendermode InteractiveWebAssembly @using EnvelopeGenerator.Server.Client.Services @using EnvelopeGenerator.Application.Resources @using Microsoft.Extensions.Localization @inject AuthService AuthService @inject NavigationManager Navigation @inject IStringLocalizer UiLocalizer
@code { [Parameter] public string EnvelopeKey { get; set; } = string.Empty; string AccessCode = string.Empty; bool ShowCode; bool IsLoading; EnvelopeLoginResult? LoginResult; protected override async Task OnInitializedAsync() { if (string.IsNullOrWhiteSpace(EnvelopeKey)) return; _ = await AuthService.RequestEnvelopeReceiverAccessCodeAsync(EnvelopeKey); } async Task OnKeyDownAsync(Microsoft.AspNetCore.Components.Web.KeyboardEventArgs e) { if (e.Key == "Enter") await SubmitAsync(); } async Task SubmitAsync() { if (string.IsNullOrWhiteSpace(AccessCode) || IsLoading) return; IsLoading = true; LoginResult = null; await InvokeAsync(StateHasChanged); var result = await AuthService.LoginEnvelopeReceiverAsync(EnvelopeKey, AccessCode.Trim()); if (result == EnvelopeLoginResult.Success) { Navigation.NavigateTo($"/envelope/{Uri.EscapeDataString(EnvelopeKey)}", forceLoad: true); return; } LoginResult = result; IsLoading = false; await InvokeAsync(StateHasChanged); } string L(string key, string fallback) { var value = UiLocalizer[key]; return value.ResourceNotFound ? fallback : value.Value; } }