diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index 4d77ea2..c58ece8 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -3,8 +3,6 @@ namespace App\Http\Controllers; use App\Models\Episode; -use App\Models\Playlist; -use App\Models\PlaylistEpisode; use App\Models\User; use App\Http\Requests\ProfileUpdateRequest; use Illuminate\Http\RedirectResponse; @@ -84,7 +82,7 @@ class ProfileController extends Controller public function comments(Request $request): View { return view('profile.comments', [ - 'user' => $request->user(), + 'user' => $request->user(), ]); } diff --git a/app/Livewire/UserComments.php b/app/Livewire/UserComments.php new file mode 100644 index 0000000..010dfbb --- /dev/null +++ b/app/Livewire/UserComments.php @@ -0,0 +1,49 @@ +order) { + case 'created_at_desc': + $orderby = 'created_at'; + $orderdirection = 'desc'; + break; + case 'created_at_asc': + $orderby = 'created_at'; + $orderdirection = 'asc'; + break; + default: + $orderby = 'created_at'; + $orderdirection = 'desc'; + } + + + $comments = Comment::where('user_id', $this->model->id) + ->when($this->commentSearch != '', fn ($query) => $query->where('body', 'like', '%'.$this->commentSearch.'%')) + ->orderBy($orderby, $orderdirection) + ->paginate(10); + + return view('livewire.user-comments', [ + 'comments' => $comments + ]); + } +} diff --git a/app/Models/User.php b/app/Models/User.php index fc627a6..d9de512 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -89,9 +89,17 @@ class User extends Authenticatable /** * Has Many Comments. */ + public function comments() + { + return $this->hasMany(Comment::class, 'user_id'); + } + + /** + * Get Comment Count. + */ public function commentCount(): int { - return DB::table('comments')->where('commenter_id', $this->id)->count(); + return cache()->remember('userComments' . $this->id, 300, fn() => $this->comments->count()); } /** diff --git a/resources/views/livewire/user-comments.blade.php b/resources/views/livewire/user-comments.blade.php new file mode 100644 index 0000000..9131288 --- /dev/null +++ b/resources/views/livewire/user-comments.blade.php @@ -0,0 +1,116 @@ +
+
+ +
+
+ + +
+ +
+
+ +
+ + + +
+ +
+
+
+ + +
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+
+ + +
+ +
+ +
Comment
+
+ + + @foreach ($comments as $comment) +
+ + +
+ @if($comment->commentable_type == \App\Models\Episode::class) + @php $episode = \App\Models\Episode::find($comment->commentable_id); @endphp + + @endif +
+ + +
+ {!! $comment->presenter()->markdownBody() !!} + +
+ +
+ + {{ $comment->presenter()->relativeCreatedAt() }} + +
+
+ @endforeach +
+
+
+
+
+ {{ $comments->links('pagination::tailwind') }} +
+
diff --git a/resources/views/profile/comments.blade.php b/resources/views/profile/comments.blade.php index 22e59fe..5d9b79c 100644 --- a/resources/views/profile/comments.blade.php +++ b/resources/views/profile/comments.blade.php @@ -12,63 +12,10 @@ class="relative max-w-[120rem] mx-auto sm:px-6 lg:px-8 space-y-6 pt-20 mt-[65px] flex flex-row justify-center xl:justify-normal">
@include('profile.partials.sidebar') -
+
+ + - @php - $episode_ids = array_unique( - DB::table('comments') - ->where('commenter_id', $user->id) - ->get() - ->pluck('commentable_id') - ->toArray(), - ); - @endphp - - @foreach ($episode_ids as $episode_id) - @php $episode = App\Models\Episode::where('id', $episode_id)->first(); @endphp - - @endforeach