diff --git a/EnvelopeGenerator.ReceiverUI/Pages/EnvelopeReceiverPage.razor b/EnvelopeGenerator.ReceiverUI/Pages/EnvelopeReceiverPage.razor index 4f303d57..b1525967 100644 --- a/EnvelopeGenerator.ReceiverUI/Pages/EnvelopeReceiverPage.razor +++ b/EnvelopeGenerator.ReceiverUI/Pages/EnvelopeReceiverPage.razor @@ -576,6 +576,10 @@ const int MaxThumbnailWidth = 400; _signatures = signatures.Convert(UnitOfLength.Point); _envelopeReceiver = await EnvelopeReceiverService.GetAsync(EnvelopeKey); + if (_envelopeReceiver is null) + { + logger.LogWarning("Envelope receiver data is null for envelope {EnvelopeKey}", EnvelopeKey); + } await JSRuntime.InvokeVoidAsync("console.log", "Loaded signatures:", _signatures); diff --git a/EnvelopeGenerator.ReceiverUI/Pages/Example/ReportViewer.razor b/EnvelopeGenerator.ReceiverUI/Pages/Example/ReportViewer.razor index be0b6253..6e5f275e 100644 --- a/EnvelopeGenerator.ReceiverUI/Pages/Example/ReportViewer.razor +++ b/EnvelopeGenerator.ReceiverUI/Pages/Example/ReportViewer.razor @@ -343,7 +343,13 @@ Shown="OnPopupShownAsync"> } _annotations = await AnnotationService.GetAnnotationsAsync(EnvelopeKey); - _envelopeReceiver = await EnvelopeReceiverService.GetAsync(EnvelopeKey); + + try { + _envelopeReceiver = await EnvelopeReceiverService.GetAsync(EnvelopeKey); + } catch (HttpRequestException ex) { + // Log error but continue - UI will handle null envelope receiver gracefully + Console.WriteLine($"Failed to load envelope receiver: {ex.Message}"); + } if (!AppOptions.Value.UsePredefinedReports && !string.IsNullOrWhiteSpace(EnvelopeKey)) { try { diff --git a/EnvelopeGenerator.ReceiverUI/Services/EnvelopeReceiverService.cs b/EnvelopeGenerator.ReceiverUI/Services/EnvelopeReceiverService.cs index ff275789..944c77a8 100644 --- a/EnvelopeGenerator.ReceiverUI/Services/EnvelopeReceiverService.cs +++ b/EnvelopeGenerator.ReceiverUI/Services/EnvelopeReceiverService.cs @@ -1,3 +1,4 @@ +using System.Net; using System.Net.Http.Json; using System.Text.Json; using EnvelopeGenerator.ReceiverUI.Models; @@ -14,13 +15,25 @@ public class EnvelopeReceiverService(HttpClient http, IOptions apiOp { private static readonly JsonSerializerOptions _jsonOptions = new(JsonSerializerDefaults.Web); + /// + /// Fetches the envelope receiver data for the given envelope key from the API. + /// Throws HttpRequestException on failure with appropriate status code. + /// + /// Thrown when the API request fails. public async Task GetAsync(string envelopeKey, CancellationToken cancel = default) { var url = $"{apiOptions.Value.BaseUrl}/api/EnvelopeReceiver/{Uri.EscapeDataString(envelopeKey)}"; var response = await http.GetAsync(url, cancel); if (!response.IsSuccessStatusCode) - return null; + { + var statusCode = (int)response.StatusCode; + var reasonPhrase = response.ReasonPhrase ?? "Unknown error"; + throw new HttpRequestException( + $"Failed to load envelope receiver data. Status: {statusCode} ({reasonPhrase})", + null, + response.StatusCode); + } return await response.Content.ReadFromJsonAsync(_jsonOptions, cancel); }