@using LucideBlazor @using Moonlight.Shared.Shared @using MoonlightServers.Shared @using MoonlightServers.Shared.Admin.Nodes @using ShadcnBlazor.DataGrids @using ShadcnBlazor.Buttons @using ShadcnBlazor.Dropdowns @using ShadcnBlazor.Extras.AlertDialogs @using ShadcnBlazor.Extras.Toasts @using ShadcnBlazor.Tabels @inject HttpClient HttpClient @inject AlertDialogService AlertDialogService @inject ToastService ToastService @inject NavigationManager NavigationManager @inject IAuthorizationService AuthorizationService

Nodes

Manage nodes
@context.Name
Edit Delete
@code { [CascadingParameter] public Task AuthState { get; set; } private DataGrid Grid; private AuthorizationResult EditAccess; private AuthorizationResult DeleteAccess; private AuthorizationResult CreateAccess; protected override async Task OnInitializedAsync() { var authState = await AuthState; EditAccess = await AuthorizationService.AuthorizeAsync(authState.User, Permissions.Nodes.Edit); DeleteAccess = await AuthorizationService.AuthorizeAsync(authState.User, Permissions.Nodes.Delete); CreateAccess = await AuthorizationService.AuthorizeAsync(authState.User, Permissions.Nodes.Create); } private async Task> LoadAsync(DataGridRequest request) { var query = $"?startIndex={request.StartIndex}&length={request.Length}"; var filterOptions = request.Filters.Count > 0 ? new FilterOptions(request.Filters) : null; var response = await HttpClient.GetFromJsonAsync>( $"api/admin/servers/nodes{query}&filterOptions={filterOptions}", SerializationContext.Default.Options ); return new DataGridResponse(response!.Data, response.TotalLength); } private void Edit(NodeDto context) => NavigationManager.NavigateTo($"/admin/servers/nodes/{context.Id}"); private async Task DeleteAsync(NodeDto context) { await AlertDialogService.ConfirmDangerAsync( "Node Deletion", $"Do you really want to delete the node {context.Name}? This cannot be undone.", async () => { var response = await HttpClient.DeleteAsync($"api/admin/servers/nodes/{context.Id}"); response.EnsureSuccessStatusCode(); await Grid.RefreshAsync(); await ToastService.SuccessAsync( "Node Deletion", $"Successfully deleted node {context.Name}" ); } ); } }