From 0b42fe0f005bc061b144d71cdccab1f5a62d77d9 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 9 May 2023 03:22:28 -0600 Subject: [PATCH] Update HashtagService --- app/Http/Controllers/Api/ApiV1Controller.php | 18 +++++++++++++----- app/Services/HashtagService.php | 4 ++-- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/Api/ApiV1Controller.php b/app/Http/Controllers/Api/ApiV1Controller.php index 03b2fa3a1..af46f8af3 100644 --- a/app/Http/Controllers/Api/ApiV1Controller.php +++ b/app/Http/Controllers/Api/ApiV1Controller.php @@ -3249,7 +3249,8 @@ class ApiV1Controller extends Controller 'min_id' => 'nullable|integer|min:0|max:' . PHP_INT_MAX, 'max_id' => 'nullable|integer|min:0|max:' . PHP_INT_MAX, 'limit' => 'nullable|integer|max:100', - 'only_media' => 'sometimes|boolean' + 'only_media' => 'sometimes|boolean', + '_pe' => 'sometimes' ]); if(config('database.default') === 'pgsql') { @@ -3274,6 +3275,7 @@ class ApiV1Controller extends Controller $max = $request->input('max_id'); $limit = $request->input('limit', 20); $onlyMedia = $request->input('only_media', true); + $pe = $request->has(self::PF_API_ENTITY_KEY); if($min || $max) { $minMax = SnowflakeService::byDate(now()->subMonths(6)); @@ -3294,13 +3296,13 @@ class ApiV1Controller extends Controller } $res = StatusHashtag::whereHashtagId($tag->id) - ->where('status_id', $dir, $id) ->whereStatusVisibility('public') + ->where('status_id', $dir, $id) ->orderBy('status_id', 'desc') ->limit($limit) ->pluck('status_id') - ->map(function ($i) { - return StatusService::getMastodon($i); + ->map(function ($i) use($pe) { + return $pe ? StatusService::get($i) : StatusService::getMastodon($i); }) ->filter(function($i) use($onlyMedia) { if(!$i) { @@ -3977,11 +3979,17 @@ class ApiV1Controller extends Controller ]; } - return [ + $res = [ 'name' => $tag->name, 'url' => config('app.url') . '/i/web/hashtag/' . $tag->slug, 'history' => [], 'following' => HashtagService::isFollowing($pid, $tag->id) ]; + + if($request->has(self::PF_API_ENTITY_KEY)) { + $res['count'] = HashtagService::count($tag->id); + } + + return $this->json($res); } } diff --git a/app/Services/HashtagService.php b/app/Services/HashtagService.php index 9c455deb0..87f895a65 100644 --- a/app/Services/HashtagService.php +++ b/app/Services/HashtagService.php @@ -28,8 +28,8 @@ class HashtagService { public static function count($id) { - return Cache::remember('services:hashtag:count:by_id:' . $id, 3600, function() use($id) { - return StatusHashtag::whereHashtagId($id)->count(); + return Cache::remember('services:hashtag:public-count:by_id:' . $id, 86400, function() use($id) { + return StatusHashtag::whereHashtagId($id)->whereStatusVisibility('public')->count(); }); }