i wonder if this will work
Some checks are pending
/ test-build-and-push (push) Waiting to run

This commit is contained in:
notfire 2025-03-30 22:13:02 -04:00
parent de57d12097
commit d88518836b
Signed by: notfire
GPG key ID: 3AFDACAAB4E56B16
2 changed files with 28 additions and 16 deletions

View file

@ -1,7 +1,6 @@
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;
@ -32,7 +31,7 @@ public class AdminController(
[HttpGet("/api/v1/pleroma/admin/reports")] [HttpGet("/api/v1/pleroma/admin/reports")]
[Authenticate("admin:read:reports")] [Authenticate("admin:read:reports")]
[ProducesResults(HttpStatusCode.OK)] [ProducesResults(HttpStatusCode.OK)]
public async Task<ReportsResponse> GetReports(bool resolved = false) public async Task<ReportsQuery> GetReports(bool resolved = false)
{ {
var user = HttpContext.GetUserOrFail(); var user = HttpContext.GetUserOrFail();
var reports = await db.Reports var reports = await db.Reports
@ -77,7 +76,7 @@ public class AdminController(
} }
var resps = new ReportsResponse() var resps = new ReportsQuery()
{ {
Total = reportsList.Count, Total = reportsList.Count,
Reports = reportsList Reports = reportsList
@ -85,4 +84,21 @@ public class AdminController(
return resps; return resps;
} }
[HttpPost("/api/v1/pleroma/admin/reports")]
[Authenticate("admin:read:reports")]
[ProducesResults(HttpStatusCode.OK)]
public async Task<Task<ReportsQuery>> 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();
}
} }

View file

@ -1,13 +1,9 @@
using Iceshrimp.Backend.Controllers.Mastodon.Schemas.Entities; 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; using J = System.Text.Json.Serialization.JsonPropertyNameAttribute;
namespace Iceshrimp.Backend.Controllers.Pleroma.Schemas; namespace Iceshrimp.Backend.Controllers.Pleroma.Schemas;
public class ReportsResponse public class ReportsQuery
{ {
[J("total")] public int Total { get; set; } [J("total")] public int Total { get; set; }
[J("reports")] public required List<Reports> Reports { get; set; } [J("reports")] public required List<Reports> Reports { get; set; }
@ -15,12 +11,12 @@ public class ReportsResponse
public class Reports public class Reports
{ {
[J("account")] public required AccountEntity Account { get; set; } [J("account")] public AccountEntity? Account { get; set; }
[J("actor")] public required AccountEntity Actor { get; set; } [J("actor")] public AccountEntity? 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 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 string? Content { get; set; }
[J("statuses")] public required IEnumerable<StatusEntity> Statuses { get; set; } [J("statuses")] public IEnumerable<StatusEntity>? Statuses { get; set; }
[J("notes")] public required string[] Notes { get; set; } [J("notes")] public string[]? Notes { get; set; }
} }