From 4145141366b6f1b6d6e7483f35ddc08bec602531 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sun, 24 Nov 2019 15:48:53 -0700 Subject: [PATCH] Update DiscoverController --- app/Http/Controllers/DiscoverController.php | 30 +++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/DiscoverController.php b/app/Http/Controllers/DiscoverController.php index 77d54dbff..ccb042d98 100644 --- a/app/Http/Controllers/DiscoverController.php +++ b/app/Http/Controllers/DiscoverController.php @@ -14,6 +14,8 @@ use App\{ }; use Auth, DB, Cache; use Illuminate\Http\Request; +use App\Transformer\Api\AccountTransformer; +use App\Transformer\Api\AccountWithStatusesTransformer; use App\Transformer\Api\StatusStatelessTransformer; use League\Fractal; use League\Fractal\Serializer\ArraySerializer; @@ -131,7 +133,31 @@ class DiscoverController extends Controller public function profilesDirectory(Request $request) { - $profiles = Profile::whereNull('domain')->simplePaginate(48); - return view('discover.profiles.home', compact('profiles')); + return view('discover.profiles.home'); + } + + public function profilesDirectoryApi(Request $request) + { + $this->validate($request, [ + 'page' => 'integer|max:10' + ]); + + $page = $request->input('page') ?? 1; + $key = 'discover:profiles:page:' . $page; + $ttl = now()->addHours(12); + + $res = Cache::remember($key, $ttl, function() { + $profiles = Profile::whereNull('domain') + ->whereNull('status') + ->whereIsPrivate(false) + ->has('statuses') + ->whereIsSuggestable(true) + // ->inRandomOrder() + ->simplePaginate(8); + $resource = new Fractal\Resource\Collection($profiles, new AccountTransformer()); + return $this->fractal->createData($resource)->toArray(); + }); + + return $res; } }