@using LucideBlazor
@using Moonlight.Frontend.Infrastructure.Helpers
@using MoonlightServers.Shared
@using MoonlightServers.Shared.Admin.Templates
@using ShadcnBlazor.Accordions
@using ShadcnBlazor.Buttons
@using ShadcnBlazor.Extras.AlertDialogs
@using ShadcnBlazor.Extras.Forms
@using ShadcnBlazor.Extras.Toasts
@using ShadcnBlazor.Fields
@using ShadcnBlazor.Inputs
@inject HttpClient HttpClient
@inject ToastService ToastService
@inject AlertDialogService AlertDialogService
@Request.DisplayName
Save changes
@code
{
[Parameter] public VariableDto Variable { get; set; }
[Parameter] public DetailedTemplateDto Template { get; set; }
[Parameter] public Func OnChanged { get; set; }
private UpdateVariableDto Request;
protected override void OnInitialized()
{
Request = new UpdateVariableDto()
{
DisplayName = Variable.DisplayName,
DefaultValue = Variable.DefaultValue,
EnvName = Variable.EnvName,
Description = Variable.Description
};
}
private async Task OnValidSubmitAsync(EditContext editContext, ValidationMessageStore validationMessageStore)
{
var response = await HttpClient.PutAsJsonAsync(
$"api/admin/servers/templates/{Template.Id}/variables/{Variable.Id}",
Request,
SerializationContext.Default.Options
);
if (!response.IsSuccessStatusCode)
{
await ProblemDetailsHelper.HandleProblemDetailsAsync(response, Request, validationMessageStore);
return false;
}
await ToastService.SuccessAsync(
"Variable Update",
$"Successfully updated variable {Request.DisplayName}"
);
await OnChanged.Invoke();
return true;
}
private async Task DeleteAsync()
{
await AlertDialogService.ConfirmDangerAsync(
"Variable Deletion",
$"Do you really want to delete the variable {Variable.DisplayName}? This cannot be undone",
async () =>
{
var response = await HttpClient.DeleteAsync($"api/admin/servers/templates/{Template.Id}/variables/{Variable.Id}");
response.EnsureSuccessStatusCode();
await ToastService.SuccessAsync(
"Variable Deletion",
$"Variable {Variable.DisplayName} successfully deleted"
);
await OnChanged.Invoke();
}
);
}
}