From 1f3c063ec5c0d6e87120131ca6410deb6afdcc6d Mon Sep 17 00:00:00 2001 From: Ghostie Date: Sat, 28 Dec 2024 18:59:50 -0500 Subject: [PATCH] added the requests page --- .../Controllers/AP/APWebfingerController.php | 1 + app/Http/Controllers/HomeController.php | 19 ++++++ app/Models/User.php | 10 ++++ resources/views/home_loggedin.blade.php | 19 ++++++ resources/views/users/requests.blade.php | 60 +++++++++++++++++++ routes/web.php | 1 + 6 files changed, 110 insertions(+) create mode 100644 resources/views/users/requests.blade.php diff --git a/app/Http/Controllers/AP/APWebfingerController.php b/app/Http/Controllers/AP/APWebfingerController.php index 0febbce..a6a261c 100644 --- a/app/Http/Controllers/AP/APWebfingerController.php +++ b/app/Http/Controllers/AP/APWebfingerController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\AP; use App\Models\User; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Log; use App\Http\Controllers\Controller; class APWebfingerController extends Controller diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 5bab41e..a8f91e9 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -5,6 +5,8 @@ namespace App\Http\Controllers; use App\Types\TypeActor; use App\Models\User; +use App\Models\Actor; + use Illuminate\Http\Request; class HomeController extends Controller @@ -38,4 +40,21 @@ class HomeController extends Controller return redirect ()->route ("users.show", "@$actor->preferredUsername@$domain"); } } + + public function requests () + { + $user = auth ()->user (); + $requests = []; + + foreach ($user->friend_requests () as $request) + { + $actor = Actor::where ("actor_id", $request->actor)->first (); + if (!$actor) + continue; + + $requests[] = $actor; + } + + return view ("users.requests", compact ("user", "requests")); + } } diff --git a/app/Models/User.php b/app/Models/User.php index f216969..43f4026 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -82,4 +82,14 @@ class User extends Authenticatable return $followers->intersect ($following); } + + public function friend_requests () + { + $actor_id = '"' . str_replace ("/", "\/", $this->actor->actor_id) . '"'; + + $followers = Activity::where ("type", "Follow")->where ("object", $actor_id)->get (); + $following = Activity::where ("type", "Follow")->where ("actor", $actor_id)->get (); + + return $followers->diff ($following); + } } diff --git a/resources/views/home_loggedin.blade.php b/resources/views/home_loggedin.blade.php index 5205d13..c2cd31a 100644 --- a/resources/views/home_loggedin.blade.php +++ b/resources/views/home_loggedin.blade.php @@ -96,6 +96,25 @@ +
+
+

Friend Requests

+
+
+

+ + {{ count (auth ()->user ()->friend_requests ()) }} + Open Friend Requests + +

+ + + +
+
+

Feed

diff --git a/resources/views/users/requests.blade.php b/resources/views/users/requests.blade.php new file mode 100644 index 0000000..c0b9352 --- /dev/null +++ b/resources/views/users/requests.blade.php @@ -0,0 +1,60 @@ +@extends ("partials.layout") + +@section ("title", "Open Friend Requests") + +@section ("content") +
+ +
+
+

Friend Requests

+
+ +
+
+

+ + {{ count ($user->friend_requests ()) }} + Open Friend Requests + + +

+ @csrf + +
+
+ + + + @foreach ($requests as $frequest) + + + + + @endforeach + +
+ +

+ {{ $frequest->name }} +

+
+ + + {{ $frequest->name }} + +
+

+ Friend Request +

+
+ @csrf + +
+
+

+
+
+ +
+@endsection diff --git a/routes/web.php b/routes/web.php index c514d01..0c8f38a 100644 --- a/routes/web.php +++ b/routes/web.php @@ -22,5 +22,6 @@ Route::get ("/user/{user_name}", [ ProfileController::class, "show" ])->name ("u // other routes Route::get ("/search", [ HomeController::class, "search" ])->name ("search"); +Route::get ("/requests", [ HomeController::class, "requests" ])->name ("requests")->middleware ("auth"); require __DIR__ . "/api.php";