浏览代码

Update AP Status Transformer, fix inReplyTo. Fixes #5409

Daniel Supernault 6 月之前
父节点
当前提交
83cc932fe9
共有 1 个文件被更改,包括 12 次插入12 次删除
  1. 12 12
      app/Transformer/ActivityPub/StatusTransformer.php

+ 12 - 12
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 ? [