From e095732fa2c2065344a772d71098946f2bc2f8bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Ca=C5=82ka?= <25438601+rafaucau@users.noreply.github.com> Date: Sat, 14 Sep 2024 02:15:59 +0200 Subject: [PATCH] fix: use user Deleting event instead of Deleted to access user posts --- src/Listener/UserEventSubscriber.php | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/src/Listener/UserEventSubscriber.php b/src/Listener/UserEventSubscriber.php index ceee8a9..0ad9c09 100644 --- a/src/Listener/UserEventSubscriber.php +++ b/src/Listener/UserEventSubscriber.php @@ -2,37 +2,32 @@ namespace ACPL\FlarumLSCache\Listener; -use Flarum\User\Event\{AvatarChanged, Deleted, GroupsChanged, Renamed}; +use Flarum\User\Event\{AvatarChanged, Deleting, GroupsChanged, Renamed}; use Illuminate\Contracts\Events\Dispatcher; class UserEventSubscriber extends AbstractCachePurgeSubscriber { public function subscribe(Dispatcher $events): void { - $shared = [AvatarChanged::class, Deleted::class, GroupsChanged::class, Renamed::class]; + $shared = [AvatarChanged::class, Deleting::class, GroupsChanged::class, Renamed::class]; foreach ($shared as $event) { $this->addPurgeListener($events, $event, [$this, 'handleUserWithPosts']); } } /** Purge discussions where user has posted. */ - public function handleUserWithPosts(AvatarChanged|GroupsChanged|Renamed $event): void + public function handleUserWithPosts(AvatarChanged|Deleting|GroupsChanged|Renamed $event): void { $this->purger->addPurgeTags([ "user_{$event->user->id}", "user_{$event->user->username}", 'posts', 'discussions', - ...array_map(fn ($id) => "discussion_$id", $discussions), + // TODO: If user has a lot of discussions chunk it and push to the queue job + ...array_map( + fn ($id) => "discussion_$id", + $event->user->posts()->pluck('discussion_id')->toArray(), + ), ]); - - $discussionCount = $event->user->posts()->getRelation('discussion')->distinct()->count(); - if ($discussionCount < 50) { - /** @phpstan-ignore-next-line Call to an undefined method Illuminate\Database\Eloquent\Relations\Relation::pluck(). */ - $discussions = $event->user->posts()->getRelation('discussion')->pluck('id')->toArray(); - $this->purger->addPurgeTags([ - - ]); - } } }