added the requests page

This commit is contained in:
Ghostie 2024-12-28 18:59:50 -05:00
parent 809980786f
commit 1f3c063ec5
6 changed files with 110 additions and 0 deletions

View File

@ -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

View File

@ -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"));
}
}

View File

@ -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);
}
}

View File

@ -96,6 +96,25 @@
</div>
</div>
<div class="friends">
<div class="heading">
<h4>Friend Requests</h4>
</div>
<div class="inner">
<p>
<b>
<span class="count">{{ count (auth ()->user ()->friend_requests ()) }}</span>
Open Friend Requests
</b>
</p>
<a href="{{ route ('requests') }}">
<button>
View All Requests
</button>
</a>
</div>
</div>
<div class="new-people cool">
<div class="top">
<h4>Feed</h4>

View File

@ -0,0 +1,60 @@
@extends ("partials.layout")
@section ("title", "Open Friend Requests")
@section ("content")
<div class="simple-container">
<div class="friends">
<div class="heading">
<h1>Friend Requests</h1>
</div>
<div class="inner">
<br>
<p>
<b>
<span class="count">{{ count ($user->friend_requests ()) }}</span>
Open Friend Requests
</b>
<form action="#" method="POST">
@csrf
<button type="submit" name="submit">Accept All Requests</button>
</form>
<br>
<table class="comments-table" cellspacing="0" cellpadding="3" bordercolor="ffffff" border="1">
<tbody>
@foreach ($requests as $frequest)
<tr>
<td>
<a href="{{ route ('users.show', [ 'user_name' => $frequest->local_actor_id ? $frequest->local_actor_id : $frequest->preferredUsername ]) }}">
<p>
{{ $frequest->name }}
</p>
</a>
<a href="{{ route ('users.show', [ 'user_name' => $frequest->local_actor_id ? $frequest->local_actor_id : $frequest->preferredUsername ]) }}">
<img src="{{ $frequest->user ? $frequest->user->avatar : $frequest->icon }}" alt="{{ $frequest->name }}" class="avatar">
</a>
</td>
<td>
<p>
<b>Friend Request</b>
</p>
<form action="#" method="POST">
@csrf
<input type="submit" name="accept" value="Accept">
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</p>
</div>
</div>
</div>
@endsection

View File

@ -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";