Löschen implementiert
All checks were successful
Build & Deploy PLDpro.Web Test to 192.168.1.100 / build-and-deploy (push) Successful in 1m16s
All checks were successful
Build & Deploy PLDpro.Web Test to 192.168.1.100 / build-and-deploy (push) Successful in 1m16s
This commit is contained in:
@@ -57,6 +57,7 @@
|
||||
<MudTh>Geändert</MudTh>
|
||||
<MudTh></MudTh>
|
||||
<MudTh></MudTh>
|
||||
<MudTh></MudTh>
|
||||
</HeaderContent>
|
||||
<RowTemplate>
|
||||
<MudTd DataLabel="Key">@context.Key</MudTd>
|
||||
@@ -73,10 +74,17 @@
|
||||
}
|
||||
<MudButton Variant="Variant.Outlined" Color="Color.Primary" Href="@($"/api/storage/buckets/{selectedBucket}/files/{encodedName}/download")" Target="_blank" StartIcon="@Icons.Material.Filled.Download">Download by Name</MudButton>
|
||||
</MudTd>
|
||||
|
||||
<MudTd>
|
||||
<MudButton Variant="Variant.Text" Color="Color.Error" StartIcon="@Icons.Material.Filled.Delete"
|
||||
OnClick="@(async () => await ConfirmAndDelete(context.Key))">
|
||||
Löschen
|
||||
</MudButton>
|
||||
</MudTd>
|
||||
</RowTemplate>
|
||||
</MudTable>
|
||||
</MudPaper>
|
||||
}
|
||||
}
|
||||
|
||||
@code {
|
||||
private record BucketVm(string Name, DateTime? CreationDate);
|
||||
@@ -148,5 +156,42 @@
|
||||
return $"/api/storage/buckets/{selectedBucket}/download/{encodedKey}";
|
||||
}
|
||||
|
||||
|
||||
|
||||
private async Task ConfirmAndDelete(string key)
|
||||
{
|
||||
// Simple Bestätigung; alternativ MudDialog verwenden
|
||||
var really = await JSConfirm($"Objekt löschen?\n\nBucket: {selectedBucket}\nKey: {key}");
|
||||
if (really)
|
||||
{
|
||||
await DeleteObject(key);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private async Task DeleteObject(string key)
|
||||
{
|
||||
if (string.IsNullOrEmpty(selectedBucket)) return;
|
||||
|
||||
var encodedKey = Uri.EscapeDataString(key);
|
||||
var url = $"/api/storage/buckets/{selectedBucket}/objects/{encodedKey}";
|
||||
|
||||
var resp = await Http!.DeleteAsync(url);
|
||||
if (resp.IsSuccessStatusCode)
|
||||
{
|
||||
// Liste aktualisieren
|
||||
objects = await Http!.GetFromJsonAsync<List<ObjectVm>>($"/api/storage/buckets/{selectedBucket}/objects") ?? new();
|
||||
StateHasChanged();
|
||||
}
|
||||
else
|
||||
{
|
||||
var msg = await resp.Content.ReadAsStringAsync();
|
||||
throw new InvalidOperationException($"Delete fehlgeschlagen: {(int)resp.StatusCode} {resp.ReasonPhrase}\n{msg}");
|
||||
}
|
||||
}
|
||||
|
||||
// Sehr einfache JS-Confirm-Hilfe (füge IJSRuntime-Injection hinzu)
|
||||
[Inject] private IJSRuntime JS { get; set; } = default!;
|
||||
private async Task<bool> JSConfirm(string message)
|
||||
=> await JS.InvokeAsync<bool>("confirm", message);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user