@page "/admin/servers/templates/{Id:int}" @using System.Net @using LucideBlazor @using Moonlight.Frontend.Infrastructure.Helpers @using MoonlightServers.Shared @using MoonlightServers.Shared.Admin.Templates @using ShadcnBlazor.Buttons @using ShadcnBlazor.Cards @using ShadcnBlazor.Emptys @using ShadcnBlazor.Extras.Common @using ShadcnBlazor.Extras.Forms @using ShadcnBlazor.Extras.Toasts @using ShadcnBlazor.Fields @using ShadcnBlazor.Inputs @using ShadcnBlazor.Tab @inject HttpClient HttpClient @inject NavigationManager Navigation @inject ToastService ToastService @if (Template == null) { Template not found A template with this id cannot be found } else { Update Template Update template @Template.Name Back Continue Meta Lifecycle Installation Variables Docker Images Files Name Author Version Description Donate URL Update URL Startup Commands Stop Command Online Texts Docker Image Shell Script } @code { [Parameter] public int Id { get; set; } private UpdateTemplateDto Request; private DetailedTemplateDto? Template; private ScriptEditor ScriptEditor; private async Task LoadAsync(LazyLoader _) { // Meta var metaResponse = await HttpClient.GetAsync($"api/admin/servers/templates/{Id}"); if (!metaResponse.IsSuccessStatusCode) { if (metaResponse.StatusCode == HttpStatusCode.NotFound) return; metaResponse.EnsureSuccessStatusCode(); return; } Template = await metaResponse.Content.ReadFromJsonAsync( SerializationContext.Default.Options ); if (Template == null) return; Request = TemplateMapper.ToRequest(Template); } private async Task OnSubmitAsync(EditContext context, ValidationMessageStore validationMessageStore) { await ScriptEditor.SubmitAsync(); var response = await HttpClient.PutAsJsonAsync( $"/api/admin/servers/templates/{Id}", Request, SerializationContext.Default.Options ); if (!response.IsSuccessStatusCode) { await ProblemDetailsHelper.HandleProblemDetailsAsync(response, Request, validationMessageStore); return false; } await ToastService.SuccessAsync( "Template Update", $"Successfully updated template {Request.Name}" ); Navigation.NavigateTo("/admin/servers?tab=templates"); return true; } }