Improve signature handling and navigation stability

Updated button logic to display "Unterschreiben" only when signature fields exist. Changed `_signaturePopupVisible` to always be `false` for consistent popup behavior. Improved navigation after caching a signature by nullifying `_report`, adding a delay for UI updates, and using `forceLoad: true` for clean circuit teardown. These changes enhance user experience and prevent potential crashes.
This commit is contained in:
2026-07-01 09:55:55 +02:00
parent b957b4b4bb
commit 185c783824

View File

@@ -112,17 +112,17 @@
</div>
}
@* Unterschrift ändern button (when signature captured) *@
@if (_capturedSignature is not null)
@* Unterschreiben button — visible only when signature fields exist *@
@if (_signatures.Count > 0)
{
<button class="pdf-toolbar__btn pdf-toolbar__btn--signature-change pdf-toolbar__btn--signature-change-active"
@onclick="OpenSignaturePopup"
title="Unterschrift ändern"
title="Unterschreiben"
style="flex-shrink: 0;">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="currentColor" viewBox="0 0 16 16">
<path d="M12.146.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1 0 .708l-10 10a.5.5 0 0 1-.168.11l-5 2a.5.5 0 0 1-.65-.65l2-5a.5.5 0 0 1 .11-.168l10-10zM11.207 2.5 13.5 4.793 14.793 3.5 12.5 1.207 11.207 2.5zm1.586 3L10.5 3.207 4 9.707V10h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.293l6.5-6.5zm-9.761 5.175-.106.106-1.528 3.821 3.821-1.528.106-.106A.5.5 0 0 1 5 12.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.468-.325z" />
</svg>
<span class="pdf-toolbar__btn-text">Unterschrift</span>
<span class="pdf-toolbar__btn-text">Unterschreiben</span>
</button>
}
</div>
@@ -445,7 +445,7 @@
else
{
_activeSignatureTab = SignatureTabDraw;
_signaturePopupVisible = _signatures.Count > 0;
_signaturePopupVisible = false;
_popupValidationMessage = null;
}
}
@@ -453,7 +453,7 @@
{
Logger.LogWarning(ex, "Failed to load cached signature for {EnvelopeKey}", EnvelopeKey);
_activeSignatureTab = SignatureTabDraw;
_signaturePopupVisible = _signatures.Count > 0;
_signaturePopupVisible = false;
_popupValidationMessage = null;
}
}
@@ -690,9 +690,15 @@
Logger.LogInformation(
"Signature cached with sid={Sid} for envelope {EnvelopeKey}", sid, EnvelopeKey);
// Navigate to signed page
// Null the report → DxReportViewer removed from DOM → no crash on dispose
_report = null;
await InvokeAsync(StateHasChanged);
await Task.Delay(50);
// Navigate — forceLoad:true for clean circuit teardown
Navigation.NavigateTo(
$"/envelope/{Uri.EscapeDataString(EnvelopeKey!)}/signed?sid={sid}");
$"/envelope/{Uri.EscapeDataString(EnvelopeKey!)}/signed?sid={sid}",
forceLoad: true);
}
async Task<string?> GetActiveSignatureDataUrlAsync()