diff --git a/lib/Notification/Notifier.php b/lib/Notification/Notifier.php index 0f24a4ef5..6e9ed9366 100644 --- a/lib/Notification/Notifier.php +++ b/lib/Notification/Notifier.php @@ -18,6 +18,7 @@ use OCA\Circles\Exceptions\MemberNotFoundException; use OCA\Circles\Exceptions\RequestBuilderException; use OCA\Circles\Exceptions\SingleCircleNotFoundException; +use OCA\Circles\Model\Member; use OCA\Circles\Model\Probes\CircleProbe; use OCA\Circles\Service\ConfigService; use OCA\Circles\Service\FederatedUserService; @@ -131,6 +132,7 @@ public function prepare(INotification $notification, string $languageCode): INot * @throws InvalidIdException * @throws SingleCircleNotFoundException * @throws UnknownNotificationException + * @throws AlreadyProcessedException */ private function prepareMemberNotification(INotification $notification) { $this->federatedUserService->initCurrentUser($notification->getUser()); @@ -145,6 +147,10 @@ private function prepareMemberNotification(INotification $notification) { $probe ); + if ($notification->getSubject() === 'joinRequest' && $member->getStatus() !== Member::STATUS_REQUEST) { + throw new AlreadyProcessedException(); + } + $subject = match ($notification->getSubject()) { 'memberAdd' => $this->l10n->t( 'You are now a member of the Team "%2$s"',