diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 0f6e61982..fcd7d9fe0 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -127,6 +127,7 @@ public function register(IRegistrationContext $context): void { $context->registerEventListener(LoadAdditionalScriptsEvent::class, ListenerFilesLoadScripts::class); $context->registerEventListener(PreparingCircleMemberEvent::class, ListenerFilesPreparingMemberSendMail::class); $context->registerEventListener(AddingCircleMemberEvent::class, ListenerFilesAddingMemberSendMail::class); + $context->registerEventListener(AddingCircleMemberEvent::class, ListenerNotificationsRequestingMember::class); $context->registerEventListener(CircleMemberAddedEvent::class, ListenerFilesMemberAddedSendMail::class); $context->registerEventListener(PreparingFileShareEvent::class, ListenerFilesPreparingShareSendMail::class); $context->registerEventListener(CreatingFileShareEvent::class, ListenerFilesCreatingShareSendMail::class); diff --git a/lib/Listeners/Notifications/RequestingMember.php b/lib/Listeners/Notifications/RequestingMember.php index 50a91c0cd..44635c132 100644 --- a/lib/Listeners/Notifications/RequestingMember.php +++ b/lib/Listeners/Notifications/RequestingMember.php @@ -31,6 +31,8 @@ namespace OCA\Circles\Listeners\Notifications; +use OCA\Circles\Events\AddingCircleMemberEvent; +use OCA\Circles\Model\Circle; use OCA\Circles\Tools\Traits\TNCLogger; use OCA\Circles\AppInfo\Application; use OCA\Circles\Events\CircleGenericEvent; @@ -69,7 +71,7 @@ public function __construct(NotificationService $notificationService) { * @throws RequestBuilderException */ public function handle(Event $event): void { - if (!$event instanceof RequestingCircleMemberEvent) { + if (!$event instanceof RequestingCircleMemberEvent && !$event instanceof AddingCircleMemberEvent) { return; } @@ -77,6 +79,8 @@ public function handle(Event $event): void { if ($event->getType() === CircleGenericEvent::REQUESTED) { $this->notificationService->notificationRequested($member); + } elseif ($event->getType() === CircleGenericEvent::JOINED && $event->getCircle()->isConfig(Circle::CFG_INVITE)) { + $this->notificationService->markInvitationAsProcessed($member); } else { $this->notificationService->notificationInvited($member); } diff --git a/lib/Service/NotificationService.php b/lib/Service/NotificationService.php index 6853c68cf..cf7d43e13 100644 --- a/lib/Service/NotificationService.php +++ b/lib/Service/NotificationService.php @@ -228,4 +228,18 @@ private function linkToOCS(string $route, array $params = []): string { return parse_url($absolute, PHP_URL_PATH); } + + public function markInvitationAsProcessed(Member $member): void { + if ($member->getUserType() !== Member::TYPE_USER || !$member->isLocal()) { + return; + } + + $notification = $this->notificationManager->createNotification(); + $notification->setApp('circles') + ->setUser($member->getUserId()) + ->setObject('member', $member->getId()) + ->setSubject('invitation'); + + $this->notificationManager->markProcessed($notification); + } }