瀏覽代碼

Update Discover feature

Daniel Supernault 6 年之前
父節點
當前提交
c0609671c2
共有 2 個文件被更改,包括 47 次插入21 次删除
  1. 33 21
      app/Http/Controllers/DiscoverController.php
  2. 14 0
      resources/views/discover/home.blade.php

+ 33 - 21
app/Http/Controllers/DiscoverController.php

@@ -2,12 +2,14 @@
 
 namespace App\Http\Controllers;
 
-use App\Follower;
-use App\Hashtag;
-use App\Profile;
-use App\Status;
-use App\UserFilter;
-use Auth;
+use App\{
+  Follower,
+  Hashtag,
+  Profile,
+  Status, 
+  UserFilter
+};
+use Auth, DB, Cache;
 use Illuminate\Http\Request;
 
 class DiscoverController extends Controller
@@ -21,25 +23,35 @@ class DiscoverController extends Controller
     {
         $pid = Auth::user()->profile->id;
 
-        $following = Follower::whereProfileId($pid)
+        $following = Cache::remember('feature:discover:following:'.$pid, 15, function() use($pid) {
+          $following = Follower::whereProfileId($pid)
           ->pluck('following_id');
-        $filtered = UserFilter::whereUserId($pid)
-                  ->whereFilterableType('App\Profile')
-                  ->whereIn('filter_type', ['mute', 'block'])
-                  ->pluck('filterable_id');
-        $following->push($pid);
-        
-        if($filtered->count() > 0) {
-          $following->push($filtered);
-        }
+          $filtered = UserFilter::whereUserId($pid)
+                    ->whereFilterableType('App\Profile')
+                    ->whereIn('filter_type', ['mute', 'block'])
+                    ->pluck('filterable_id');
+          $following->push($pid);
+          
+          if($filtered->count() > 0) {
+            $following->push($filtered);
+          }
+          return $following;
+        });
 
-        $people = Profile::inRandomOrder()
-          ->whereNotIn('id', $following)
-          ->whereIsPrivate(false)
-          ->take(3)
-          ->get();
+        $people = Cache::remember('feature:discover:people:'.$pid, 15, function() use($following) {
+            return Profile::inRandomOrder()
+                ->whereHas('statuses')
+                ->whereNull('domain')
+                ->whereNotIn('id', $following)
+                ->whereIsPrivate(false)
+                ->take(3)
+                ->get();
+        });
 
         $posts = Status::whereHas('media')
+          ->whereHas('profile', function($q) {
+            $q->where('is_private', false);
+          })
           ->whereVisibility('public')
           ->where('profile_id', '!=', $pid)
           ->whereNotIn('profile_id', $following)

+ 14 - 0
resources/views/discover/home.blade.php

@@ -25,6 +25,13 @@
         </div>
       </div>
       @endforeach
+
+      @if($people->count() == 0)
+      <div class="col-12 text-center text-muted">
+          <h4 class="font-weight-bold">No results found</h4>
+      </div>
+      @endif
+
     </div>
   </section>
   <section class="pt-5 mt-5">
@@ -49,6 +56,13 @@
         </a>
       </div>
       @endforeach
+
+      @if($posts->count() == 0)
+      <div class="col-12 text-center text-muted">
+          <h4 class="font-weight-bold">No results found</h4>
+      </div>
+      @endif
+
     </div>
   </section>
 </div>