From 2434f67627da4209db4c742d6a6584e5ac6ef36c Mon Sep 17 00:00:00 2001 From: TekH Date: Tue, 29 Sep 2026 21:41:03 +0200 Subject: [PATCH] Add conditional rendering for PDF upload readiness Introduced `_isPageReady` state to manage page readiness and conditionally render the PDF upload button. Disabled the upload functionality and added a loading spinner when the page is not ready. Updated `OnPdfFileSelectedAsync` to prevent uploads before readiness. Modified the "No Document Loaded" section to use `_isPageReady` for conditional rendering. Added `SENDER_SAVE_EDIT_MIGRATION_PLAN.md` to the solution. Improved user experience with better feedback during loading states. --- .../Pages/SenderEditorPage.razor | 76 ++++++++++++++----- EnvelopeGenerator.sln | 1 + 2 files changed, 57 insertions(+), 20 deletions(-) diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/SenderEditorPage.razor b/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/SenderEditorPage.razor index 59f2e6fd..8900b5a6 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/SenderEditorPage.razor +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/SenderEditorPage.razor @@ -159,18 +159,29 @@ @* PDF Upload *@ - + @if (_isPageReady) + { + + } + else + { + + + @L("Loading", "Wird geladen")… + + } @if (_pdfLoaded && _signatureFields.Count > 0) { @@ -256,14 +267,24 @@

@L("SenderEditor_UploadPdfToPlaceFields", "Laden Sie eine PDF-Datei hoch, um Signaturfelder zu platzieren.")

- + @if (_isPageReady) + { + + } + else + { + + } } @@ -468,6 +489,7 @@ // ── State ── bool _pdfLoaded = false; + bool _isPageReady; string _fileName = string.Empty; string? _errorMessage; byte[]? _originalPdfBytes; // Pristine upload — never modified, used as base for redraw @@ -534,6 +556,17 @@ return; } + protected override Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + _isPageReady = true; + StateHasChanged(); + } + + return Task.CompletedTask; + } + async Task LoadEnvelopeForEditAsync(int envelopeId) { if (_isLoadingEnvelopeForEdit) @@ -622,6 +655,9 @@ // ── PDF upload ── async Task OnPdfFileSelectedAsync(InputFileChangeEventArgs e) { + if (!_isPageReady) + return; + _errorMessage = null; var file = e.File; if (file is null) return; diff --git a/EnvelopeGenerator.sln b/EnvelopeGenerator.sln index a8be861b..a8a36ad6 100644 --- a/EnvelopeGenerator.sln +++ b/EnvelopeGenerator.sln @@ -41,6 +41,7 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "EnvelopeGenerator.Server", "EnvelopeGenerator.Server", "{BF1700D5-592E-4FFA-84E8-5480E289A1F0}" ProjectSection(SolutionItems) = preProject EnvelopeGenerator.Server\publish.bat = EnvelopeGenerator.Server\publish.bat + SENDER_SAVE_EDIT_MIGRATION_PLAN.md = SENDER_SAVE_EDIT_MIGRATION_PLAN.md EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnvelopeGenerator.Server", "EnvelopeGenerator.Server\EnvelopeGenerator.Server\EnvelopeGenerator.Server.csproj", "{4E6C54DA-576D-0955-2564-9EC890BB8279}"