diff --git a/app/Transformer/Api/StatusStatelessTransformer.php b/app/Transformer/Api/StatusStatelessTransformer.php index 3ad409dee..2190303ed 100644 --- a/app/Transformer/Api/StatusStatelessTransformer.php +++ b/app/Transformer/Api/StatusStatelessTransformer.php @@ -6,74 +6,79 @@ use App\Status; use League\Fractal; use Cache; use App\Services\HashidService; +use App\Services\LikeService; use App\Services\MediaTagService; +use App\Services\StatusLabelService; +use App\Services\ProfileService; class StatusStatelessTransformer extends Fractal\TransformerAbstract { - protected $defaultIncludes = [ - 'account', - 'media_attachments', - ]; + protected $defaultIncludes = [ + 'account', + 'media_attachments', + ]; - public function transform(Status $status) - { - $taggedPeople = MediaTagService::get($status->id); + public function transform(Status $status) + { + $taggedPeople = MediaTagService::get($status->id); - return [ - '_v' => 1, - 'id' => (string) $status->id, - 'shortcode' => HashidService::encode($status->id), - 'uri' => $status->url(), - 'url' => $status->url(), - 'in_reply_to_id' => $status->in_reply_to_id, - 'in_reply_to_account_id' => $status->in_reply_to_profile_id, - 'reblog' => null, - 'content' => $status->rendered ?? $status->caption, - 'content_text' => $status->caption, - 'created_at' => $status->created_at->format('c'), - 'emojis' => [], - 'reblogs_count' => $status->reblogs_count ?? 0, - 'favourites_count' => $status->likes_count ?? 0, - 'reblogged' => null, - 'favourited' => null, - 'muted' => null, - 'sensitive' => (bool) $status->is_nsfw, - 'spoiler_text' => $status->cw_summary ?? '', - 'visibility' => $status->visibility ?? $status->scope, - 'application' => [ - 'name' => 'web', - 'website' => null - ], - 'language' => null, - 'pinned' => null, - 'mentions' => [], - 'tags' => [], - 'pf_type' => $status->type ?? $status->setType(), - 'reply_count' => (int) $status->reply_count, - 'comments_disabled' => $status->comments_disabled ? true : false, - 'thread' => false, - 'replies' => [], - 'parent' => [], - 'place' => $status->place, - 'local' => (bool) $status->local, - 'taggedPeople' => $taggedPeople - ]; - } + return [ + '_v' => 1, + 'id' => (string) $status->id, + 'shortcode' => HashidService::encode($status->id), + 'uri' => $status->url(), + 'url' => $status->url(), + 'in_reply_to_id' => $status->in_reply_to_id, + 'in_reply_to_account_id' => $status->in_reply_to_profile_id, + 'reblog' => null, + 'content' => $status->rendered ?? $status->caption, + 'content_text' => $status->caption, + 'created_at' => $status->created_at->format('c'), + 'emojis' => [], + 'reblogs_count' => 0, + 'favourites_count' => 0, + 'reblogged' => null, + 'favourited' => null, + 'muted' => null, + 'sensitive' => (bool) $status->is_nsfw, + 'spoiler_text' => $status->cw_summary ?? '', + 'visibility' => $status->visibility ?? $status->scope, + 'application' => [ + 'name' => 'web', + 'website' => null + ], + 'language' => null, + 'pinned' => null, + 'mentions' => [], + 'tags' => [], + 'pf_type' => $status->type ?? $status->setType(), + 'reply_count' => (int) $status->reply_count, + 'comments_disabled' => $status->comments_disabled ? true : false, + 'thread' => false, + 'replies' => [], + 'parent' => [], + 'place' => $status->place, + 'local' => (bool) $status->local, + 'taggedPeople' => $taggedPeople, + 'label' => StatusLabelService::get($status), + 'liked_by' => LikeService::likedBy($status) + ]; + } - public function includeAccount(Status $status) - { - $account = $status->profile; + public function includeAccount(Status $status) + { + $account = $status->profile; - return $this->item($account, new AccountTransformer()); - } + return $this->item($account, new AccountTransformer()); + } - public function includeMediaAttachments(Status $status) - { - return Cache::remember('status:transformer:media:attachments:'.$status->id, now()->addMinutes(3), function() use($status) { - if(in_array($status->type, ['photo', 'video', 'video:album', 'photo:album', 'loop', 'photo:video:album'])) { - $media = $status->media()->orderBy('order')->get(); - return $this->collection($media, new MediaTransformer()); - } - }); - } + public function includeMediaAttachments(Status $status) + { + return Cache::remember('status:transformer:media:attachments:'.$status->id, now()->addMinutes(3), function() use($status) { + if(in_array($status->type, ['photo', 'video', 'video:album', 'photo:album', 'loop', 'photo:video:album'])) { + $media = $status->media()->orderBy('order')->get(); + return $this->collection($media, new MediaTransformer()); + } + }); + } } diff --git a/app/Transformer/Api/StatusTransformer.php b/app/Transformer/Api/StatusTransformer.php index 718ea66e1..a4359ae76 100644 --- a/app/Transformer/Api/StatusTransformer.php +++ b/app/Transformer/Api/StatusTransformer.php @@ -2,81 +2,85 @@ namespace App\Transformer\Api; +use App\Like; use App\Status; use League\Fractal; use Cache; use App\Services\HashidService; +use App\Services\LikeService; use App\Services\MediaTagService; use App\Services\StatusLabelService; +use App\Services\ProfileService; use Illuminate\Support\Str; class StatusTransformer extends Fractal\TransformerAbstract { - protected $defaultIncludes = [ - 'account', - 'media_attachments', - ]; + protected $defaultIncludes = [ + 'account', + 'media_attachments', + ]; - public function transform(Status $status) - { - $taggedPeople = MediaTagService::get($status->id); - - return [ - '_v' => 1, - 'id' => (string) $status->id, - 'shortcode' => HashidService::encode($status->id), - 'uri' => $status->url(), - 'url' => $status->url(), - 'in_reply_to_id' => (string) $status->in_reply_to_id, - 'in_reply_to_account_id' => (string) $status->in_reply_to_profile_id, - 'reblog' => null, - 'content' => $status->rendered ?? $status->caption, - 'content_text' => $status->caption, - 'created_at' => $status->created_at->format('c'), - 'emojis' => [], - 'reblogs_count' => $status->reblogs_count ?? 0, - 'favourites_count' => $status->likes_count ?? 0, - 'reblogged' => $status->shared(), - 'favourited' => $status->liked(), - 'muted' => null, - 'sensitive' => (bool) $status->is_nsfw, - 'spoiler_text' => $status->cw_summary ?? '', - 'visibility' => $status->visibility ?? $status->scope, - 'application' => [ - 'name' => 'web', - 'website' => null - ], - 'language' => null, - 'pinned' => null, - 'mentions' => [], - 'tags' => [], - 'pf_type' => $status->type ?? $status->setType(), - 'reply_count' => (int) $status->reply_count, - 'comments_disabled' => $status->comments_disabled ? true : false, - 'thread' => false, - 'replies' => [], - 'parent' => [], - 'place' => $status->place, - 'local' => (bool) $status->local, - 'taggedPeople' => $taggedPeople, - 'label' => StatusLabelService::get($status) - ]; - } + public function transform(Status $status) + { + $taggedPeople = MediaTagService::get($status->id); - public function includeAccount(Status $status) - { - $account = $status->profile; + return [ + '_v' => 1, + 'id' => (string) $status->id, + 'shortcode' => HashidService::encode($status->id), + 'uri' => $status->url(), + 'url' => $status->url(), + 'in_reply_to_id' => (string) $status->in_reply_to_id, + 'in_reply_to_account_id' => (string) $status->in_reply_to_profile_id, + 'reblog' => null, + 'content' => $status->rendered ?? $status->caption, + 'content_text' => $status->caption, + 'created_at' => $status->created_at->format('c'), + 'emojis' => [], + 'reblogs_count' => 0, + 'favourites_count' => 0, + 'reblogged' => $status->shared(), + 'favourited' => $status->liked(), + 'muted' => null, + 'sensitive' => (bool) $status->is_nsfw, + 'spoiler_text' => $status->cw_summary ?? '', + 'visibility' => $status->visibility ?? $status->scope, + 'application' => [ + 'name' => 'web', + 'website' => null + ], + 'language' => null, + 'pinned' => null, + 'mentions' => [], + 'tags' => [], + 'pf_type' => $status->type ?? $status->setType(), + 'reply_count' => (int) $status->reply_count, + 'comments_disabled' => $status->comments_disabled ? true : false, + 'thread' => false, + 'replies' => [], + 'parent' => [], + 'place' => $status->place, + 'local' => (bool) $status->local, + 'taggedPeople' => $taggedPeople, + 'label' => StatusLabelService::get($status), + 'liked_by' => LikeService::likedBy($status) + ]; + } - return $this->item($account, new AccountTransformer()); - } + public function includeAccount(Status $status) + { + $account = $status->profile; - public function includeMediaAttachments(Status $status) - { - return Cache::remember('status:transformer:media:attachments:'.$status->id, now()->addMinutes(14), function() use($status) { - if(in_array($status->type, ['photo', 'video', 'video:album', 'photo:album', 'loop', 'photo:video:album'])) { - $media = $status->media()->orderBy('order')->get(); - return $this->collection($media, new MediaTransformer()); - } - }); - } + return $this->item($account, new AccountTransformer()); + } + + public function includeMediaAttachments(Status $status) + { + return Cache::remember('status:transformer:media:attachments:'.$status->id, now()->addMinutes(14), function() use($status) { + if(in_array($status->type, ['photo', 'video', 'video:album', 'photo:album', 'loop', 'photo:video:album'])) { + $media = $status->media()->orderBy('order')->get(); + return $this->collection($media, new MediaTransformer()); + } + }); + } }