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.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<ReportsResponse> GetReports(bool resolved = false)
public async Task<ReportsQuery> 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<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.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> 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<StatusEntity> 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<StatusEntity>? Statuses { get; set; }
[J("notes")] public string[]? Notes { get; set; }
}