Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/spreed.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJoas Schilling <213943+nickvergessen@users.noreply.github.com>2022-04-26 10:08:36 +0300
committerGitHub <noreply@github.com>2022-04-26 10:08:36 +0300
commite5910f63dfa5526cb943506d3ca1207aafde0cbb (patch)
tree2fdf9899d9b766c3c34d6e3e92156794e8bc0048 /lib
parent6e442c4d3ca9246de748f2ad42c53decbd2135dc (diff)
parentf182d2079fcd47ba0752e22e16dfc219e8e79bf5 (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.php480
-rw-r--r--lib/Events/AlreadySharedEvent.php45
-rw-r--r--lib/Share/RoomShareProvider.php12
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);
}
}