Parcourir la source

Update PublicApiControllers, fix block/mutes filtering on public timeline

Daniel Supernault il y a 5 ans
Parent
commit
08383dd43d
1 fichiers modifiés avec 7 ajouts et 0 suppressions
  1. 7 0
      app/Http/Controllers/PublicApiController.php

+ 7 - 0
app/Http/Controllers/PublicApiController.php

@@ -239,6 +239,11 @@ class PublicApiController extends Controller
         $max = $request->input('max_id');
         $max = $request->input('max_id');
         $limit = $request->input('limit') ?? 3;
         $limit = $request->input('limit') ?? 3;
 
 
+        $filtered = UserFilter::whereUserId(Auth::user()->profile_id)
+                  ->whereFilterableType('App\Profile')
+                  ->whereIn('filter_type', ['mute', 'block'])
+                  ->pluck('filterable_id')->toArray();
+
         if($min || $max) {
         if($min || $max) {
             $dir = $min ? '>' : '<';
             $dir = $min ? '>' : '<';
             $id = $min ?? $max;
             $id = $min ?? $max;
@@ -263,6 +268,7 @@ class PublicApiController extends Controller
                         'updated_at'
                         'updated_at'
                       )->where('id', $dir, $id)
                       )->where('id', $dir, $id)
                       ->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album'])
                       ->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album'])
+                      ->whereNotIn('profile_id', $filtered)
                       ->whereLocal(true)
                       ->whereLocal(true)
                       ->whereVisibility('public')
                       ->whereVisibility('public')
                       ->orderBy('created_at', 'desc')
                       ->orderBy('created_at', 'desc')
@@ -289,6 +295,7 @@ class PublicApiController extends Controller
                         'reblogs_count',
                         'reblogs_count',
                         'updated_at'
                         'updated_at'
                       )->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album'])
                       )->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album'])
+                      ->whereNotIn('profile_id', $filtered)
                       ->with('profile', 'hashtags', 'mentions')
                       ->with('profile', 'hashtags', 'mentions')
                       ->whereLocal(true)
                       ->whereLocal(true)
                       ->whereVisibility('public')
                       ->whereVisibility('public')