From ff28044cf6d3b749d06bd9f66c4dc455dd68cb53 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 23 Jan 2023 19:00:20 +0000 Subject: [PATCH] Issue 12603: Support quotes in the API --- src/Factory/Api/Mastodon/Status.php | 8 +++++++- src/Object/Api/Mastodon/Status.php | 9 ++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/Factory/Api/Mastodon/Status.php b/src/Factory/Api/Mastodon/Status.php index b32a6c510..bac9d1803 100644 --- a/src/Factory/Api/Mastodon/Status.php +++ b/src/Factory/Api/Mastodon/Status.php @@ -234,7 +234,13 @@ class Status extends BaseFactory $reshare = []; } - return new \Friendica\Object\Api\Mastodon\Status($item, $account, $counts, $userAttributes, $sensitive, $application, $mentions, $tags, $card, $attachments, $reshare, $poll); + if (!empty($item['quote-uri-id'])) { + $quote = $this->createFromUriId($item['quote-uri-id'], $uid, false)->toArray(); + } else { + $quote = []; + } + + return new \Friendica\Object\Api\Mastodon\Status($item, $account, $counts, $userAttributes, $sensitive, $application, $mentions, $tags, $card, $attachments, $reshare, $quote, $poll); } /** diff --git a/src/Object/Api/Mastodon/Status.php b/src/Object/Api/Mastodon/Status.php index 1e778a710..2fcbb10e3 100644 --- a/src/Object/Api/Mastodon/Status.php +++ b/src/Object/Api/Mastodon/Status.php @@ -75,6 +75,8 @@ class Status extends BaseDataTransferObject protected $content; /** @var Status|null */ protected $reblog = null; + /** @var Status|null */ + protected $quote = null; /** @var Application */ protected $application = null; /** @var Account */ @@ -98,7 +100,7 @@ class Status extends BaseDataTransferObject * @param array $item * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public function __construct(array $item, Account $account, Counts $counts, UserAttributes $userAttributes, bool $sensitive, Application $application, array $mentions, array $tags, Card $card, array $attachments, array $reblog, array $poll = null) + public function __construct(array $item, Account $account, Counts $counts, UserAttributes $userAttributes, bool $sensitive, Application $application, array $mentions, array $tags, Card $card, array $attachments, array $reblog, array $quote = null, array $poll = null) { $this->id = (string)$item['uri-id']; $this->created_at = DateTimeFormat::utc($item['created'], DateTimeFormat::JSON); @@ -134,6 +136,7 @@ class Status extends BaseDataTransferObject $this->pinned = $userAttributes->pinned; $this->content = BBCode::convertForUriId($item['uri-id'], BBCode::setMentionsToNicknames($item['raw-body'] ?? $item['body']), BBCode::MASTODON_API); $this->reblog = $reblog; + $this->quote = $quote; $this->application = $application->toArray(); $this->account = $account->toArray(); $this->media_attachments = $attachments; @@ -165,6 +168,10 @@ class Status extends BaseDataTransferObject $status['reblog'] = null; } + if (empty($status['quote'])) { + $status['quote'] = null; + } + return $status; } }