@using System.Net.Http @using System.Net.Http.Headers @using Microsoft.AspNetCore.Components @inject IHttpClientFactory HttpClientFactory @inject AuthBlocksWeb.Services.ITokenService TokenService Are you sure you want to delete '@TrackName'? This cannot be undone. @if (!string.IsNullOrEmpty(_errorMessage)) { @_errorMessage } Cancel @if (_isDeleting) { Deleting... } else { Delete } @code { [CascadingParameter] private IMudDialogInstance MudDialog { get; set; } = default!; [Parameter] public long TrackId { get; set; } [Parameter] public string TrackName { get; set; } = ""; [Parameter] public EventCallback OnDeleted { get; set; } private bool _isDeleting; private string? _errorMessage; private async Task ConfirmAsync() { _isDeleting = true; _errorMessage = null; try { var client = HttpClientFactory.CreateClient("DeepDrft.API"); var token = await TokenService.GetAccessTokenAsync(); if (!string.IsNullOrEmpty(token)) client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); var response = await client.DeleteAsync($"api/cms/track/{TrackId}"); if (response.IsSuccessStatusCode) { if (OnDeleted.HasDelegate) { await OnDeleted.InvokeAsync(); } MudDialog.Close(DialogResult.Ok(true)); return; } _errorMessage = response.StatusCode switch { System.Net.HttpStatusCode.NotFound => "Track not found. It may have already been deleted.", System.Net.HttpStatusCode.Unauthorized => "You are not authorized to delete this track.", System.Net.HttpStatusCode.Forbidden => "You are not authorized to delete this track.", _ => $"Delete failed ({(int)response.StatusCode})." }; } catch (Exception ex) { _errorMessage = $"Delete failed: {ex.Message}"; } finally { _isDeleting = false; } } private void Cancel() => MudDialog.Cancel(); }