@using Moonlight.Frontend.Helpers @using Moonlight.Frontend.Mappers @using Moonlight.Frontend.UI.Admin.Components @using Moonlight.Shared.Http.Requests.Admin.ApiKeys @using Moonlight.Shared.Http.Responses.Admin.ApiKeys @using ShadcnBlazor.Dialogs @using ShadcnBlazor.Extras.Forms @using ShadcnBlazor.Extras.Toasts @using ShadcnBlazor.Fields @using ShadcnBlazor.Inputs @inherits ShadcnBlazor.Extras.Dialogs.DialogBase @inject HttpClient HttpClient @inject ToastService ToastService Update API key Edit the name, description, or the granted permissions for the key.
Name Description Valid until Permissions
Save changes
@code { [Parameter] public Func OnSubmit { get; set; } [Parameter] public ApiKeyDto Key { get; set; } private UpdateApiKeyDto Request; private List Permissions = new(); protected override void OnInitialized() { Request = ApiKeyMapper.ToUpdate(Key); Permissions = Key.Permissions.ToList(); } private async Task OnSubmitAsync(EditContext editContext, ValidationMessageStore validationMessageStore) { Request.Permissions = Permissions.ToArray(); Request.ValidUntil = Request.ValidUntil.ToUniversalTime(); var response = await HttpClient.PatchAsJsonAsync( $"/api/admin/apiKeys/{Key.Id}", Request, Constants.SerializerOptions ); if (!response.IsSuccessStatusCode) { await ProblemDetailsHelper.HandleProblemDetailsAsync(response, Request, validationMessageStore); return false; } await ToastService.SuccessAsync( "API Key update", $"Successfully updated API key {Request.Name}" ); await OnSubmit.Invoke(); await CloseAsync(); return true; } }