A remote thread brings the replies that never reached us
The context of a remote post showed only what PrivaPub happened to hold: replies from servers nobody here follows were never seen, and only the ancestors were ever fetched. Now a persona opening a public remote thread queues FetchReplies for the post and its root, at most once an hour each. The job reads the thread's own collection first (FEP-7888 `context`, which Mastodon 4.5+ serves with every reply at any depth; posts or, as FEP-f228 allows, the activities that made them), and otherwise the post's `replies` (PeerTube's `comments`) and the replies' own, two levels down. At most 5 pages and 100 posts a job, signed by the instance actor, never a persona; each post is fetched from its own origin and stored through StoreContext, so only public and unlisted ones are kept. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
This commit is contained in:
1 parent
bbeeda7268
commit
0695c08ac3
12 files changed
+344
-5
No files matched your search
@@ -203,6 +203,11 @@ namespace PrivaPub.Api.Mastodon.Controllers
|
||||
frontier.Add(child.ID);
|
||||
}
|
||||
}
|
||||
// a persona opening a public remote thread has its replies read from their servers, for the next look (once an hour)
|
||||
if (MyId != default)
|
||||
await _jobs.EnqueueMany(new[] { post, ancestors.FirstOrDefault() }
|
||||
.Where(p => p is { IsFederatedCopy: true, Visibility: PostVisibility.Public or PostVisibility.Unlisted }).DistinctBy(p => p.ID)
|
||||
.Select(p => Federation.Inbox.RepliesJobHandler.For(p, 1)), token);
|
||||
return Json(new Context
|
||||
{
|
||||
Ancestors = await _mapper.Statuses(ancestors, MyId, token),
|
||||
|
||||
Reference in new issue
Block a user