diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeReceiverReportPage.razor b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeReceiverReportPage.razor index fd271710..839ecfa6 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeReceiverReportPage.razor +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeReceiverReportPage.razor @@ -10,12 +10,14 @@ @using DevExpress.Blazor @using System.Drawing @using System.Security.Claims +@using Microsoft.Extensions.Caching.Memory @inject NavigationManager Navigation @inject IJSRuntime JSRuntime @inject EnvelopeGenerator.Server.Client.Services.AuthService AuthService @inject EnvelopeGenerator.Server.Services.EnvelopeReceiverAuthorizationService ReceiverAuthorizationService @inject EnvelopeGenerator.Server.Services.EnvelopeReceiverPageDataService PageDataService @inject AppVersionService AppVersion +@inject IMemoryCache MemoryCache @inject ILogger Logger @implements IDisposable @@ -678,32 +680,19 @@ }; _signaturePopupVisible = false; - // Persist to cache (fire-and-forget) - if (_receiverUser is not null) - { - _ = Task.Run(async () => - { - try { await PageDataService.SaveCachedSignatureAsync(_receiverUser, _capturedSignature); } - catch { /* non-critical */ } - }); - } + // Store signature in IMemoryCache with a Guid key (1 minute TTL) + var sid = Guid.NewGuid().ToString("N"); + MemoryCache.Set( + sid, + _capturedSignature, + TimeSpan.FromMinutes(1)); - // Rebuild the report with signatures overlaid - if (_pdfBytes is not null) - { - var newReport = BuildReport(_pdfBytes, _signatures, _capturedSignature); + Logger.LogInformation( + "Signature cached with sid={Sid} for envelope {EnvelopeKey}", sid, EnvelopeKey); - if (_reportViewer is not null) - { - await _reportViewer.OpenReportAsync(newReport); - // Dispose previous report after opening new one - _report?.Dispose(); - } - - _report = newReport; - } - - await InvokeAsync(StateHasChanged); + // Navigate to signed page + Navigation.NavigateTo( + $"/envelope/{Uri.EscapeDataString(EnvelopeKey!)}/signed?sid={sid}"); } async Task GetActiveSignatureDataUrlAsync()