Home timelines, mention notifications, and threads that fetch their parents
Fanout writes a TimelineEntry for every persona a post should reach: the author, local followers of a local author, local followers of a remote one, the members of a direct conversation or a circle. Mastodon's home rules apply when it is written: a reply shows only to followers of both sides (or to the one replied to), a reblog only where reblogs are wanted. A mention of a local persona becomes a Mention notification. Inbound posts are now also kept when a persona follows their author. RemotePosts holds what CreateHandler and backfill share: building a Post from a note, and fetching a public parent the first time a reply to it arrives, so its author is known (a reply to an unknown or non-public parent stays out of home timelines). Each fetched ancestor queues a FetchAncestors job for the next one, up to ten deep. /clientapi/timeline/home and /clientapi/notifications (with /notifications/read) page by max_id for the persona's own root only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012CzABvBkbcFqoHdmi8b9WB
This commit is contained in:
1 parent
a76cc34557
commit
e99b76dbd7
12 files changed
+609
-52
No files matched your search
@@ -18,6 +18,7 @@ using PrivaPub.Federation.Moderation;
|
||||
using PrivaPub.Federation.Inbox.Handlers;
|
||||
using PrivaPub.Domain.Content;
|
||||
using PrivaPub.Domain.Social;
|
||||
using PrivaPub.Domain.Timelines;
|
||||
using PrivaPub.Infrastructure.Http;
|
||||
using PrivaPub.Infrastructure.Jobs;
|
||||
using Microsoft.Extensions.Options;
|
||||
@@ -58,6 +59,7 @@ namespace PrivaPub.Middleware
|
||||
.AddSingleton<IRemoteActorService, RemoteActorService>()
|
||||
.AddSingleton<IDeliveryService, DeliveryService>()
|
||||
.AddSingleton<IOutboxPublisher, OutboxPublisher>()
|
||||
.AddSingleton<IFanout, Fanout>()
|
||||
.AddSingleton<IInboxReceiver, InboxReceiver>()
|
||||
.AddSingleton<IActivityHandler, FollowHandler>()
|
||||
.AddSingleton<IActivityHandler, AcceptHandler>()
|
||||
@@ -67,6 +69,8 @@ namespace PrivaPub.Middleware
|
||||
.AddSingleton<IActivityHandler, DeleteHandler>()
|
||||
.AddSingleton<IActivityHandler, UpdateHandler>()
|
||||
.AddSingleton<IJobHandler, InboxProcessor>()
|
||||
.AddSingleton<IRemotePosts, RemotePosts>()
|
||||
.AddSingleton<IJobHandler, AncestorsJobHandler>()
|
||||
.AddSingleton<IJobQueue, JobQueue>()
|
||||
.AddSingleton<IHostCircuitBreaker, HostCircuitBreaker>()
|
||||
.AddSingleton<IJobHandler, DeliveryJobHandler>()
|
||||
@@ -123,6 +127,7 @@ namespace PrivaPub.Middleware
|
||||
.AddTransient<IGroupUsersService, GroupUsersService>()
|
||||
.AddTransient<IPostsService, PostsService>()
|
||||
.AddTransient<IFollowService, FollowService>()
|
||||
.AddTransient<ITimelineService, TimelineService>()
|
||||
.AddSingleton<AppConfigurationService>()
|
||||
.AddHttpContextAccessor()
|
||||
.AddMemoryCache()
|
||||
|
||||
Reference in new issue
Block a user