R5 the server's own settings in decePub: instance, rules, announcements, relays, media limits, the staff's log, About
Build / Build (push) Successful in 1m5s
Build / Build (push) Successful in 1m5s
Administration's Pleroma placeholders give way to real sections: Instance (title, descriptions, contact, thumbnail, privacy policy, terms, the weekly activity), Rules, Announcements, Relays, Media limits and the Moderation log, next to Reports, blocked servers (now published or obfuscated), statistics and backups; moderators see Reports and the log. Every save sends the whole settings form built from the latest read, since PrivaPub replaces what it carries. /about shows the server's documents to anyone. The report dialog picks the rules a violation breaks, and reports show them. Announcements show above the feed tabs, dismissed and reacted to, live from the user stream. Login names the server. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WpVCoDeM1qUTRp4fXQdfof
This commit is contained in:
1 parent
b8d7858acb
commit
4c88980374
33 files changed
+3743
-239
No files matched your search
@@ -9,10 +9,11 @@ using PrivaPub.ClientModels.Admin;
|
||||
namespace decePubClient.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// What PrivaPub's moderators and administrators do as the root: reports (/clientapi/moderator), servers blocked
|
||||
/// for the whole instance, the federation statistics (the overview, the servers, one server's days and events, the
|
||||
/// ledger's events, the server's own days) and the backups (/clientapi/admin). PrivaPub checks the root's role on every
|
||||
/// call. Lists come back empty and values null on failure; nothing throws.
|
||||
/// What PrivaPub's moderators and administrators do as the root: reports and the staff's log (/clientapi/moderator),
|
||||
/// servers blocked for the whole instance, the federation statistics (the overview, the servers, one server's days and
|
||||
/// events, the ledger's events, the server's own days) and the backups (/clientapi/admin). The server's own settings,
|
||||
/// announcements and relays are InstanceAdminService's. PrivaPub checks the root's role on every call. Lists come back
|
||||
/// empty and values null on failure; nothing throws.
|
||||
/// </summary>
|
||||
public class AdminService(IHttpService httpService, ILoggingService logger, CoalescingStringLocalizer localizer)
|
||||
{
|
||||
@@ -34,6 +35,21 @@ namespace decePubClient.Services
|
||||
return response.IsSuccessStatusCode ? new WebResult() : await response.Content.ReadWebResult(response.StatusCode, localizer, cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>One page of the staff's log, newest first: those before `before` (the previous page's Next) when given.
|
||||
/// Administrators read all of it with login names; a moderator reads what isn't about a login. Null on failure.</summary>
|
||||
public async Task<ViewAdminActionsPage> Log(string before, int limit, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var parameters = new List<string> { $"limit={limit}" };
|
||||
if (before is { Length: > 0 })
|
||||
parameters.Add($"before={Uri.EscapeDataString(before)}");
|
||||
using var response = await httpService.Get(APIs.ClientApi.GET_ModeratorLog, [.. parameters], cancellationToken: cancellationToken);
|
||||
if (response.IsSuccessStatusCode)
|
||||
return await response.DefaultReadFromJsonAsync<ViewAdminActionsPage>(cancellationToken);
|
||||
|
||||
await LogFailure(response, nameof(Log), cancellationToken);
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>The servers blocked for everyone here, by name.</summary>
|
||||
public async Task<List<ViewDomainBlock>> ServerBlocks(CancellationToken cancellationToken = default)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user