From 684c66b112f78cdc07d241ba0fa5a7684339bc64 Mon Sep 17 00:00:00 2001 From: notfire Date: Sun, 30 Mar 2025 21:39:00 -0400 Subject: [PATCH] this took far too long if this is what it is --- .../Controllers/Pleroma/AdminController.cs | 37 +++++++++++++------ .../Pleroma/Schemas/ReportsResponse.cs | 16 ++++---- 2 files changed, 33 insertions(+), 20 deletions(-) diff --git a/Iceshrimp.Backend/Controllers/Pleroma/AdminController.cs b/Iceshrimp.Backend/Controllers/Pleroma/AdminController.cs index eacdfc41..1500d9ee 100644 --- a/Iceshrimp.Backend/Controllers/Pleroma/AdminController.cs +++ b/Iceshrimp.Backend/Controllers/Pleroma/AdminController.cs @@ -1,15 +1,18 @@ 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; using Iceshrimp.Backend.Core.Database; using Iceshrimp.Backend.Core.Extensions; +using Iceshrimp.Backend.Core.Middleware; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.RateLimiting; using Microsoft.EntityFrameworkCore; +using NoteRenderer = Iceshrimp.Backend.Controllers.Mastodon.Renderers.NoteRenderer; namespace Iceshrimp.Backend.Controllers.Pleroma; @@ -19,13 +22,15 @@ namespace Iceshrimp.Backend.Controllers.Pleroma; [Produces(MediaTypeNames.Application.Json)] public class AdminController( DatabaseContext db, - ReportRenderer reportRenderer + ReportRenderer reportRenderer, + NoteRenderer noteRenderer ) : ControllerBase { [HttpGet("/api/v1/pleroma/admin/reports")] [ProducesResults(HttpStatusCode.OK)] public async Task GetReports(bool resolved = false) { + var user = HttpContext.GetUserOrFail(); var reports = await db.Reports .IncludeCommonProperties() .Where(p => p.Resolved == resolved) @@ -36,22 +41,30 @@ public class AdminController( var reportsList = new List(); foreach (var r in rendered) { - reportsList.Add(new Reports() + foreach (var n in r.Notes) { - Account = r.TargetUser, - Actor = r.Reporter, - Id = r.Id, - CreatedAt = r.CreatedAt, - State = r.Resolved ? "resolved" : "open", - Content = r.Comment, - Statuses = r.Notes, - Notes = r.Notes // ??? - }); + var note = await db.Notes + .IncludeCommonProperties() + .Where(p => p.Id == n.Id) + .RenderAllForMastodonAsync(noteRenderer, user); + + reportsList.Add(new Reports() + { + Account = r.TargetUser, + Actor = r.Reporter, + Id = r.Id, + CreatedAt = r.CreatedAt, + State = r.Resolved ? "resolved" : "open", + Content = r.Comment, + Statuses = note + }); + } + } var resps = new ReportsResponse() { - Total = 1, + Total = reportsList.Count, Reports = reportsList }; diff --git a/Iceshrimp.Backend/Controllers/Pleroma/Schemas/ReportsResponse.cs b/Iceshrimp.Backend/Controllers/Pleroma/Schemas/ReportsResponse.cs index 27b6d9df..0fe9e76e 100644 --- a/Iceshrimp.Backend/Controllers/Pleroma/Schemas/ReportsResponse.cs +++ b/Iceshrimp.Backend/Controllers/Pleroma/Schemas/ReportsResponse.cs @@ -1,3 +1,4 @@ +using Iceshrimp.Backend.Controllers.Mastodon.Schemas.Entities; using Iceshrimp.Backend.Core.Database.Tables; using Iceshrimp.Frontend.Pages.Settings; using Iceshrimp.Shared.Schemas.Web; @@ -14,12 +15,11 @@ public class ReportsResponse public class Reports { - [J("account")] public required UserResponse Account { get; set; } - [J("actor")] public required UserResponse 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 NoteResponse[] Statuses { get; set; } - [J("notes")] public required NoteResponse[] Notes { get; set; } + [J("account")] public required UserResponse Account { get; set; } + [J("actor")] public required UserResponse 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; } } \ No newline at end of file