From e71972d8f1e3bcad2ecd6ae3783af109e811f3d1 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 17 Nov 2022 20:13:26 -0700 Subject: [PATCH] Update ApiV1Controller, map AccountService --- app/Http/Controllers/Api/ApiV1Controller.php | 11 +++++++++-- app/Services/AccountService.php | 14 ++++++++------ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/Api/ApiV1Controller.php b/app/Http/Controllers/Api/ApiV1Controller.php index ea555dfd4..d2c8b2028 100644 --- a/app/Http/Controllers/Api/ApiV1Controller.php +++ b/app/Http/Controllers/Api/ApiV1Controller.php @@ -3023,7 +3023,7 @@ class ApiV1Controller extends Controller } if($sortBy == 'all' && !$request->has('cursor')) { - $ids = Cache::remember('status:replies:all:' . $id, 86400, function() use($id) { + $ids = Cache::remember('status:replies:all:' . $id, 3600, function() use($id) { return DB::table('statuses') ->where('in_reply_to_id', $id) ->orderBy('id') @@ -3058,8 +3058,15 @@ class ApiV1Controller extends Controller $status['favourited'] = LikeService::liked($pid, $post->id); return $status; }) + ->map(function($post) { + if(isset($post['account']) && isset($post['account']['id'])) { + $account = AccountService::get($post['account']['id'], true); + $post['account'] = $account; + } + return $post; + }) ->filter(function($post) { - return $post && isset($post['id']) && isset($post['account']); + return $post && isset($post['id']) && isset($post['account']) && isset($post['account']['id']); }) ->values(); diff --git a/app/Services/AccountService.php b/app/Services/AccountService.php index abdc25ad2..eb744ff9d 100644 --- a/app/Services/AccountService.php +++ b/app/Services/AccountService.php @@ -19,19 +19,21 @@ class AccountService public static function get($id, $softFail = false) { - return Cache::remember(self::CACHE_KEY . $id, 43200, function() use($id, $softFail) { + $res = Cache::remember(self::CACHE_KEY . $id, 43200, function() use($id) { $fractal = new Fractal\Manager(); $fractal->setSerializer(new ArraySerializer()); $profile = Profile::find($id); if(!$profile || $profile->status === 'delete') { - if($softFail) { - return null; - } - abort(404); + return null; } $resource = new Fractal\Resource\Item($profile, new AccountTransformer()); return $fractal->createData($resource)->toArray(); - }); + }); + + if(!$res) { + return $softFail ? null : abort(404); + } + return $res; } public static function getMastodon($id, $softFail = false)