diff --git a/app/Http/Controllers/StatusController.php b/app/Http/Controllers/StatusController.php index 651d632d..57a7e41c 100644 --- a/app/Http/Controllers/StatusController.php +++ b/app/Http/Controllers/StatusController.php @@ -3,33 +3,40 @@ namespace App\Http\Controllers; use Auth, Cache; -use App\Jobs\StatusPipeline\{NewStatusPipeline, StatusDelete}; -use App\Jobs\ImageOptimizePipeline\ImageOptimize; +use League\Fractal; use Illuminate\Http\Request; -use App\{Media, Profile, Status, User}; use Vinkla\Hashids\Facades\Hashids; +use App\{Media, Profile, Status, User}; +use App\Jobs\ImageOptimizePipeline\ImageOptimize; +use App\Transformer\ActivityPub\StatusTransformer; +use App\Jobs\StatusPipeline\{NewStatusPipeline, StatusDelete}; class StatusController extends Controller { public function show(Request $request, $username, int $id) { $user = Profile::whereUsername($username)->firstOrFail(); + $status = Status::whereProfileId($user->id) ->withCount(['likes', 'comments', 'media']) ->findOrFail($id); + if(!$status->media_path && $status->in_reply_to_id) { return redirect($status->url()); } + + if($request->wantsJson() && config('pixelfed.activitypub_enabled')) { + return $this->showActivityPub($request, $status); + } + $replies = Status::whereInReplyToId($status->id)->simplePaginate(30); + return view('status.show', compact('user', 'status', 'replies')); } public function compose() { - if(Auth::check() == false) - { - abort(403); - } + $this->authCheck(); return view('status.compose'); } @@ -156,4 +163,20 @@ class StatusController extends Controller return $response; } + + public function showActivityPub(Request $request, $status) + { + $fractal = new Fractal\Manager(); + $resource = new Fractal\Resource\Item($status, new StatusTransformer); + $res = $fractal->createData($resource)->toArray(); + return response(json_encode($res['data']))->header('Content-Type', 'application/activity+json'); + } + + protected function authCheck() + { + if(Auth::check() == false) + { + abort(403); + } + } } diff --git a/resources/views/status/show.blade.php b/resources/views/status/show.blade.php index 7f711f24..cf9b9db5 100644 --- a/resources/views/status/show.blade.php +++ b/resources/views/status/show.blade.php @@ -169,4 +169,4 @@ @push('meta') -@endpush + @endpush