From 471516f72915e4f7a3655d1f1b93014c9526faff Mon Sep 17 00:00:00 2001 From: Laura Hausmann Date: Sat, 27 Jan 2024 03:44:33 +0100 Subject: [PATCH] Fix follow accept rendering --- .../ActivityPub/ActivityHandlerService.cs | 8 +++++--- .../ActivityPub/ActivityRenderer.cs | 19 ++++++++++++++----- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/Iceshrimp.Backend/Core/Federation/ActivityPub/ActivityHandlerService.cs b/Iceshrimp.Backend/Core/Federation/ActivityPub/ActivityHandlerService.cs index e6557ca1..ff78d967 100644 --- a/Iceshrimp.Backend/Core/Federation/ActivityPub/ActivityHandlerService.cs +++ b/Iceshrimp.Backend/Core/Federation/ActivityPub/ActivityHandlerService.cs @@ -78,9 +78,11 @@ public class ActivityHandlerService( return; } - var acceptActivity = activityRenderer.RenderAccept(followeeActor, requestId); - var keypair = await db.UserKeypairs.FirstAsync(p => p.User == followee); - var payload = await acceptActivity.SignAndCompact(keypair); + var acceptActivity = activityRenderer.RenderAccept(followeeActor, + activityRenderer.RenderFollow(followerActor, + followeeActor, requestId)); + var keypair = await db.UserKeypairs.FirstAsync(p => p.User == followee); + var payload = await acceptActivity.SignAndCompact(keypair); var inboxUri = follower.SharedInbox ?? follower.Inbox ?? throw new Exception("Can't accept follow: user has no inbox"); var request = await httpRqSvc.PostSigned(inboxUri, payload, "application/activity+json", followee, keypair); diff --git a/Iceshrimp.Backend/Core/Federation/ActivityPub/ActivityRenderer.cs b/Iceshrimp.Backend/Core/Federation/ActivityPub/ActivityRenderer.cs index 1539a2a0..05379839 100644 --- a/Iceshrimp.Backend/Core/Federation/ActivityPub/ActivityRenderer.cs +++ b/Iceshrimp.Backend/Core/Federation/ActivityPub/ActivityRenderer.cs @@ -14,16 +14,25 @@ public class ActivityRenderer(IOptions config) { }; } - public ASActivity RenderAccept(ASObject followeeActor, string requestId) { + public ASActivity RenderAccept(ASObject actor, ASObject obj) { return new ASActivity { Id = $"https://{config.Value.WebDomain}/activities/{Guid.NewGuid().ToString().ToLowerInvariant()}", Type = "https://www.w3.org/ns/activitystreams#Accept", Actor = new ASActor { - Id = followeeActor.Id + Id = actor.Id }, - Object = new ASObject { - Id = requestId - } + Object = obj + }; + } + + public ASActivity RenderFollow(ASObject followerActor, ASObject followeeActor, string requestId) { + return new ASActivity { + Id = requestId, + Type = ASActivity.Types.Follow, + Actor = new ASActor { + Id = followerActor.Id + }, + Object = followeeActor }; } } \ No newline at end of file