fix(files): report success cancellation and errors with safe next actions (U02)

This commit is contained in:
2026-11-02 06:23:59 +01:00
parent a3c1bee09e
commit 5e0ad197f0
15 changed files with 288 additions and 200 deletions
@@ -7,6 +7,9 @@
@inject NavigationManager Navigation
<div class="container-fluid">
<OperationNotice Result="fileResult" />
@if (fileBusy) { <p role="status" aria-live="polite">Dateiaktion läuft … Bitte warten.</p> }
@if (account == null)
{
<div class="text-center py-5">
@@ -35,7 +38,7 @@
<button class="btn btn-info btn-nav" @onclick="() => showAddTransfer = true">
<i class="bi bi-arrow-left-right"></i> Umbuchung
</button>
<button class="btn btn-dark btn-nav" @onclick="HandleExport">
<button class="btn btn-dark btn-nav" @onclick="HandleExport" disabled="@fileBusy">
<i class="bi bi-file-earmark-pdf"></i> PDF
</button>
|
@@ -32,6 +32,8 @@ public partial class AccountDetail
private string? confirmRestoreEntryTitle;
private string? savedPdfPath;
private FileOperationResult? fileResult;
private bool fileBusy;
private EntryDto? editingEntry;
private EntryDto? editingTransferEntry;
@@ -178,19 +180,39 @@ public partial class AccountDetail
private async Task HandleExport()
{
if (fileBusy) return;
fileBusy = true;
fileResult = null;
try
{
var pdf = await PdfStatementService.GenerateStatementAsync(AccountId, selectedYear);
var suffix = selectedYear.HasValue ? $"_{selectedYear.Value}" : "_Gesamt";
savedPdfPath = await FileSaveService.SaveFileAsync(pdf, $"{account?.Name}{suffix}.pdf");
fileResult = await FileSaveService.SaveFileAsync(pdf, $"{account?.Name}{suffix}.pdf");
savedPdfPath = fileResult.Status == FileOperationStatus.Success ? fileResult.Path : null;
}
catch (Exception ex) { fileResult = FileOperationResult.Error(ex); }
finally { fileBusy = false; }
}
private async Task HandleOpenSavedPdf()
{
if (fileBusy) return;
fileBusy = true;
fileResult = null;
try
{
if (!string.IsNullOrWhiteSpace(savedPdfPath))
{
await FileSaveService.OpenFileAsync(savedPdfPath);
fileResult = await FileSaveService.OpenFileAsync(savedPdfPath);
}
savedPdfPath = null;
}
catch (Exception ex) { fileResult = FileOperationResult.Error(ex); }
finally { fileBusy = false; }
}
private void CancelOpenSavedPdf()