From 83cc932fe95d59c02696f278a7f4bf7397c5e93a Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sun, 5 Jan 2025 15:24:10 -0700 Subject: [PATCH] Update AP Status Transformer, fix inReplyTo. Fixes #5409 --- .../ActivityPub/StatusTransformer.php | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/app/Transformer/ActivityPub/StatusTransformer.php b/app/Transformer/ActivityPub/StatusTransformer.php index c7f61b88b..86beb321c 100644 --- a/app/Transformer/ActivityPub/StatusTransformer.php +++ b/app/Transformer/ActivityPub/StatusTransformer.php @@ -3,6 +3,7 @@ namespace App\Transformer\ActivityPub; use App\Services\MediaService; +use App\Services\StatusService; use App\Status; use App\Util\Lexer\Autolink; use League\Fractal; @@ -11,7 +12,16 @@ class StatusTransformer extends Fractal\TransformerAbstract { public function transform(Status $status) { - $content = $status->caption ? nl2br(Autolink::create()->autolink($status->caption)) : ""; + $content = $status->caption ? nl2br(Autolink::create()->autolink($status->caption)) : ''; + + $inReplyTo = null; + + if ($status->in_reply_to_id) { + $reply = StatusService::get($status->in_reply_to_id, true); + if ($reply && isset($reply['url'])) { + $inReplyTo = $reply['url']; + } + } return [ '@context' => [ @@ -25,30 +35,20 @@ class StatusTransformer extends Fractal\TransformerAbstract ], ], 'id' => $status->url(), - - // TODO: handle other types 'type' => 'Note', - - // XXX: CW Title 'summary' => null, 'content' => $content, - 'inReplyTo' => null, - - // TODO: fix date format + 'inReplyTo' => $inReplyTo, 'published' => $status->created_at->toAtomString(), 'url' => $status->url(), 'attributedTo' => $status->profile->permalink(), 'to' => [ - // TODO: handle proper scope 'https://www.w3.org/ns/activitystreams#Public', ], 'cc' => [ - // TODO: add cc's $status->profile->permalink('/followers'), ], 'sensitive' => (bool) $status->is_nsfw, - 'atomUri' => $status->url(), - 'inReplyToAtomUri' => null, 'attachment' => MediaService::activitypub($status->id), 'tag' => [], 'location' => $status->place_id ? [