Skip to content

Commit 7628e6d

Browse files
committed
feat: dismiss notification when accepting an invitation
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
1 parent e86b336 commit 7628e6d

3 files changed

Lines changed: 20 additions & 1 deletion

File tree

lib/AppInfo/Application.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ public function register(IRegistrationContext $context): void {
106106
$context->registerEventListener(LoadAdditionalScriptsEvent::class, ListenerFilesLoadScripts::class);
107107
$context->registerEventListener(PreparingCircleMemberEvent::class, ListenerFilesPreparingMemberSendMail::class);
108108
$context->registerEventListener(AddingCircleMemberEvent::class, ListenerFilesAddingMemberSendMail::class);
109+
$context->registerEventListener(AddingCircleMemberEvent::class, ListenerNotificationsRequestingMember::class);
109110
$context->registerEventListener(CircleMemberAddedEvent::class, ListenerFilesMemberAddedSendMail::class);
110111
$context->registerEventListener(PreparingFileShareEvent::class, ListenerFilesPreparingShareSendMail::class);
111112
$context->registerEventListener(CreatingFileShareEvent::class, ListenerFilesCreatingShareSendMail::class);

lib/Listeners/Notifications/RequestingMember.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@
88

99
namespace OCA\Circles\Listeners\Notifications;
1010

11+
use OCA\Circles\Events\AddingCircleMemberEvent;
1112
use OCA\Circles\Events\CircleGenericEvent;
1213
use OCA\Circles\Events\RequestingCircleMemberEvent;
14+
use OCA\Circles\Model\Circle;
1315
use OCA\Circles\Service\NotificationService;
1416
use OCP\EventDispatcher\Event;
1517
use OCP\EventDispatcher\IEventListener;
@@ -22,13 +24,15 @@ public function __construct(
2224
}
2325

2426
public function handle(Event $event): void {
25-
if (!$event instanceof RequestingCircleMemberEvent) {
27+
if (!$event instanceof RequestingCircleMemberEvent && !$event instanceof AddingCircleMemberEvent) {
2628
return;
2729
}
2830

2931
$member = $event->getMember();
3032
if ($event->getType() === CircleGenericEvent::REQUESTED) {
3133
$this->notificationService->notificationRequested($member);
34+
} else if ($event->getType() === CircleGenericEvent::JOINED && $event->getCircle()->isConfig(Circle::CFG_INVITE)) {
35+
$this->notificationService->markInvitationAsProcessed($member);
3236
} else {
3337
$this->notificationService->notificationInvited($member);
3438
}

lib/Service/NotificationService.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,4 +205,18 @@ private function linkToOCS(string $route, array $params = []): string {
205205

206206
return parse_url($absolute, PHP_URL_PATH);
207207
}
208+
209+
public function markInvitationAsProcessed(Member $member): void {
210+
if ($member->getUserType() !== Member::TYPE_USER || !$member->isLocal()) {
211+
return;
212+
}
213+
214+
$notification = $this->notificationManager->createNotification();
215+
$notification->setApp('circles')
216+
->setUser($member->getUserId())
217+
->setObject('member', $member->getId())
218+
->setSubject('invitation');
219+
220+
$this->notificationManager->markProcessed($notification);
221+
}
208222
}

0 commit comments

Comments
 (0)