this took far too long if this is what it is
Some checks are pending
/ test-build-and-push (push) Waiting to run

This commit is contained in:
notfire 2025-03-30 21:39:00 -04:00
parent 234007efd1
commit 684c66b112
Signed by: notfire
GPG key ID: 3AFDACAAB4E56B16
2 changed files with 33 additions and 20 deletions

View file

@ -1,15 +1,18 @@
using System.Net; using System.Net;
using System.Net.Mime; using System.Net.Mime;
using Iceshrimp.Backend.Controllers.Mastodon.Attributes; using Iceshrimp.Backend.Controllers.Mastodon.Attributes;
using Iceshrimp.Backend.Controllers.Mastodon.Schemas.Entities;
using Iceshrimp.Backend.Controllers.Pleroma.Schemas; using Iceshrimp.Backend.Controllers.Pleroma.Schemas;
using Iceshrimp.Backend.Controllers.Shared.Attributes; using Iceshrimp.Backend.Controllers.Shared.Attributes;
using Iceshrimp.Backend.Controllers.Web.Renderers; using Iceshrimp.Backend.Controllers.Web.Renderers;
using Iceshrimp.Backend.Core.Database; using Iceshrimp.Backend.Core.Database;
using Iceshrimp.Backend.Core.Extensions; using Iceshrimp.Backend.Core.Extensions;
using Iceshrimp.Backend.Core.Middleware;
using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.RateLimiting; using Microsoft.AspNetCore.RateLimiting;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using NoteRenderer = Iceshrimp.Backend.Controllers.Mastodon.Renderers.NoteRenderer;
namespace Iceshrimp.Backend.Controllers.Pleroma; namespace Iceshrimp.Backend.Controllers.Pleroma;
@ -19,13 +22,15 @@ namespace Iceshrimp.Backend.Controllers.Pleroma;
[Produces(MediaTypeNames.Application.Json)] [Produces(MediaTypeNames.Application.Json)]
public class AdminController( public class AdminController(
DatabaseContext db, DatabaseContext db,
ReportRenderer reportRenderer ReportRenderer reportRenderer,
NoteRenderer noteRenderer
) : ControllerBase ) : ControllerBase
{ {
[HttpGet("/api/v1/pleroma/admin/reports")] [HttpGet("/api/v1/pleroma/admin/reports")]
[ProducesResults(HttpStatusCode.OK)] [ProducesResults(HttpStatusCode.OK)]
public async Task<ReportsResponse> GetReports(bool resolved = false) public async Task<ReportsResponse> GetReports(bool resolved = false)
{ {
var user = HttpContext.GetUserOrFail();
var reports = await db.Reports var reports = await db.Reports
.IncludeCommonProperties() .IncludeCommonProperties()
.Where(p => p.Resolved == resolved) .Where(p => p.Resolved == resolved)
@ -36,22 +41,30 @@ public class AdminController(
var reportsList = new List<Reports>(); var reportsList = new List<Reports>();
foreach (var r in rendered) foreach (var r in rendered)
{ {
reportsList.Add(new Reports() foreach (var n in r.Notes)
{ {
Account = r.TargetUser, var note = await db.Notes
Actor = r.Reporter, .IncludeCommonProperties()
Id = r.Id, .Where(p => p.Id == n.Id)
CreatedAt = r.CreatedAt, .RenderAllForMastodonAsync(noteRenderer, user);
State = r.Resolved ? "resolved" : "open",
Content = r.Comment, reportsList.Add(new Reports()
Statuses = r.Notes, {
Notes = r.Notes // ??? 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() var resps = new ReportsResponse()
{ {
Total = 1, Total = reportsList.Count,
Reports = reportsList Reports = reportsList
}; };

View file

@ -1,3 +1,4 @@
using Iceshrimp.Backend.Controllers.Mastodon.Schemas.Entities;
using Iceshrimp.Backend.Core.Database.Tables; using Iceshrimp.Backend.Core.Database.Tables;
using Iceshrimp.Frontend.Pages.Settings; using Iceshrimp.Frontend.Pages.Settings;
using Iceshrimp.Shared.Schemas.Web; using Iceshrimp.Shared.Schemas.Web;
@ -14,12 +15,11 @@ public class ReportsResponse
public class Reports public class Reports
{ {
[J("account")] public required UserResponse Account { get; set; } [J("account")] public required UserResponse Account { get; set; }
[J("actor")] public required UserResponse Actor { get; set; } [J("actor")] public required UserResponse Actor { get; set; }
[J("id")] public required string Id { get; set; } [J("id")] public required string Id { get; set; }
[J("created_at")] public required DateTime CreatedAt { get; set; } [J("created_at")] public required DateTime CreatedAt { get; set; }
[J("state")] public required string State { get; set; } [J("state")] public required string State { get; set; }
[J("content")] public required string Content { get; set; } [J("content")] public required string Content { get; set; }
[J("statuses")] public required NoteResponse[] Statuses { get; set; } [J("statuses")] public required IEnumerable<StatusEntity> Statuses { get; set; }
[J("notes")] public required NoteResponse[] Notes { get; set; }
} }