From 0faf59e3b7ed2f9162e7b093867c88ee34eb1dbe Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sun, 11 Feb 2024 14:26:45 -0700 Subject: [PATCH] Update ApiV1Controller, fix network timeline --- app/Http/Controllers/Api/ApiV1Controller.php | 40 ++++++++++++++------ config/instance.php | 2 +- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/app/Http/Controllers/Api/ApiV1Controller.php b/app/Http/Controllers/Api/ApiV1Controller.php index d1bd9cac2..fed120b40 100644 --- a/app/Http/Controllers/Api/ApiV1Controller.php +++ b/app/Http/Controllers/Api/ApiV1Controller.php @@ -2536,20 +2536,38 @@ class ApiV1Controller extends Controller AccountService::setLastActive($user->id); $domainBlocks = UserFilterService::domainBlocks($user->profile_id); - if($remote && config('instance.timeline.network.cached')) { - Cache::remember('api:v1:timelines:network:cache_check', 10368000, function() { - if(NetworkTimelineService::count() == 0) { - NetworkTimelineService::warmCache(true, config('instance.timeline.network.cache_dropoff')); - } - }); + if($remote) { + if(config('instance.timeline.network.cached')) { + Cache::remember('api:v1:timelines:network:cache_check', 10368000, function() { + if(NetworkTimelineService::count() == 0) { + NetworkTimelineService::warmCache(true, config('instance.timeline.network.cache_dropoff')); + } + }); - if ($max) { - $feed = NetworkTimelineService::getRankedMaxId($max, $limit + 5); - } else if ($min) { - $feed = NetworkTimelineService::getRankedMinId($min, $limit + 5); + if ($max) { + $feed = NetworkTimelineService::getRankedMaxId($max, $limit + 5); + } else if ($min) { + $feed = NetworkTimelineService::getRankedMinId($min, $limit + 5); + } else { + $feed = NetworkTimelineService::get(0, $limit + 5); + } } else { - $feed = NetworkTimelineService::get(0, $limit + 5); + $feed = Status::select( + 'id', + 'profile_id', + 'type', + 'visibility', + 'in_reply_to_id', + 'reblog_of_id' + ) + ->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album']) + ->where('visibility', 'public') + ->whereLocal(false) + ->orderByDesc('id') + ->take(($limit * 2)) + ->pluck('id'); } + } if($local || !$remote && !$local) { diff --git a/config/instance.php b/config/instance.php index 03f666a79..dd645d931 100644 --- a/config/instance.php +++ b/config/instance.php @@ -33,7 +33,7 @@ return [ ], 'network' => [ - 'cached' => env('PF_NETWORK_TIMELINE') ? env('INSTANCE_NETWORK_TIMELINE_CACHED', true) : false, + 'cached' => env('PF_NETWORK_TIMELINE') ? env('INSTANCE_NETWORK_TIMELINE_CACHED', false) : false, 'cache_dropoff' => env('INSTANCE_NETWORK_TIMELINE_CACHE_DROPOFF', 100), 'max_hours_old' => env('INSTANCE_NETWORK_TIMELINE_CACHE_MAX_HOUR_INGEST', 6) ]