浏览代码

Update ApiV1Controller, fix network timeline

Daniel Supernault 1 年之前
父节点
当前提交
0faf59e3b7
共有 2 个文件被更改,包括 30 次插入12 次删除
  1. 29 11
      app/Http/Controllers/Api/ApiV1Controller.php
  2. 1 1
      config/instance.php

+ 29 - 11
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) {

+ 1 - 1
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)
 		]