diff --git a/app/Livewire/Components/User/Activities.php b/app/Livewire/Components/User/Activities.php
index ba82654f..9d61fd98 100644
--- a/app/Livewire/Components/User/Activities.php
+++ b/app/Livewire/Components/User/Activities.php
@@ -7,16 +7,27 @@
use App\Models\Activity;
use App\Models\User;
use Illuminate\Contracts\View\View;
+use Illuminate\Support\Collection;
+use Illuminate\Support\Facades\Cache;
+use Livewire\Attributes\Computed;
use Livewire\Component;
final class Activities extends Component
{
public User $user;
+ #[Computed(persist: true)]
+ public function activities(): Collection
+ {
+ return Cache::remember(
+ key: 'activities.'.$this->user->id,
+ ttl: now()->addDays(3),
+ callback: fn () => Activity::latestFeed($this->user)
+ );
+ }
+
public function render(): View
{
- return view('livewire.components.user.activities', [
- 'activities' => Activity::latestFeed($this->user),
- ]);
+ return view('livewire.components.user.activities');
}
}
diff --git a/app/Livewire/Pages/Account/Profile.php b/app/Livewire/Pages/Account/Profile.php
index d7f0fdf6..2e8e4ed1 100644
--- a/app/Livewire/Pages/Account/Profile.php
+++ b/app/Livewire/Pages/Account/Profile.php
@@ -4,30 +4,68 @@
namespace App\Livewire\Pages\Account;
+use App\Models\Article;
+use App\Models\Discussion;
+use App\Models\Thread;
use App\Models\User;
use Illuminate\Contracts\View\View;
+use Illuminate\Support\Collection;
+use Illuminate\Support\Facades\Cache;
+use Livewire\Attributes\Computed;
use Livewire\Component;
final class Profile extends Component
{
public User $user;
- public function render(): View
+ #[Computed(persist: true)]
+ public function articles(): Collection
{
- return view('livewire.pages.account.profile', [
- 'articles' => $this->user->articles() // @phpstan-ignore-line
- ->recent()
+ return Cache::remember(
+ key: 'articles.'.$this->user->id,
+ ttl: now()->addDays(3),
+ callback: fn () => Article::with('media', 'tags')
+ ->select('id', 'title', 'slug', 'body', 'published_at')
+ ->whereBelongsTo($this->user)
->published()
+ ->recent()
->limit(5)
- ->get(),
- 'threads' => $this->user->threads()
+ ->get()
+ );
+ }
+
+ #[Computed(persist: true)]
+ public function threads(): Collection
+ {
+ return Cache::remember(
+ key: 'threads.'.$this->user->id,
+ ttl: now()->addDays(3),
+ callback: fn () => Thread::with('channels')
+ ->withCount('replies')
+ ->whereBelongsTo($this->user)
->orderByDesc('created_at')
->limit(5)
- ->get(),
- 'discussions' => $this->user->discussions()
+ ->get()
+ );
+ }
+
+ #[Computed(persist: true)]
+ public function discussions(): Collection
+ {
+ return Cache::remember(
+ key: 'discussions.'.$this->user->id,
+ ttl: now()->addDays(3),
+ callback: fn () => Discussion::with('tags')
+ ->withCount('replies', 'reactions')
+ ->whereBelongsTo($this->user)
->limit(5)
- ->get(),
- ])
+ ->get()
+ );
+ }
+
+ public function render(): View
+ {
+ return view('livewire.pages.account.profile')
->title($this->user->username.' ( '.$this->user->name.')');
}
}
diff --git a/composer.lock b/composer.lock
index 7cb3da9c..1f31d4df 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "ed0e156f18a55dfdfc7fc7922799cd9a",
+ "content-hash": "4c716d8363d3d8066535ca12060d6e28",
"packages": [
{
"name": "abraham/twitteroauth",
@@ -13554,16 +13554,16 @@
},
{
"name": "vormkracht10/filament-mails",
- "version": "v1.0.5",
+ "version": "v2.0.1",
"source": {
"type": "git",
"url": "https://github.com/vormkracht10/filament-mails.git",
- "reference": "ab13d2b90daad93943248f7888808f78a2ab6d09"
+ "reference": "c2c72b77e303d594c97c6a9b1c58dfec8b61d931"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vormkracht10/filament-mails/zipball/ab13d2b90daad93943248f7888808f78a2ab6d09",
- "reference": "ab13d2b90daad93943248f7888808f78a2ab6d09",
+ "url": "https://api.github.com/repos/vormkracht10/filament-mails/zipball/c2c72b77e303d594c97c6a9b1c58dfec8b61d931",
+ "reference": "c2c72b77e303d594c97c6a9b1c58dfec8b61d931",
"shasum": ""
},
"require": {
@@ -13629,7 +13629,7 @@
"type": "github"
}
],
- "time": "2024-12-27T09:22:16+00:00"
+ "time": "2025-01-03T13:17:15+00:00"
},
{
"name": "vormkracht10/laravel-mails",
@@ -17374,7 +17374,7 @@
],
"aliases": [],
"minimum-stability": "dev",
- "stability-flags": {},
+ "stability-flags": [],
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
@@ -17382,6 +17382,6 @@
"ext-fileinfo": "*",
"ext-json": "*"
},
- "platform-dev": {},
+ "platform-dev": [],
"plugin-api-version": "2.6.0"
}
diff --git a/resources/views/components/forum/thread.blade.php b/resources/views/components/forum/thread.blade.php
index ffeaa4b7..e8db17e0 100644
--- a/resources/views/components/forum/thread.blade.php
+++ b/resources/views/components/forum/thread.blade.php
@@ -6,7 +6,7 @@
- {{ $user->name }} - {{ __('pages/account.activities.empty_articles') }} -
- - @if ($user->isLoggedInUser()) - @can('create', \App\Models\Article::class) -+ {{ $user->name }} + {{ __('pages/account.activities.empty_articles') }} +
+ + @if ($user->isLoggedInUser()) + @can('create', \App\Models\Article::class) +- {{ $user->name }} - {{ __('pages/account.activities.empty_discussions') }} -
- - @if ($user->isLoggedInUser()) - @can('create', \App\Models\Discussion::class) -+ {{ $user->name }} + {{ __('pages/account.activities.empty_discussions') }} +
+ + @if ($user->isLoggedInUser()) + @can('create', \App\Models\Discussion::class) +- {{ $user->name }} - {{ __('pages/account.activities.empty_threads') }} -
++ {{ $user->name }} + {{ __('pages/account.activities.empty_threads') }} +
- @if ($user->isLoggedInUser()) - @can('create', \App\Models\Thread::class) -+
{{ __('pages/article.share_article') }}