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)
- {
-
+
+ @if (_isPdfUploadInProgress)
+ {
+
+ }
+ else
+ {
+ }
+ @if (_isPdfUploadInProgress)
+ {
@L("UploadPdf", "PDF hochladen")
-
-
- }
- else
- {
-
- }
+ @:
+ @:...
+ }
+ else if (_isPageReady)
+ {
+ @L("UploadPdf", "PDF hochladen")
+ }
+ else
+ {
+ @L("Loading", "Wird geladen")
+ @:
+ @:...
+ }
+
+
}
@@ -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 ──