From d165af041ce7e2be243b69c555735c6aba61bc1d Mon Sep 17 00:00:00 2001 From: pancakes Date: Tue, 7 Jan 2025 12:03:01 +1000 Subject: [PATCH] [backend/razor] Add edit rule page --- Iceshrimp.Backend/Pages/Admin/Rules.razor | 5 ++ Iceshrimp.Backend/Pages/Admin/RulesEdit.razor | 65 +++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 Iceshrimp.Backend/Pages/Admin/RulesEdit.razor diff --git a/Iceshrimp.Backend/Pages/Admin/Rules.razor b/Iceshrimp.Backend/Pages/Admin/Rules.razor index a916370c..2b11ddd3 100644 --- a/Iceshrimp.Backend/Pages/Admin/Rules.razor +++ b/Iceshrimp.Backend/Pages/Admin/Rules.razor @@ -4,6 +4,7 @@ @using Iceshrimp.Backend.Core.Services @using Microsoft.AspNetCore.Components.Forms @using Microsoft.EntityFrameworkCore +@using Microsoft.AspNetCore.Components.Routing @inherits AdminComponentBase @@ -13,6 +14,7 @@ # Text & Description + Actions @foreach (var rule in _rules) { @@ -30,6 +32,9 @@ No description } + + Edit + } diff --git a/Iceshrimp.Backend/Pages/Admin/RulesEdit.razor b/Iceshrimp.Backend/Pages/Admin/RulesEdit.razor new file mode 100644 index 00000000..7a3b495f --- /dev/null +++ b/Iceshrimp.Backend/Pages/Admin/RulesEdit.razor @@ -0,0 +1,65 @@ +@page "/admin/rules/{Id}" +@using Iceshrimp.Backend.Components.Admin +@using Iceshrimp.Backend.Core.Database.Tables +@using Iceshrimp.Backend.Core.Middleware +@using Iceshrimp.Backend.Core.Services +@using Microsoft.EntityFrameworkCore +@using Microsoft.AspNetCore.Components.Forms +@inject NavigationManager Nav; +@inherits AdminComponentBase + + + + + + @for (var i = 1; i <= _count; i++) + { + + } + + + + + + + + +@code { + [Inject] public required InstanceService Instance { get; set; } + [Parameter] public required string Id { get; set; } + [SupplyParameterFromForm] private RuleModel Model { get; set; } = null!; + + private int _count; + private Rule? _rule; + + private class RuleModel + { + public int Order { get; set; } + public string Text { get; set; } = ""; + public string Description { get; set; } = ""; + } + + protected override void OnParametersSet() + { + Model ??= new RuleModel(); + } + + protected override async Task OnGet() + { + _rule = await Database.Rules.FirstOrDefaultAsync(p => p.Id == Id) + ?? throw GracefulException.RecordNotFound(); + _count = await Database.Rules.CountAsync(); + + Model.Order = _rule.Order; + Model.Text = _rule.Text; + Model.Description = _rule.Description ?? ""; + } + + private async Task OnSubmit() + { + _rule = await Database.Rules.FirstOrDefaultAsync(p => p.Id == Id) + ?? throw GracefulException.RecordNotFound(); + await Instance.UpdateRuleAsync(_rule, Model.Order, Model.Text, string.IsNullOrWhiteSpace(Model.Description) ? null : Model.Description); + Nav.NavigateTo("/admin/rules"); + } +} \ No newline at end of file