mirror of
https://github.com/pixelfed/pixelfed.git
synced 2024-11-26 00:03:16 +00:00
Update Discover feature
This commit is contained in:
parent
28bbd63300
commit
c0609671c2
2 changed files with 47 additions and 21 deletions
|
@ -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)
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue