Browse Source

Merge pull request #12777 from nextcloud/do-not-try-to-post-messages-when-federated-room-visibility-changes

fix: Do not try to post messages when federated room visibility changes
pull/12786/head
Joas Schilling 1 year ago
committed by GitHub
parent
commit
809cf0d7b5
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 49
      lib/Chat/SystemMessage/Listener.php

49
lib/Chat/SystemMessage/Listener.php

@ -13,6 +13,7 @@ use OCA\Talk\Chat\ChatManager;
use OCA\Talk\Chat\MessageParser;
use OCA\Talk\Events\AAttendeeRemovedEvent;
use OCA\Talk\Events\AParticipantModifiedEvent;
use OCA\Talk\Events\ARoomEvent;
use OCA\Talk\Events\ARoomModifiedEvent;
use OCA\Talk\Events\AttendeeRemovedEvent;
use OCA\Talk\Events\AttendeesAddedEvent;
@ -70,6 +71,10 @@ class Listener implements IEventListener {
}
public function handle(Event $event): void {
if ($event instanceof ARoomEvent && $event->getRoom()->isFederatedConversation()) {
return;
}
if ($event instanceof AttendeesAddedEvent) {
$this->attendeesAddedEvent($event);
} elseif ($event instanceof AttendeeRemovedEvent) {
@ -150,10 +155,6 @@ class Listener implements IEventListener {
}
protected function sendSystemMessageAboutConversationCreated(RoomCreatedEvent $event): void {
if ($event->getRoom()->isFederatedConversation()) {
return;
}
if ($event->getRoom()->getType() === Room::TYPE_CHANGELOG || $this->isCreatingNoteToSelfAutomatically($event)) {
$this->sendSystemMessage($event->getRoom(), 'conversation_created', forceSystemAsActor: true);
} else {
@ -167,11 +168,6 @@ class Listener implements IEventListener {
return;
}
if ($event->getRoom()->isFederatedConversation()) {
return;
}
$this->sendSystemMessage($event->getRoom(), 'conversation_renamed', [
'newName' => $event->getNewValue(),
'oldName' => $event->getOldValue(),
@ -179,10 +175,6 @@ class Listener implements IEventListener {
}
protected function sendSystemMessageAboutRoomDescriptionChanges(RoomModifiedEvent $event): void {
if ($event->getRoom()->isFederatedConversation()) {
return;
}
if ($event->getNewValue() !== '') {
if ($this->isCreatingNoteToSelf($event)) {
return;
@ -197,10 +189,6 @@ class Listener implements IEventListener {
}
protected function sendSystemMessageAboutRoomPassword(RoomModifiedEvent $event): void {
if ($event->getRoom()->isFederatedConversation()) {
return;
}
if ($event->getNewValue() !== '') {
$this->sendSystemMessage($event->getRoom(), 'password_set');
} else {
@ -227,10 +215,6 @@ class Listener implements IEventListener {
return;
}
if ($room->isFederatedConversation()) {
return;
}
if ($event->getNewValue() === Room::READ_ONLY) {
$this->sendSystemMessage($room, 'read_only');
} elseif ($event->getNewValue() === Room::READ_WRITE) {
@ -279,10 +263,6 @@ class Listener implements IEventListener {
return;
}
if ($room->isFederatedConversation()) {
return;
}
$userJoinedFileRoom = $room->getObjectType() === Room::OBJECT_TYPE_FILE && $attendee->getParticipantType() !== Participant::USER_SELF_JOINED;
// add a message "X joined the conversation", whenever user $userId:
@ -317,10 +297,6 @@ class Listener implements IEventListener {
return;
}
if ($room->isFederatedConversation()) {
return;
}
if ($event->getReason() === AAttendeeRemovedEvent::REASON_LEFT
&& $event->getAttendee()->getParticipantType() === Participant::USER_SELF_JOINED) {
// Self-joined user closes the tab/window or leaves via the menu
@ -339,10 +315,6 @@ class Listener implements IEventListener {
return;
}
if ($event->getRoom()->isFederatedConversation()) {
return;
}
if ($event->getNewValue() === Participant::MODERATOR) {
$this->sendSystemMessage($room, 'moderator_promoted', ['user' => $attendee->getActorId()]);
} elseif ($event->getNewValue() === Participant::USER) {
@ -388,9 +360,6 @@ class Listener implements IEventListener {
return;
}
$room = $this->manager->getRoomByToken($share->getSharedWith());
if ($room->isFederatedConversation()) {
return;
}
$metaData = $this->request->getParam('talkMetaData') ?? '';
$metaData = json_decode($metaData, true);
@ -422,10 +391,6 @@ class Listener implements IEventListener {
}
protected function attendeesAddedEvent(AttendeesAddedEvent $event): void {
if ($event->getRoom()->isFederatedConversation()) {
return;
}
foreach ($event->getAttendees() as $attendee) {
$this->logger->debug($attendee->getActorType() . ' "' . $attendee->getActorId() . '" added to room "' . $event->getRoom()->getToken() . '"', ['app' => 'spreed-bfp']);
if ($attendee->getActorType() === Attendee::ACTOR_GROUPS) {
@ -443,10 +408,6 @@ class Listener implements IEventListener {
}
protected function attendeesRemovedEvent(AttendeesRemovedEvent $event): void {
if ($event->getRoom()->isFederatedConversation()) {
return;
}
foreach ($event->getAttendees() as $attendee) {
$this->logger->debug($attendee->getActorType() . ' "' . $attendee->getActorId() . '" removed from room "' . $event->getRoom()->getToken() . '"', ['app' => 'spreed-bfp']);
if ($attendee->getActorType() === Attendee::ACTOR_GROUPS) {

Loading…
Cancel
Save