diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/SenderEditorPage.razor b/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/SenderEditorPage.razor index 8900b5a6..70dc8a0e 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/SenderEditorPage.razor +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/SenderEditorPage.razor @@ -159,29 +159,43 @@ @* PDF Upload *@ - @if (_isPageReady) - { - @if (_pdfLoaded && _signatureFields.Count > 0) { @@ -267,24 +281,42 @@

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

- @if (_isPageReady) - { - } @@ -490,6 +522,7 @@ // ── State ── bool _pdfLoaded = false; bool _isPageReady; + bool _isPdfUploadInProgress; string _fileName = string.Empty; string? _errorMessage; byte[]? _originalPdfBytes; // Pristine upload — never modified, used as base for redraw @@ -658,6 +691,9 @@ if (!_isPageReady) return; + if (_isPdfUploadInProgress) + return; + _errorMessage = null; var file = e.File; if (file is null) return; @@ -670,6 +706,9 @@ try { + _isPdfUploadInProgress = true; + await InvokeAsync(StateHasChanged); + const long maxBytes = 50 * 1024 * 1024; using var ms = new System.IO.MemoryStream(); await file.OpenReadStream(maxBytes).CopyToAsync(ms); @@ -695,6 +734,11 @@ ex.Message); Logger.LogError(ex, "Failed to load PDF file"); } + finally + { + _isPdfUploadInProgress = false; + await InvokeAsync(StateHasChanged); + } } // ── Placement mode ──