diff options
author | Joas Schilling <213943+nickvergessen@users.noreply.github.com> | 2022-04-26 10:08:36 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-26 10:08:36 +0300 |
commit | e5910f63dfa5526cb943506d3ca1207aafde0cbb (patch) | |
tree | 2fdf9899d9b766c3c34d6e3e92156794e8bc0048 /lib | |
parent | 6e442c4d3ca9246de748f2ad42c53decbd2135dc (diff) | |
parent | f182d2079fcd47ba0752e22e16dfc219e8e79bf5 (diff) |
Merge pull request #7183 from nextcloud/feature/move-system-message-listeners-annonymous-functions-to-static
Move system message listeners to static methods
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Chat/SystemMessage/Listener.php | 480 | ||||
-rw-r--r-- | lib/Events/AlreadySharedEvent.php | 45 | ||||
-rw-r--r-- | lib/Share/RoomShareProvider.php | 12 |
3 files changed, 304 insertions, 233 deletions
diff --git a/lib/Chat/SystemMessage/Listener.php b/lib/Chat/SystemMessage/Listener.php index 6190c1e48..e8a50724c 100644 --- a/lib/Chat/SystemMessage/Listener.php +++ b/lib/Chat/SystemMessage/Listener.php @@ -77,281 +77,307 @@ class Listener implements IEventListener { } public static function register(IEventDispatcher $dispatcher): void { - $dispatcher->addListener(Room::EVENT_BEFORE_SESSION_JOIN_CALL, static function (ModifyParticipantEvent $event) { - $room = $event->getRoom(); - /** @var self $listener */ - $listener = \OC::$server->get(self::class); - /** @var ParticipantService $participantService */ - $participantService = \OC::$server->get(ParticipantService::class); + $dispatcher->addListener(Room::EVENT_BEFORE_SESSION_JOIN_CALL, self::class . '::sendSystemMessageAboutBeginOfCall'); + $dispatcher->addListener(Room::EVENT_AFTER_SESSION_LEAVE_CALL, self::class . '::sendSystemMessageAboutCallLeft'); + $dispatcher->addListener(Room::EVENT_AFTER_ROOM_CREATE, self::class . '::sendSystemMessageAboutConversationCreated'); + $dispatcher->addListener(Room::EVENT_AFTER_NAME_SET, self::class . '::sendSystemMessageAboutConversationRenamed'); + $dispatcher->addListener(Room::EVENT_AFTER_DESCRIPTION_SET, self::class . '::sendSystemMessageAboutRoomDescriptionChanges'); + $dispatcher->addListener(Room::EVENT_AFTER_PASSWORD_SET, self::class . '::sendSystemMessageAboutRoomPassword'); + $dispatcher->addListener(Room::EVENT_AFTER_TYPE_SET, self::class . '::sendSystemGuestPermissionsMessage'); + $dispatcher->addListener(Room::EVENT_AFTER_READONLY_SET, self::class . '::sendSystemReadOnlyMessage'); + $dispatcher->addListener(Room::EVENT_AFTER_LISTABLE_SET, self::class . '::sendSystemListableMessage'); + $dispatcher->addListener(Room::EVENT_AFTER_LOBBY_STATE_SET, self::class . '::sendSystemLobbyMessage'); + $dispatcher->addListener(Room::EVENT_AFTER_USERS_ADD, self::class . '::addSystemMessageUserAdded'); + $dispatcher->addListener(Room::EVENT_AFTER_USER_REMOVE, self::class . '::sendSystemMessageUserRemoved'); + $dispatcher->addListener(Room::EVENT_AFTER_PARTICIPANT_TYPE_SET, self::class . '::sendSystemMessageAboutPromoteOrDemoteModerator'); + $dispatcher->addListener('OCP\Share::postShare', self::class . '::fixMimeTypeOfVoiceMessage'); + $dispatcher->addListener(RoomShareProvider::EVENT_SHARE_FILE_AGAIN, self::class . '::fixMimeTypeOfVoiceMessage'); + } - if ($participantService->hasActiveSessionsInCall($room)) { - $listener->sendSystemMessage($room, 'call_joined', [], $event->getParticipant()); - } else { - $listener->sendSystemMessage($room, 'call_started', [], $event->getParticipant()); - } - }); - $dispatcher->addListener(Room::EVENT_AFTER_SESSION_LEAVE_CALL, static function (ModifyParticipantEvent $event) { - if ($event instanceof ModifyEveryoneEvent) { - // No individual system message if the call is ended for everyone - return; - } + public static function sendSystemMessageAboutBeginOfCall(ModifyParticipantEvent $event): void { + $room = $event->getRoom(); + /** @var self $listener */ + $listener = \OC::$server->get(self::class); + /** @var ParticipantService $participantService */ + $participantService = \OC::$server->get(ParticipantService::class); - if ($event->getNewValue() === $event->getOldValue()) { - return; - } + if ($participantService->hasActiveSessionsInCall($room)) { + $listener->sendSystemMessage($room, 'call_joined', [], $event->getParticipant()); + } else { + $listener->sendSystemMessage($room, 'call_started', [], $event->getParticipant()); + } + } - $room = $event->getRoom(); + public static function sendSystemMessageAboutCallLeft(ModifyParticipantEvent $event): void { + if ($event instanceof ModifyEveryoneEvent) { + // No individual system message if the call is ended for everyone + return; + } - $session = $event->getParticipant()->getSession(); - if (!$session instanceof Session) { - // This happens in case the user was kicked/lobbied - return; - } + if ($event->getNewValue() === $event->getOldValue()) { + return; + } - /** @var self $listener */ - $listener = \OC::$server->get(self::class); + $room = $event->getRoom(); - $listener->sendSystemMessage($room, 'call_left', [], $event->getParticipant()); - }); + $session = $event->getParticipant()->getSession(); + if (!$session instanceof Session) { + // This happens in case the user was kicked/lobbied + return; + } - $dispatcher->addListener(Room::EVENT_AFTER_ROOM_CREATE, static function (RoomEvent $event) { - $room = $event->getRoom(); - /** @var self $listener */ - $listener = \OC::$server->get(self::class); + /** @var self $listener */ + $listener = \OC::$server->get(self::class); - $listener->sendSystemMessage($room, 'conversation_created'); - }); - $dispatcher->addListener(Room::EVENT_AFTER_NAME_SET, static function (ModifyRoomEvent $event) { - if ($event->getOldValue() === '' || - $event->getNewValue() === '') { - return; - } + $listener->sendSystemMessage($room, 'call_left', [], $event->getParticipant()); + } - $room = $event->getRoom(); - /** @var self $listener */ - $listener = \OC::$server->get(self::class); + public static function sendSystemMessageAboutConversationCreated(RoomEvent $event): void { + $room = $event->getRoom(); + /** @var self $listener */ + $listener = \OC::$server->get(self::class); + + $listener->sendSystemMessage($room, 'conversation_created'); + } - $listener->sendSystemMessage($room, 'conversation_renamed', [ - 'newName' => $event->getNewValue(), - 'oldName' => $event->getOldValue(), + public static function sendSystemMessageAboutConversationRenamed(ModifyRoomEvent $event): void { + if ($event->getOldValue() === '' || + $event->getNewValue() === '') { + return; + } + + $room = $event->getRoom(); + /** @var self $listener */ + $listener = \OC::$server->get(self::class); + + $listener->sendSystemMessage($room, 'conversation_renamed', [ + 'newName' => $event->getNewValue(), + 'oldName' => $event->getOldValue(), + ]); + } + + public static function sendSystemMessageAboutRoomDescriptionChanges(ModifyRoomEvent $event): void { + $room = $event->getRoom(); + /** @var self $listener */ + $listener = \OC::$server->get(self::class); + + if ($event->getNewValue() !== '') { + $listener->sendSystemMessage($room, 'description_set', [ + 'newDescription' => $event->getNewValue(), ]); - }); - $dispatcher->addListener(Room::EVENT_AFTER_DESCRIPTION_SET, static function (ModifyRoomEvent $event) { - $room = $event->getRoom(); + } else { + $listener->sendSystemMessage($room, 'description_removed'); + } + } + + public static function sendSystemMessageAboutRoomPassword(ModifyRoomEvent $event): void { + $room = $event->getRoom(); + /** @var self $listener */ + $listener = \OC::$server->get(self::class); + + if ($event->getNewValue() !== '') { + $listener->sendSystemMessage($room, 'password_set'); + } else { + $listener->sendSystemMessage($room, 'password_removed'); + } + } + + public static function sendSystemGuestPermissionsMessage(ModifyRoomEvent $event): void { + $room = $event->getRoom(); + + if ($event->getOldValue() === Room::TYPE_ONE_TO_ONE) { + return; + } + + if ($event->getNewValue() === Room::TYPE_PUBLIC) { /** @var self $listener */ $listener = \OC::$server->get(self::class); - - if ($event->getNewValue() !== '') { - $listener->sendSystemMessage($room, 'description_set', [ - 'newDescription' => $event->getNewValue(), - ]); - } else { - $listener->sendSystemMessage($room, 'description_removed'); - } - }); - $dispatcher->addListener(Room::EVENT_AFTER_PASSWORD_SET, static function (ModifyRoomEvent $event) { - $room = $event->getRoom(); + $listener->sendSystemMessage($room, 'guests_allowed'); + } elseif ($event->getNewValue() === Room::TYPE_GROUP) { /** @var self $listener */ $listener = \OC::$server->get(self::class); + $listener->sendSystemMessage($room, 'guests_disallowed'); + } + } - if ($event->getNewValue() !== '') { - $listener->sendSystemMessage($room, 'password_set'); - } else { - $listener->sendSystemMessage($room, 'password_removed'); - } - }); - $dispatcher->addListener(Room::EVENT_AFTER_TYPE_SET, static function (ModifyRoomEvent $event) { - $room = $event->getRoom(); + public static function sendSystemReadOnlyMessage(ModifyRoomEvent $event): void { + $room = $event->getRoom(); - if ($event->getOldValue() === Room::TYPE_ONE_TO_ONE) { - return; - } + if ($room->getType() === Room::TYPE_CHANGELOG) { + return; + } - if ($event->getNewValue() === Room::TYPE_PUBLIC) { - /** @var self $listener */ - $listener = \OC::$server->get(self::class); - $listener->sendSystemMessage($room, 'guests_allowed'); - } elseif ($event->getNewValue() === Room::TYPE_GROUP) { - /** @var self $listener */ - $listener = \OC::$server->get(self::class); - $listener->sendSystemMessage($room, 'guests_disallowed'); - } - }); - $dispatcher->addListener(Room::EVENT_AFTER_READONLY_SET, static function (ModifyRoomEvent $event) { - $room = $event->getRoom(); + /** @var self $listener */ + $listener = \OC::$server->get(self::class); - if ($room->getType() === Room::TYPE_CHANGELOG) { - return; - } + if ($event->getNewValue() === Room::READ_ONLY) { + $listener->sendSystemMessage($room, 'read_only'); + } elseif ($event->getNewValue() === Room::READ_WRITE) { + $listener->sendSystemMessage($room, 'read_only_off'); + } + } - /** @var self $listener */ - $listener = \OC::$server->get(self::class); + public static function sendSystemListableMessage(ModifyRoomEvent $event): void { + $room = $event->getRoom(); - if ($event->getNewValue() === Room::READ_ONLY) { - $listener->sendSystemMessage($room, 'read_only'); - } elseif ($event->getNewValue() === Room::READ_WRITE) { - $listener->sendSystemMessage($room, 'read_only_off'); - } - }); - $dispatcher->addListener(Room::EVENT_AFTER_LISTABLE_SET, static function (ModifyRoomEvent $event) { - $room = $event->getRoom(); + /** @var self $listener */ + $listener = \OC::$server->get(self::class); - /** @var self $listener */ - $listener = \OC::$server->get(self::class); + if ($event->getNewValue() === Room::LISTABLE_NONE) { + $listener->sendSystemMessage($room, 'listable_none'); + } elseif ($event->getNewValue() === Room::LISTABLE_USERS) { + $listener->sendSystemMessage($room, 'listable_users'); + } elseif ($event->getNewValue() === Room::LISTABLE_ALL) { + $listener->sendSystemMessage($room, 'listable_all'); + } + } - if ($event->getNewValue() === Room::LISTABLE_NONE) { - $listener->sendSystemMessage($room, 'listable_none'); - } elseif ($event->getNewValue() === Room::LISTABLE_USERS) { - $listener->sendSystemMessage($room, 'listable_users'); - } elseif ($event->getNewValue() === Room::LISTABLE_ALL) { - $listener->sendSystemMessage($room, 'listable_all'); - } - }); - $dispatcher->addListener(Room::EVENT_AFTER_LOBBY_STATE_SET, static function (ModifyLobbyEvent $event) { - if ($event->getNewValue() === $event->getOldValue()) { - return; - } + public static function sendSystemLobbyMessage(ModifyLobbyEvent $event): void { + if ($event->getNewValue() === $event->getOldValue()) { + return; + } - $room = $event->getRoom(); + $room = $event->getRoom(); - /** @var self $listener */ - $listener = \OC::$server->get(self::class); + /** @var self $listener */ + $listener = \OC::$server->get(self::class); - if ($event->isTimerReached()) { - $listener->sendSystemMessage($room, 'lobby_timer_reached'); - } elseif ($event->getNewValue() === Webinary::LOBBY_NONE) { - $listener->sendSystemMessage($room, 'lobby_none'); - } elseif ($event->getNewValue() === Webinary::LOBBY_NON_MODERATORS) { - $listener->sendSystemMessage($room, 'lobby_non_moderators'); - } - }); + if ($event->isTimerReached()) { + $listener->sendSystemMessage($room, 'lobby_timer_reached'); + } elseif ($event->getNewValue() === Webinary::LOBBY_NONE) { + $listener->sendSystemMessage($room, 'lobby_none'); + } elseif ($event->getNewValue() === Webinary::LOBBY_NON_MODERATORS) { + $listener->sendSystemMessage($room, 'lobby_non_moderators'); + } + } - $dispatcher->addListener(Room::EVENT_AFTER_USERS_ADD, static function (AddParticipantsEvent $event) { - $room = $event->getRoom(); - if ($room->getType() === Room::TYPE_ONE_TO_ONE) { - return; - } + public static function addSystemMessageUserAdded(AddParticipantsEvent $event): void { + $room = $event->getRoom(); + if ($room->getType() === Room::TYPE_ONE_TO_ONE) { + return; + } - /** @var self $listener */ - $listener = \OC::$server->get(self::class); + /** @var self $listener */ + $listener = \OC::$server->get(self::class); + + $participants = $event->getParticipants(); - $participants = $event->getParticipants(); - - foreach ($participants as $participant) { - if ($participant['actorType'] !== 'users') { - continue; - } - - $participantType = null; - if (isset($participant['participantType'])) { - $participantType = $participant['participantType']; - } - - $userJoinedFileRoom = $room->getObjectType() === 'file' && $participantType !== Participant::USER_SELF_JOINED; - - // add a message "X joined the conversation", whenever user $userId: - if ( - // - has joined a file room but not through a public link - $userJoinedFileRoom - // - has been added by another user (and not when creating a conversation) - || $listener->getUserId() !== $participant['actorId'] - // - has joined a listable room on their own - || $participantType === Participant::USER) { - $comment = $listener->sendSystemMessage( - $room, - 'user_added', - ['user' => $participant['actorId']], - null, - $event->shouldSkipLastMessageUpdate() - ); - - $event->setLastMessage($comment); - } + foreach ($participants as $participant) { + if ($participant['actorType'] !== 'users') { + continue; } - }); - $dispatcher->addListener(Room::EVENT_AFTER_USER_REMOVE, static function (RemoveUserEvent $event) { - $room = $event->getRoom(); - if ($room->getType() === Room::TYPE_ONE_TO_ONE) { - return; + $participantType = null; + if (isset($participant['participantType'])) { + $participantType = $participant['participantType']; } - if ($event->getReason() === Room::PARTICIPANT_LEFT - && $event->getParticipant()->getAttendee()->getParticipantType() === Participant::USER_SELF_JOINED) { - // Self-joined user closes the tab/window or leaves via the menu - return; + $userJoinedFileRoom = $room->getObjectType() === 'file' && $participantType !== Participant::USER_SELF_JOINED; + + // add a message "X joined the conversation", whenever user $userId: + if ( + // - has joined a file room but not through a public link + $userJoinedFileRoom + // - has been added by another user (and not when creating a conversation) + || $listener->getUserId() !== $participant['actorId'] + // - has joined a listable room on their own + || $participantType === Participant::USER) { + $comment = $listener->sendSystemMessage( + $room, + 'user_added', + ['user' => $participant['actorId']], + null, + $event->shouldSkipLastMessageUpdate() + ); + + $event->setLastMessage($comment); } + } + } + + public static function sendSystemMessageUserRemoved(RemoveUserEvent $event): void { + $room = $event->getRoom(); + if ($room->getType() === Room::TYPE_ONE_TO_ONE) { + return; + } + + if ($event->getReason() === Room::PARTICIPANT_LEFT + && $event->getParticipant()->getAttendee()->getParticipantType() === Participant::USER_SELF_JOINED) { + // Self-joined user closes the tab/window or leaves via the menu + return; + } + + /** @var self $listener */ + $listener = \OC::$server->get(self::class); + $listener->sendSystemMessage($room, 'user_removed', ['user' => $event->getUser()->getUID()]); + } + + public static function sendSystemMessageAboutPromoteOrDemoteModerator(ModifyParticipantEvent $event): void { + $room = $event->getRoom(); + $attendee = $event->getParticipant()->getAttendee(); + + if ($attendee->getActorType() !== Attendee::ACTOR_USERS && $attendee->getActorType() !== Attendee::ACTOR_GUESTS) { + return; + } + + if ($event->getNewValue() === Participant::MODERATOR) { /** @var self $listener */ $listener = \OC::$server->get(self::class); - $listener->sendSystemMessage($room, 'user_removed', ['user' => $event->getUser()->getUID()]); - }); - $dispatcher->addListener(Room::EVENT_AFTER_PARTICIPANT_TYPE_SET, static function (ModifyParticipantEvent $event) { - $room = $event->getRoom(); - $attendee = $event->getParticipant()->getAttendee(); - - if ($attendee->getActorType() !== Attendee::ACTOR_USERS && $attendee->getActorType() !== Attendee::ACTOR_GUESTS) { - return; - } - - if ($event->getNewValue() === Participant::MODERATOR) { + $listener->sendSystemMessage($room, 'moderator_promoted', ['user' => $attendee->getActorId()]); + } elseif ($event->getNewValue() === Participant::USER) { + if ($event->getOldValue() === Participant::USER_SELF_JOINED) { /** @var self $listener */ $listener = \OC::$server->get(self::class); - $listener->sendSystemMessage($room, 'moderator_promoted', ['user' => $attendee->getActorId()]); - } elseif ($event->getNewValue() === Participant::USER) { - if ($event->getOldValue() === Participant::USER_SELF_JOINED) { - /** @var self $listener */ - $listener = \OC::$server->get(self::class); - $listener->sendSystemMessage($room, 'user_added', ['user' => $attendee->getActorId()]); - } else { - /** @var self $listener */ - $listener = \OC::$server->get(self::class); - $listener->sendSystemMessage($room, 'moderator_demoted', ['user' => $attendee->getActorId()]); - } - } elseif ($event->getNewValue() === Participant::GUEST_MODERATOR) { - /** @var self $listener */ - $listener = \OC::$server->get(self::class); - $listener->sendSystemMessage($room, 'guest_moderator_promoted', ['session' => $attendee->getActorId()]); - } elseif ($event->getNewValue() === Participant::GUEST) { + $listener->sendSystemMessage($room, 'user_added', ['user' => $attendee->getActorId()]); + } else { /** @var self $listener */ $listener = \OC::$server->get(self::class); - $listener->sendSystemMessage($room, 'guest_moderator_demoted', ['session' => $attendee->getActorId()]); + $listener->sendSystemMessage($room, 'moderator_demoted', ['user' => $attendee->getActorId()]); } - }); - $listener = function (GenericEvent $event): void { - /** @var IShare $share */ - $share = $event->getSubject(); - - if ($share->getShareType() !== IShare::TYPE_ROOM) { - return; - } - + } elseif ($event->getNewValue() === Participant::GUEST_MODERATOR) { /** @var self $listener */ $listener = \OC::$server->get(self::class); + $listener->sendSystemMessage($room, 'guest_moderator_promoted', ['session' => $attendee->getActorId()]); + } elseif ($event->getNewValue() === Participant::GUEST) { + /** @var self $listener */ + $listener = \OC::$server->get(self::class); + $listener->sendSystemMessage($room, 'guest_moderator_demoted', ['session' => $attendee->getActorId()]); + } + } - /** @var Manager $manager */ - $manager = \OC::$server->get(Manager::class); + /** + * @param GenericEvent|Event $event + * @return void + */ + public static function fixMimeTypeOfVoiceMessage($event): void { + /** @var IShare $share */ + $share = $event->getSubject(); - $room = $manager->getRoomByToken($share->getSharedWith()); - $metaData = \OC::$server->getRequest()->getParam('talkMetaData') ?? ''; - $metaData = json_decode($metaData, true); - $metaData = is_array($metaData) ? $metaData : []; + if ($share->getShareType() !== IShare::TYPE_ROOM) { + return; + } + + /** @var self $listener */ + $listener = \OC::$server->get(self::class); + + /** @var Manager $manager */ + $manager = \OC::$server->get(Manager::class); - if (isset($metaData['messageType']) && $metaData['messageType'] === 'voice-message') { - if ($share->getNode()->getMimeType() !== 'audio/mpeg' - && $share->getNode()->getMimeType() !== 'audio/wav') { - unset($metaData['messageType']); - } + $room = $manager->getRoomByToken($share->getSharedWith()); + $metaData = \OC::$server->getRequest()->getParam('talkMetaData') ?? ''; + $metaData = json_decode($metaData, true); + $metaData = is_array($metaData) ? $metaData : []; + + if (isset($metaData['messageType']) && $metaData['messageType'] === 'voice-message') { + if ($share->getNode()->getMimeType() !== 'audio/mpeg' + && $share->getNode()->getMimeType() !== 'audio/wav') { + unset($metaData['messageType']); } - $metaData['mimeType'] = $share->getNode()->getMimeType(); - - $listener->sendSystemMessage($room, 'file_shared', ['share' => $share->getId(), 'metaData' => $metaData]); - }; - /** - * @psalm-suppress UndefinedClass - */ - $dispatcher->addListener('OCP\Share::postShare', $listener); - $dispatcher->addListener(RoomShareProvider::class . '::' . 'share_file_again', $listener); + } + $metaData['mimeType'] = $share->getNode()->getMimeType(); + + $listener->sendSystemMessage($room, 'file_shared', ['share' => $share->getId(), 'metaData' => $metaData]); } public function handle(Event $event): void { diff --git a/lib/Events/AlreadySharedEvent.php b/lib/Events/AlreadySharedEvent.php new file mode 100644 index 000000000..665e65a03 --- /dev/null +++ b/lib/Events/AlreadySharedEvent.php @@ -0,0 +1,45 @@ +<?php + +declare(strict_types=1); +/** + * @copyright Copyright (c) 2022, Vitor Mattos <vitor@php.rio> + * + * @author Vitor Mattos <vitor@php.rio> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + + +namespace OCA\Talk\Events; + +use OCP\EventDispatcher\Event; + +class AlreadySharedEvent extends Event { + private $subject; + public function __construct($subject = null) { + $this->subject = $subject; + } + + /** + * Getter for subject property. + * + * @return mixed + */ + public function getSubject() { + return $this->subject; + } +} diff --git a/lib/Share/RoomShareProvider.php b/lib/Share/RoomShareProvider.php index 28dbfef15..9e3c4ad90 100644 --- a/lib/Share/RoomShareProvider.php +++ b/lib/Share/RoomShareProvider.php @@ -29,11 +29,11 @@ declare(strict_types=1); namespace OCA\Talk\Share; use OC\Files\Cache\Cache; +use OCA\Talk\Events\AlreadySharedEvent; use OCA\Talk\Events\RoomEvent; use OCA\Talk\Exceptions\ParticipantNotFoundException; use OCA\Talk\Exceptions\RoomNotFoundException; use OCA\Talk\Manager; -use OCA\Talk\Participant; use OCA\Talk\Room; use OCA\Talk\Service\ParticipantService; use OCP\AppFramework\Utility\ITimeFactory; @@ -50,8 +50,6 @@ use OCP\Share\Exceptions\ShareNotFound; use OCP\Share\IManager as IShareManager; use OCP\Share\IShare; use OCP\Share\IShareProvider; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Symfony\Component\EventDispatcher\GenericEvent; /** * Share provider for room shares. @@ -71,10 +69,12 @@ class RoomShareProvider implements IShareProvider { public const TALK_FOLDER = '/Talk'; public const TALK_FOLDER_PLACEHOLDER = '/{TALK_PLACEHOLDER}'; + public const EVENT_SHARE_FILE_AGAIN = self::class . '::shareFileAgain'; + private IDBConnection $dbConnection; private ISecureRandom $secureRandom; private IShareManager $shareManager; - private EventDispatcherInterface $dispatcher; + private IEventDispatcher $dispatcher; private Manager $manager; private ParticipantService $participantService; protected ITimeFactory $timeFactory; @@ -85,7 +85,7 @@ class RoomShareProvider implements IShareProvider { IDBConnection $connection, ISecureRandom $secureRandom, IShareManager $shareManager, - EventDispatcherInterface $dispatcher, + IEventDispatcher $dispatcher, Manager $manager, ParticipantService $participantService, ITimeFactory $timeFactory, @@ -153,7 +153,7 @@ class RoomShareProvider implements IShareProvider { foreach ($existingShares as $existingShare) { if ($existingShare->getSharedWith() === $share->getSharedWith()) { // FIXME Should be moved away from GenericEvent as soon as OCP\Share20\IManager did move too - $this->dispatcher->dispatch(self::class . '::' . 'share_file_again', new GenericEvent($existingShare)); + $this->dispatcher->dispatch(self::EVENT_SHARE_FILE_AGAIN, new AlreadySharedEvent($existingShare)); throw new GenericShareException('Already shared', $this->l->t('Path is already shared with this room'), 403); } } |