@page "/admin/system/themes/{Id:int}" @using Microsoft.AspNetCore.Authorization @using Moonlight.Shared @using LucideBlazor @using Moonlight.Frontend.Helpers @using Moonlight.Frontend.Mappers @using Moonlight.Frontend.Services @using Moonlight.Shared.Http @using Moonlight.Shared.Http.Requests.Admin.Themes @using Moonlight.Shared.Http.Responses.Admin.Themes @using ShadcnBlazor.Buttons @using ShadcnBlazor.Cards @using ShadcnBlazor.Extras.Common @using ShadcnBlazor.Extras.Editors @using ShadcnBlazor.Extras.Forms @using ShadcnBlazor.Extras.Toasts @using ShadcnBlazor.Fields @using ShadcnBlazor.Inputs @using ShadcnBlazor.Switches @attribute [Authorize(Policy = Permissions.Themes.Edit)] @inject HttpClient HttpClient @inject NavigationManager Navigation @inject ToastService ToastService @inject FrontendService FrontendService Update theme Update the theme Back Continue Name Version Author Is Enabled CSS Content @code { [Parameter] public int Id { get; set; } private UpdateThemeDto Request; private ThemeDto Theme; private Editor Editor; private async Task LoadAsync(LazyLoader _) { var theme = await HttpClient.GetFromJsonAsync($"api/admin/themes/{Id}"); Theme = theme!; Request = ThemeMapper.ToUpdate(Theme); } private async Task OnSubmitAsync(EditContext editContext, ValidationMessageStore validationMessageStore) { Request.CssContent = await Editor.GetValueAsync(); var response = await HttpClient.PatchAsJsonAsync( $"/api/admin/themes/{Theme.Id}", Request, SerializationContext.Default.Options ); if (!response.IsSuccessStatusCode) { await ProblemDetailsHelper.HandleProblemDetailsAsync(response, Request, validationMessageStore); return false; } await ToastService.SuccessAsync( "Theme update", $"Successfully updated theme {Request.Name}" ); await FrontendService.ReloadAsync(); Navigation.NavigateTo("/admin/system?tab=themes"); return true; } }