瀏覽代碼

Update PublicApiController, add recent feed support to home timeline

Daniel Supernault 4 年之前
父節點
當前提交
1e230e80fb
共有 1 個文件被更改,包括 15 次插入18 次删除
  1. 15 18
      app/Http/Controllers/PublicApiController.php

+ 15 - 18
app/Http/Controllers/PublicApiController.php

@@ -12,6 +12,7 @@ use App\{
     Profile,
     Profile,
     StatusHashtag,
     StatusHashtag,
     Status,
     Status,
+    StatusView,
     UserFilter
     UserFilter
 };
 };
 use Auth,Cache;
 use Auth,Cache;
@@ -376,9 +377,13 @@ class PublicApiController extends Controller
           'page'        => 'nullable|integer|max:40',
           'page'        => 'nullable|integer|max:40',
           'min_id'      => 'nullable|integer|min:0|max:' . PHP_INT_MAX,
           'min_id'      => 'nullable|integer|min:0|max:' . PHP_INT_MAX,
           'max_id'      => 'nullable|integer|min:0|max:' . PHP_INT_MAX,
           'max_id'      => 'nullable|integer|min:0|max:' . PHP_INT_MAX,
-          'limit'       => 'nullable|integer|max:40'
+          'limit'       => 'nullable|integer|max:40',
+          'recent_feed' => 'nullable',
+          'recent_min'  => 'nullable|integer'
         ]);
         ]);
 
 
+        $recentFeed = $request->input('recent_feed') == 'true';
+        $recentFeedMin = $request->input('recent_min');
         $page = $request->input('page');
         $page = $request->input('page');
         $min = $request->input('min_id');
         $min = $request->input('min_id');
         $max = $request->input('max_id');
         $max = $request->input('max_id');
@@ -393,29 +398,21 @@ class PublicApiController extends Controller
             return;
             return;
         });
         });
 
 
-        // TODO: Use redis for timelines
-        // $timeline = Timeline::build()->local();
-        $pid = Auth::user()->profile->id;
+        $pid = Auth::user()->profile_id;
 
 
         $following = Cache::remember('profile:following:'.$pid, now()->addMinutes(1440), function() use($pid) {
         $following = Cache::remember('profile:following:'.$pid, now()->addMinutes(1440), function() use($pid) {
             $following = Follower::whereProfileId($pid)->pluck('following_id');
             $following = Follower::whereProfileId($pid)->pluck('following_id');
             return $following->push($pid)->toArray();
             return $following->push($pid)->toArray();
         });
         });
 
 
-        // $private = Cache::remember('profiles:private', now()->addMinutes(1440), function() {
-        //     return Profile::whereIsPrivate(true)
-        //         ->orWhere('unlisted', true)
-        //         ->orWhere('status', '!=', null)
-        //         ->pluck('id');
-        // });
-
-        // $private = $private->diff($following)->flatten();
-
-        // $filters = UserFilter::whereUserId($pid)
-        //           ->whereFilterableType('App\Profile')
-        //           ->whereIn('filter_type', ['mute', 'block'])
-        //           ->pluck('filterable_id')->toArray();
-        // $filtered = array_merge($private->toArray(), $filters);
+        if($recentFeed == true) {
+			$key = 'profile:home-timeline-cursor:'.$user->id;
+			$ttl = now()->addMinutes(30);
+			$min = Cache::remember($key, $ttl, function() use($pid) {
+        		$res = StatusView::whereProfileId($pid)->orderByDesc('status_id')->first();
+        		return $res ? $res->status_id : null;
+			});
+        }
 
 
         $filtered = Auth::check() ? UserFilterService::filters(Auth::user()->profile_id) : [];
         $filtered = Auth::check() ? UserFilterService::filters(Auth::user()->profile_id) : [];