From 0a835064a76fae77d0988e59796868da9b14d061 Mon Sep 17 00:00:00 2001 From: SebastianKrupinski Date: Wed, 27 Aug 2025 11:27:00 -0400 Subject: [PATCH] fix: add missing listener Signed-off-by: SebastianKrupinski Signed-off-by: Richard Steinmetz --- .../composer/composer/autoload_classmap.php | 1 + .../composer/composer/autoload_static.php | 1 + .../lib/AppInfo/Application.php | 3 ++ .../lib/Db/RecentContactMapper.php | 10 ++++++ .../lib/Listeners/UserDeletedListener.php | 35 +++++++++++++++++++ 5 files changed, 50 insertions(+) create mode 100644 apps/contactsinteraction/lib/Listeners/UserDeletedListener.php diff --git a/apps/contactsinteraction/composer/composer/autoload_classmap.php b/apps/contactsinteraction/composer/composer/autoload_classmap.php index 6cc1fd7d984d4..aff453c997df7 100644 --- a/apps/contactsinteraction/composer/composer/autoload_classmap.php +++ b/apps/contactsinteraction/composer/composer/autoload_classmap.php @@ -16,5 +16,6 @@ 'OCA\\ContactsInteraction\\Db\\RecentContact' => $baseDir . '/../lib/Db/RecentContact.php', 'OCA\\ContactsInteraction\\Db\\RecentContactMapper' => $baseDir . '/../lib/Db/RecentContactMapper.php', 'OCA\\ContactsInteraction\\Listeners\\ContactInteractionListener' => $baseDir . '/../lib/Listeners/ContactInteractionListener.php', + 'OCA\\ContactsInteraction\\Listeners\\UserDeletedListener' => $baseDir . '/../lib/Listeners/UserDeletedListener.php', 'OCA\\ContactsInteraction\\Migration\\Version010000Date20200304152605' => $baseDir . '/../lib/Migration/Version010000Date20200304152605.php', ); diff --git a/apps/contactsinteraction/composer/composer/autoload_static.php b/apps/contactsinteraction/composer/composer/autoload_static.php index c7cdc26dc68d9..9cee53ae04565 100644 --- a/apps/contactsinteraction/composer/composer/autoload_static.php +++ b/apps/contactsinteraction/composer/composer/autoload_static.php @@ -31,6 +31,7 @@ class ComposerStaticInitContactsInteraction 'OCA\\ContactsInteraction\\Db\\RecentContact' => __DIR__ . '/..' . '/../lib/Db/RecentContact.php', 'OCA\\ContactsInteraction\\Db\\RecentContactMapper' => __DIR__ . '/..' . '/../lib/Db/RecentContactMapper.php', 'OCA\\ContactsInteraction\\Listeners\\ContactInteractionListener' => __DIR__ . '/..' . '/../lib/Listeners/ContactInteractionListener.php', + 'OCA\\ContactsInteraction\\Listeners\\UserDeletedListener' => __DIR__ . '/..' . '/../lib/Listeners/UserDeletedListener.php', 'OCA\\ContactsInteraction\\Migration\\Version010000Date20200304152605' => __DIR__ . '/..' . '/../lib/Migration/Version010000Date20200304152605.php', ); diff --git a/apps/contactsinteraction/lib/AppInfo/Application.php b/apps/contactsinteraction/lib/AppInfo/Application.php index 21260cf18d0a6..db8b5e2c18909 100644 --- a/apps/contactsinteraction/lib/AppInfo/Application.php +++ b/apps/contactsinteraction/lib/AppInfo/Application.php @@ -27,11 +27,13 @@ namespace OCA\ContactsInteraction\AppInfo; use OCA\ContactsInteraction\Listeners\ContactInteractionListener; +use OCA\ContactsInteraction\Listeners\UserDeletedListener; use OCP\AppFramework\App; use OCP\AppFramework\Bootstrap\IBootContext; use OCP\AppFramework\Bootstrap\IBootstrap; use OCP\AppFramework\Bootstrap\IRegistrationContext; use OCP\Contacts\Events\ContactInteractedWithEvent; +use OCP\User\Events\UserDeletedEvent; class Application extends App implements IBootstrap { public const APP_ID = 'contactsinteraction'; @@ -42,6 +44,7 @@ public function __construct() { public function register(IRegistrationContext $context): void { $context->registerEventListener(ContactInteractedWithEvent::class, ContactInteractionListener::class); + $context->registerEventListener(UserDeletedEvent::class, UserDeletedListener::class); } public function boot(IBootContext $context): void { diff --git a/apps/contactsinteraction/lib/Db/RecentContactMapper.php b/apps/contactsinteraction/lib/Db/RecentContactMapper.php index 257c888e8185d..dcce18d51934a 100644 --- a/apps/contactsinteraction/lib/Db/RecentContactMapper.php +++ b/apps/contactsinteraction/lib/Db/RecentContactMapper.php @@ -128,4 +128,14 @@ public function cleanUp(int $olderThan): void { $delete->executeStatement(); } + + public function deleteByUserId(string $uid): void { + $qb = $this->db->getQueryBuilder(); + + $delete = $qb + ->delete($this->getTableName()) + ->where($qb->expr()->eq('actor_uid', $qb->createNamedParameter($uid))); + + $delete->executeStatement(); + } } diff --git a/apps/contactsinteraction/lib/Listeners/UserDeletedListener.php b/apps/contactsinteraction/lib/Listeners/UserDeletedListener.php new file mode 100644 index 0000000000000..8d538cd9399c7 --- /dev/null +++ b/apps/contactsinteraction/lib/Listeners/UserDeletedListener.php @@ -0,0 +1,35 @@ + + */ +class UserDeletedListener implements IEventListener { + + public function __construct( + private RecentContactMapper $recentContactMapper, + ) { + } + + #[\Override] + public function handle(Event $event): void { + if (!($event instanceof UserDeletedEvent)) { + return; + } + + $this->recentContactMapper->deleteByUserId($event->getUser()->getUID()); + } +}