From d88518836ba18f3ecce80f05239db06e0293d89a Mon Sep 17 00:00:00 2001 From: notfire Date: Sun, 30 Mar 2025 22:13:02 -0400 Subject: [PATCH] i wonder if this will work --- .../Controllers/Pleroma/AdminController.cs | 22 ++++++++++++++++--- .../Pleroma/Schemas/ReportsResponse.cs | 22 ++++++++----------- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/Iceshrimp.Backend/Controllers/Pleroma/AdminController.cs b/Iceshrimp.Backend/Controllers/Pleroma/AdminController.cs index 054668d7..9c3efc42 100644 --- a/Iceshrimp.Backend/Controllers/Pleroma/AdminController.cs +++ b/Iceshrimp.Backend/Controllers/Pleroma/AdminController.cs @@ -1,7 +1,6 @@ using System.Net; using System.Net.Mime; using Iceshrimp.Backend.Controllers.Mastodon.Attributes; -using Iceshrimp.Backend.Controllers.Mastodon.Schemas.Entities; using Iceshrimp.Backend.Controllers.Pleroma.Schemas; using Iceshrimp.Backend.Controllers.Shared.Attributes; using Iceshrimp.Backend.Controllers.Web.Renderers; @@ -32,7 +31,7 @@ public class AdminController( [HttpGet("/api/v1/pleroma/admin/reports")] [Authenticate("admin:read:reports")] [ProducesResults(HttpStatusCode.OK)] - public async Task GetReports(bool resolved = false) + public async Task GetReports(bool resolved = false) { var user = HttpContext.GetUserOrFail(); var reports = await db.Reports @@ -77,7 +76,7 @@ public class AdminController( } - var resps = new ReportsResponse() + var resps = new ReportsQuery() { Total = reportsList.Count, Reports = reportsList @@ -85,4 +84,21 @@ public class AdminController( return resps; } + + [HttpPost("/api/v1/pleroma/admin/reports")] + [Authenticate("admin:read:reports")] + [ProducesResults(HttpStatusCode.OK)] + public async Task> SetReportState(ReportsQuery query) + { + var user = HttpContext.GetUserOrFail(); + + foreach (var list in query.Reports) + { + var report = await db.Reports.Where(p => p.Id == list.Id).FirstOrDefaultAsync() + ?? throw GracefulException.NotFound("Report not found"); + report.Resolved = list.State == "closed"; + } + + return this.GetReports(); + } } \ No newline at end of file diff --git a/Iceshrimp.Backend/Controllers/Pleroma/Schemas/ReportsResponse.cs b/Iceshrimp.Backend/Controllers/Pleroma/Schemas/ReportsResponse.cs index c6ef64ff..3ac9538c 100644 --- a/Iceshrimp.Backend/Controllers/Pleroma/Schemas/ReportsResponse.cs +++ b/Iceshrimp.Backend/Controllers/Pleroma/Schemas/ReportsResponse.cs @@ -1,13 +1,9 @@ using Iceshrimp.Backend.Controllers.Mastodon.Schemas.Entities; -using Iceshrimp.Backend.Core.Database.Tables; -using Iceshrimp.Frontend.Pages.Settings; -using Iceshrimp.Shared.Schemas.Web; -using Newtonsoft.Json; using J = System.Text.Json.Serialization.JsonPropertyNameAttribute; namespace Iceshrimp.Backend.Controllers.Pleroma.Schemas; -public class ReportsResponse +public class ReportsQuery { [J("total")] public int Total { get; set; } [J("reports")] public required List Reports { get; set; } @@ -15,12 +11,12 @@ public class ReportsResponse public class Reports { - [J("account")] public required AccountEntity Account { get; set; } - [J("actor")] public required AccountEntity Actor { get; set; } - [J("id")] public required string Id { get; set; } - [J("created_at")] public required DateTime CreatedAt { get; set; } - [J("state")] public required string State { get; set; } - [J("content")] public required string Content { get; set; } - [J("statuses")] public required IEnumerable Statuses { get; set; } - [J("notes")] public required string[] Notes { get; set; } + [J("account")] public AccountEntity? Account { get; set; } + [J("actor")] public AccountEntity? Actor { get; set; } + [J("id")] public required string Id { get; set; } + [J("created_at")] public DateTime? CreatedAt { get; set; } + [J("state")] public required string State { get; set; } + [J("content")] public string? Content { get; set; } + [J("statuses")] public IEnumerable? Statuses { get; set; } + [J("notes")] public string[]? Notes { get; set; } } \ No newline at end of file