@using System.Text.Json @using MoonCore.Blazor.Tailwind.Alerts @using MoonCore.Blazor.Tailwind.Modals @using MoonCore.Blazor.Tailwind.Toasts @using MoonlightServers.Frontend.UI.Components.Stars.Modals @using MoonlightServers.Shared.Http.Requests.Admin.Stars @using MoonlightServers.Shared.Models @inject ILogger Logger @inject ModalService ModalService @inject AlertService AlertService @inject ToastService ToastService
@if (HasParseError) { } else {
@foreach (var configuration in Configurations) {
@configuration.File
}
} @code { [Parameter] public UpdateStarRequest Request { get; set; } private List Configurations; private bool HasParseError = false; protected override Task OnInitializedAsync() { ReadFromJson(); return Task.CompletedTask; } private async Task AddConfig() { Func onSubmit = async configuration => { Configurations.Add(configuration); SaveChanges(); await InvokeAsync(StateHasChanged); await ToastService.Success("Successfully created parse configuration"); }; await ModalService.Launch(parameters => { parameters.Add("OnSubmit", onSubmit); }, "max-w-xl"); } private async Task UpdateConfig(ParseConfiguration configuration) { Func onSubmit = async _ => { SaveChanges(); await InvokeAsync(StateHasChanged); await ToastService.Success("Successfully updated parse configuration"); }; await ModalService.Launch(parameters => { parameters.Add("OnSubmit", onSubmit); parameters.Add("Configuration", configuration); }, "max-w-xl"); } private async Task DeleteConfig(ParseConfiguration configuration) { await AlertService.ConfirmDanger( "Parse configuration deletion", "Do you really want to delete the selected parse configuration", async () => { Configurations.Remove(configuration); SaveChanges(); await InvokeAsync(StateHasChanged); await ToastService.Success("Successfully deleted parse configuration"); } ); } private void SaveChanges() { Request.ParseConfiguration = JsonSerializer.Serialize(Configurations); ReadFromJson(); } private void ReadFromJson() { try { Configurations = JsonSerializer.Deserialize>(Request.ParseConfiguration) ?? throw new ArgumentNullException(); HasParseError = false; } catch (Exception e) { Logger.LogWarning("An error occured while reading parse configuration: {e}", e); HasParseError = true; } } }