From 6f8472bc9fc1e0bdf11392060fd7cc99cbb502e8 Mon Sep 17 00:00:00 2001
From: thepra
Date: Mon, 5 Oct 2026 11:44:09 +0200
Subject: [PATCH] A reply or boost awaiting its author's approval says so
GoToSocial lets an author approve replies, likes and boosts first. PrivaPub now asks that author and marks the
persona's reply or boost privapub.approval: pending until the answer, or rejected; the card shows which, with an
hourglass or a cross. One the policy shuts out is refused (422) and shown as the error it is.
Co-Authored-By: Claude Opus 5.5
Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
---
CLAUDE.md | 3 +++
Components/Content.razor | 9 +++++++++
Models/Mastodon/PrivaPubStatus.cs | 3 +++
Resources/AllStrings.it.resx | 6 ++++++
Resources/AllStrings.resx | 6 ++++++
5 files changed, 27 insertions(+)
diff --git a/CLAUDE.md b/CLAUDE.md
index 68f8729..aa14722 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -237,6 +237,9 @@ supplies:
- **Threads** (`Pages/ExpandMessage.razor` at `/expand/{id}`): opening a remote thread makes PrivaPub read its replies
from their servers (its FEP-7888 `context`, else `replies`), so the page reads the thread again after 4 and 15 seconds
and adds what was found, in the thread's order.
+- **Interaction policies** (GoToSocial's): a reply or boost whose target's author must approve it shows so on its card
+ (`privapub.approval`: pending, then nothing once approved, or rejected); one the policy shuts out is refused by
+ PrivaPub (422) and shown as an error.
- **Settings** (`Pages/Settings.razor`, `Components/Settings/`): the persona's profile (`ProfileEditor`:
`update_credentials` as multipart, its words as written from `Account.Source`, pictures, fields, locked, bot,
discoverable, indexable and posting defaults; the composer starts a new post at its default visibility), its mutes,
diff --git a/Components/Content.razor b/Components/Content.razor
index 04f547a..fb510ad 100644
--- a/Components/Content.razor
+++ b/Components/Content.razor
@@ -179,6 +179,15 @@
}
+ @if (status.Privapub?.Approval is "pending" or "rejected")
+ {
+ @* its target's author must approve it (GoToSocial's interaction policies): until then it went to that author alone *@
+
+
+ @(status.Privapub.Approval == "pending" ? Localizer["Waiting for its author's approval"] : Localizer["Its author did not approve it"])
+