1
0
Fork 0
forked from mirror/pixelfed

Update TimelineController, add filters

This commit is contained in:
Daniel Supernault 2018-08-26 13:02:18 -06:00
parent 76fe2bff6e
commit c52c841eac
No known key found for this signature in database
GPG key ID: 0DEF1C662C9033F7

View file

@ -4,7 +4,7 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Auth; use Auth;
use App\{Follower, Status, User}; use App\{Follower, Profile, Status, User, UserFilter};
class TimelineController extends Controller class TimelineController extends Controller
{ {
@ -15,10 +15,16 @@ class TimelineController extends Controller
public function personal() public function personal()
{ {
$pid = Auth::user()->profile->id;
// TODO: Use redis for timelines // TODO: Use redis for timelines
$following = Follower::whereProfileId(Auth::user()->profile->id)->pluck('following_id'); $following = Follower::whereProfileId($pid)->pluck('following_id');
$following->push(Auth::user()->profile->id); $following->push($pid);
$filtered = UserFilter::whereUserId($pid)
->whereFilterableType('App\Profile')
->whereIn('filter_type', ['mute', 'block'])
->pluck('filterable_id');
$timeline = Status::whereIn('profile_id', $following) $timeline = Status::whereIn('profile_id', $following)
->whereNotIn('profile_id', $filtered)
->orderBy('id','desc') ->orderBy('id','desc')
->withCount(['comments', 'likes']) ->withCount(['comments', 'likes'])
->simplePaginate(20); ->simplePaginate(20);
@ -30,8 +36,18 @@ class TimelineController extends Controller
{ {
// TODO: Use redis for timelines // TODO: Use redis for timelines
// $timeline = Timeline::build()->local(); // $timeline = Timeline::build()->local();
$pid = Auth::user()->profile->id;
$filtered = UserFilter::whereUserId($pid)
->whereFilterableType('App\Profile')
->whereIn('filter_type', ['mute', 'block'])
->pluck('filterable_id');
$private = Profile::whereIsPrivate(true)->pluck('id');
$filtered = $filtered->merge($private);
$timeline = Status::whereHas('media') $timeline = Status::whereHas('media')
->whereNotIn('profile_id', $filtered)
->whereNull('in_reply_to_id') ->whereNull('in_reply_to_id')
->whereNull('reblog_of_id')
->withCount(['comments', 'likes']) ->withCount(['comments', 'likes'])
->orderBy('id','desc') ->orderBy('id','desc')
->simplePaginate(20); ->simplePaginate(20);