From 7bf9e78f8e7de8d4ec0ec33d996c55055c59a7cc Mon Sep 17 00:00:00 2001
From: Daniel Supernault <danielsupernault@gmail.com>
Date: Sat, 14 Mar 2020 21:21:45 -0600
Subject: [PATCH] Update PublicApiController

---
 app/Http/Controllers/PublicApiController.php | 28 +++++++++++++++++---
 1 file changed, 24 insertions(+), 4 deletions(-)

diff --git a/app/Http/Controllers/PublicApiController.php b/app/Http/Controllers/PublicApiController.php
index 7c7f1946..865d9e91 100644
--- a/app/Http/Controllers/PublicApiController.php
+++ b/app/Http/Controllers/PublicApiController.php
@@ -499,11 +499,31 @@ class PublicApiController extends Controller
     public function accountFollowing(Request $request, $id)
     {
         abort_unless(Auth::check(), 403);
-        $profile = Profile::with('user')->whereNull('status')->whereNull('domain')->findOrFail($id);
-        if(Auth::id() != $profile->user_id && $profile->is_private || !$profile->user->settings->show_profile_following) {
-            return response()->json([]);
+
+        $profile = Profile::with('user')
+            ->whereNull('status')
+            ->whereNull('domain')
+            ->findOrFail($id);
+
+        // filter by username
+        $search = $request->input('fbu');
+        $owner = Auth::id() == $profile->user_id;
+        $filter = ($owner == true) && ($search != null);
+
+        abort_if($owner == false && $profile->is_private == true && !$profile->followedBy(Auth::user()->profile), 404);
+        abort_if($profile->user->settings->show_profile_following == false && $owner == false, 404);
+
+        if($search) {
+            abort_if(!$owner, 404);
+            $following = $profile->following()
+                    ->where('profiles.username', 'like', '%'.$search.'%')
+                    ->orderByDesc('followers.created_at')
+                    ->paginate(10);
+        } else {
+            $following = $profile->following()
+                ->orderByDesc('followers.created_at')
+                ->paginate(10);
         }
-        $following = $profile->following()->orderByDesc('followers.created_at')->paginate(10);
         $resource = new Fractal\Resource\Collection($following, new AccountTransformer());
         $res = $this->fractal->createData($resource)->toArray();