From 88b196ed6d48f40651aae6c48a7b67b8b86760e1 Mon Sep 17 00:00:00 2001 From: TekH Date: Thu, 11 Jun 2026 14:11:56 +0200 Subject: [PATCH] Refactor report handling and improve async operations Refactored the `Report` property to `_report` with nullable support and updated `EnvelopeKey` to use `init` for immutability. Made `CreateReport` asynchronous, returning `Task`, and removed redundant `BasePdfBytes` property. Simplified predefined report fetching by removing `ReportStorage.TryGetReport`. Improved error handling for missing or invalid `pdfBytes` in `CreateReport`. Made minor formatting and structural improvements for clarity. --- .../EnvelopeReceiverPage_DxReportViewer.razor | 40 +++++++------------ 1 file changed, 15 insertions(+), 25 deletions(-) diff --git a/EnvelopeGenerator.ReceiverUI/Pages/EnvelopeReceiverPage_DxReportViewer.razor b/EnvelopeGenerator.ReceiverUI/Pages/EnvelopeReceiverPage_DxReportViewer.razor index 3a84ea71..7c2de031 100644 --- a/EnvelopeGenerator.ReceiverUI/Pages/EnvelopeReceiverPage_DxReportViewer.razor +++ b/EnvelopeGenerator.ReceiverUI/Pages/EnvelopeReceiverPage_DxReportViewer.razor @@ -12,47 +12,37 @@ -@if (Report is not null) { - +@if (_report is not null) { + } @code { - [Parameter] public string EnvelopeKey { get; set; } = string.Empty; + [Parameter] public string EnvelopeKey { get; init; } = null!; - XtraReport Report { get; set; } = null!; + XtraReport? _report = null; - byte[] BasePdfBytes { get; set; } = null!; - - protected override async Task OnInitializedAsync() { - if (!AppOptions.Value.UsePredefinedReports) { - try { - var pdfBytes = await DocumentService.GetDocumentAsync(EnvelopeKey); - if (pdfBytes is { Length: > 0 }) - BasePdfBytes = pdfBytes; - else - throw new InvalidOperationException($"No PDF bytes found for EnvelopeKey: {EnvelopeKey}"); - } catch (HttpRequestException ex) { - throw new InvalidOperationException($"Failed to load document for EnvelopeKey: {EnvelopeKey}", ex); - } - } - - Report = CreateReport(); + protected override async Task OnInitializedAsync() + { + _report = await CreateReport(); } - XtraReport CreateReport() + async Task CreateReport() { if (AppOptions.Value.UsePredefinedReports) { - return ReportStorage.TryGetReport("LargeDatasetReport", out var savedReport) - ? savedReport - : PredefinedReports.ReportsFactory.GetReport("LargeDatasetReport"); + return PredefinedReports.ReportsFactory.GetReport("LargeDatasetReport"); } else { + + var pdfBytes = await DocumentService.GetDocumentAsync(EnvelopeKey); + if (pdfBytes is null || pdfBytes.Length == 0) + throw new InvalidOperationException($"No PDF bytes found for EnvelopeKey: {EnvelopeKey}"); + var report = new XtraReport(); var detail = new DevExpress.XtraReports.UI.DetailBand(); report.Bands.Add(detail); - detail.Controls.Add(new DevExpress.XtraReports.UI.XRPdfContent { Source = BasePdfBytes, GenerateOwnPages = true }); + detail.Controls.Add(new DevExpress.XtraReports.UI.XRPdfContent { Source = pdfBytes, GenerateOwnPages = true }); return report; } }