fix(API): Use Room::isFederatedConversation() consistantly

Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
Joas Schilling 2024-03-18 14:25:11 +01:00
parent 9f6332a86c
commit 34163987cf
No known key found for this signature in database
GPG key ID: 74434EFE0D2E2205
20 changed files with 49 additions and 52 deletions

View file

@ -91,7 +91,7 @@ class RemoveEmptyRooms extends TimedJob {
return false;
}
if ($room->getRemoteServer() && $room->getRemoteToken()
if ($room->isFederatedConversation()
&& $this->federationManager->getNumberOfInvitations($room) !== 0) {
return false;
}

View file

@ -136,7 +136,7 @@ class ChatManager {
bool $shouldSkipLastMessageUpdate = false,
bool $silent = false,
): IComment {
if ($chat->getRemoteServer() !== '') {
if ($chat->isFederatedConversation()) {
$e = new MessagingNotAllowedException();
$this->logger->error('Attempt to post system message into proxy conversation', ['exception' => $e]);
throw $e;
@ -286,7 +286,7 @@ class ChatManager {
* @throws MessagingNotAllowedException
*/
public function sendMessage(Room $chat, ?Participant $participant, string $actorType, string $actorId, string $message, \DateTime $creationDateTime, ?IComment $replyTo = null, string $referenceId = '', bool $silent = false, bool $rateLimitGuestMentions = true): IComment {
if ($chat->getRemoteServer() !== '') {
if ($chat->isFederatedConversation()) {
$e = new MessagingNotAllowedException();
$this->logger->error('Attempt to post system message into proxy conversation', ['exception' => $e]);
throw $e;

View file

@ -165,7 +165,7 @@ class Listener implements IEventListener {
}
protected function sendSystemMessageAboutConversationCreated(RoomCreatedEvent $event): void {
if ($event->getRoom()->getRemoteServer() !== '') {
if ($event->getRoom()->isFederatedConversation()) {
return;
}
@ -182,7 +182,7 @@ class Listener implements IEventListener {
return;
}
if ($event->getRoom()->getRemoteServer() !== '') {
if ($event->getRoom()->isFederatedConversation()) {
return;
}
@ -194,7 +194,7 @@ class Listener implements IEventListener {
}
protected function sendSystemMessageAboutRoomDescriptionChanges(RoomModifiedEvent $event): void {
if ($event->getRoom()->getRemoteServer() !== '') {
if ($event->getRoom()->isFederatedConversation()) {
return;
}
@ -212,7 +212,7 @@ class Listener implements IEventListener {
}
protected function sendSystemMessageAboutRoomPassword(RoomModifiedEvent $event): void {
if ($event->getRoom()->getRemoteServer() !== '') {
if ($event->getRoom()->isFederatedConversation()) {
return;
}
@ -242,7 +242,7 @@ class Listener implements IEventListener {
return;
}
if ($room->getRemoteServer() !== '') {
if ($room->isFederatedConversation()) {
return;
}
@ -294,7 +294,7 @@ class Listener implements IEventListener {
return;
}
if ($room->getRemoteServer() !== '') {
if ($room->isFederatedConversation()) {
return;
}
@ -331,7 +331,7 @@ class Listener implements IEventListener {
return;
}
if ($room->getRemoteServer() !== '') {
if ($room->isFederatedConversation()) {
return;
}
@ -352,7 +352,7 @@ class Listener implements IEventListener {
return;
}
if ($event->getRoom()->getRemoteServer() !== '') {
if ($event->getRoom()->isFederatedConversation()) {
return;
}
@ -401,8 +401,7 @@ class Listener implements IEventListener {
return;
}
$room = $this->manager->getRoomByToken($share->getSharedWith());
if ($room->getRemoteServer() !== '') {
// FIXME this should be blocked up front
if ($room->isFederatedConversation()) {
return;
}
@ -436,7 +435,7 @@ class Listener implements IEventListener {
}
protected function attendeesAddedEvent(AttendeesAddedEvent $event): void {
if ($event->getRoom()->getRemoteServer() !== '') {
if ($event->getRoom()->isFederatedConversation()) {
return;
}
@ -456,7 +455,7 @@ class Listener implements IEventListener {
}
protected function attendeesRemovedEvent(AttendeesRemovedEvent $event): void {
if ($event->getRoom()->getRemoteServer() !== '') {
if ($event->getRoom()->isFederatedConversation()) {
return;
}

View file

@ -134,7 +134,7 @@ class Listener implements IEventListener {
return $results;
}
if ($this->room->getRemoteServer() !== '') {
if ($this->room->isFederatedConversation()) {
return $results;
}

View file

@ -62,7 +62,7 @@ class RoomPlugin implements ISearchPlugin {
continue;
}
if ($room->getRemoteServer() !== '') {
if ($room->isFederatedConversation()) {
continue;
}

View file

@ -81,7 +81,7 @@ class Setup extends Base {
try {
$room = $this->roomManager->getRoomByToken($token);
if ($room->getRemoteServer() !== '') {
if ($room->isFederatedConversation()) {
$output->writeln('<error>Federated conversations can not have bots: ' . $token . '</error>');
$returnCode = 2;
}

View file

@ -149,7 +149,7 @@ class AvatarController extends AEnvironmentAwareController {
public function getAvatar(bool $darkTheme = false): FileDisplayResponse {
// Cache for 1 day
$cacheDuration = 60 * 60 * 24;
if ($this->room->getRemoteServer() !== '') {
if ($this->room->isFederatedConversation()) {
/** @var \OCA\Talk\Federation\Proxy\TalkV1\Controller\AvatarController $proxy */
$proxy = \OCP\Server::get(\OCA\Talk\Federation\Proxy\TalkV1\Controller\AvatarController::class);
try {

View file

@ -353,7 +353,7 @@ class BotController extends AEnvironmentAwareController {
#[NoAdminRequired]
#[RequireLoggedInModeratorParticipant]
public function enableBot(int $botId): DataResponse {
if ($this->room->getRemoteServer() !== '') {
if ($this->room->isFederatedConversation()) {
return new DataResponse([
'error' => 'room',
], Http::STATUS_BAD_REQUEST);

View file

@ -214,7 +214,7 @@ class ChatController extends AEnvironmentAwareController {
#[RequirePermission(permission: RequirePermission::CHAT)]
#[RequireReadWriteConversation]
public function sendMessage(string $message, string $actorDisplayName = '', string $referenceId = '', int $replyTo = 0, bool $silent = false): DataResponse {
if ($this->room->getRemoteServer()) {
if ($this->room->isFederatedConversation()) {
/** @var \OCA\Talk\Federation\Proxy\TalkV1\Controller\ChatController $proxy */
$proxy = \OCP\Server::get(\OCA\Talk\Federation\Proxy\TalkV1\Controller\ChatController::class);
return $proxy->sendMessage($this->room, $this->participant, $message, $referenceId, $replyTo, $silent);
@ -433,7 +433,7 @@ class ChatController extends AEnvironmentAwareController {
$limit = min(200, $limit);
$timeout = min(30, $timeout);
if ($this->room->getRemoteServer() !== '') {
if ($this->room->isFederatedConversation()) {
/** @var \OCA\Talk\Federation\Proxy\TalkV1\Controller\ChatController $proxy */
$proxy = \OCP\Server::get(\OCA\Talk\Federation\Proxy\TalkV1\Controller\ChatController::class);
return $proxy->receiveMessages(
@ -656,7 +656,7 @@ class ChatController extends AEnvironmentAwareController {
int $limit = 50): DataResponse {
$limit = min(100, $limit);
if ($this->room->getRemoteServer() !== '') {
if ($this->room->isFederatedConversation()) {
/** @var \OCA\Talk\Federation\Proxy\TalkV1\Controller\ChatController $proxy */
$proxy = \OCP\Server::get(\OCA\Talk\Federation\Proxy\TalkV1\Controller\ChatController::class);
return $proxy->getMessageContext($this->room, $this->participant, $messageId, $limit);
@ -735,7 +735,7 @@ class ChatController extends AEnvironmentAwareController {
#[RequirePermission(permission: RequirePermission::CHAT)]
#[RequireReadWriteConversation]
public function deleteMessage(int $messageId): DataResponse {
if ($this->room->getRemoteServer() !== '') {
if ($this->room->isFederatedConversation()) {
/** @var \OCA\Talk\Federation\Proxy\TalkV1\Controller\ChatController $proxy */
$proxy = \OCP\Server::get(\OCA\Talk\Federation\Proxy\TalkV1\Controller\ChatController::class);
return $proxy->deleteMessage(
@ -827,7 +827,7 @@ class ChatController extends AEnvironmentAwareController {
#[RequirePermission(permission: RequirePermission::CHAT)]
#[RequireReadWriteConversation]
public function editMessage(int $messageId, string $message): DataResponse {
if ($this->room->getRemoteServer() !== '') {
if ($this->room->isFederatedConversation()) {
/** @var \OCA\Talk\Federation\Proxy\TalkV1\Controller\ChatController $proxy */
$proxy = \OCP\Server::get(\OCA\Talk\Federation\Proxy\TalkV1\Controller\ChatController::class);
return $proxy->editMessage(
@ -1086,7 +1086,7 @@ class ChatController extends AEnvironmentAwareController {
#[PublicPage]
#[RequireAuthenticatedParticipant]
public function setReadMarker(?int $lastReadMessage = null): DataResponse {
if ($this->room->getRemoteServer() !== '') {
if ($this->room->isFederatedConversation()) {
/** @var \OCA\Talk\Federation\Proxy\TalkV1\Controller\ChatController $proxy */
$proxy = \OCP\Server::get(\OCA\Talk\Federation\Proxy\TalkV1\Controller\ChatController::class);
return $proxy->setReadMarker($this->room, $this->participant, $this->getResponseFormat(), $lastReadMessage);
@ -1121,7 +1121,7 @@ class ChatController extends AEnvironmentAwareController {
#[PublicPage]
#[RequireAuthenticatedParticipant]
public function markUnread(): DataResponse {
if ($this->room->getRemoteServer() !== '') {
if ($this->room->isFederatedConversation()) {
/** @var \OCA\Talk\Federation\Proxy\TalkV1\Controller\ChatController $proxy */
$proxy = \OCP\Server::get(\OCA\Talk\Federation\Proxy\TalkV1\Controller\ChatController::class);
return $proxy->markUnread($this->room, $this->participant, $this->getResponseFormat());
@ -1280,7 +1280,7 @@ class ChatController extends AEnvironmentAwareController {
#[RequirePermission(permission: RequirePermission::CHAT)]
#[RequireReadWriteConversation]
public function mentions(string $search, int $limit = 20, bool $includeStatus = false): DataResponse {
if ($this->room->getRemoteServer()) {
if ($this->room->isFederatedConversation()) {
/** @var \OCA\Talk\Federation\Proxy\TalkV1\Controller\ChatController $proxy */
$proxy = \OCP\Server::get(\OCA\Talk\Federation\Proxy\TalkV1\Controller\ChatController::class);
return $proxy->mentions($this->room, $this->participant, $search, $limit, $includeStatus);

View file

@ -88,7 +88,7 @@ class PollController extends AEnvironmentAwareController {
#[RequirePermission(permission: RequirePermission::CHAT)]
#[RequireReadWriteConversation]
public function createPoll(string $question, array $options, int $resultMode, int $maxVotes): DataResponse {
if ($this->room->getRemoteServer() !== '') {
if ($this->room->isFederatedConversation()) {
/** @var \OCA\Talk\Federation\Proxy\TalkV1\Controller\PollController $proxy */
$proxy = \OCP\Server::get(\OCA\Talk\Federation\Proxy\TalkV1\Controller\PollController::class);
return $proxy->createPoll($this->room, $this->participant, $question, $options, $resultMode, $maxVotes);
@ -153,7 +153,7 @@ class PollController extends AEnvironmentAwareController {
#[RequireModeratorOrNoLobby]
#[RequireParticipant]
public function showPoll(int $pollId): DataResponse {
if ($this->room->getRemoteServer() !== '') {
if ($this->room->isFederatedConversation()) {
/** @var \OCA\Talk\Federation\Proxy\TalkV1\Controller\PollController $proxy */
$proxy = \OCP\Server::get(\OCA\Talk\Federation\Proxy\TalkV1\Controller\PollController::class);
return $proxy->showPoll($this->room, $this->participant, $pollId);
@ -191,7 +191,7 @@ class PollController extends AEnvironmentAwareController {
#[RequireModeratorOrNoLobby]
#[RequireParticipant]
public function votePoll(int $pollId, array $optionIds = []): DataResponse {
if ($this->room->getRemoteServer() !== '') {
if ($this->room->isFederatedConversation()) {
/** @var \OCA\Talk\Federation\Proxy\TalkV1\Controller\PollController $proxy */
$proxy = \OCP\Server::get(\OCA\Talk\Federation\Proxy\TalkV1\Controller\PollController::class);
return $proxy->votePoll($this->room, $this->participant, $pollId, $optionIds);
@ -252,7 +252,7 @@ class PollController extends AEnvironmentAwareController {
#[RequireModeratorOrNoLobby]
#[RequireParticipant]
public function closePoll(int $pollId): DataResponse {
if ($this->room->getRemoteServer() !== '') {
if ($this->room->isFederatedConversation()) {
/** @var \OCA\Talk\Federation\Proxy\TalkV1\Controller\PollController $proxy */
$proxy = \OCP\Server::get(\OCA\Talk\Federation\Proxy\TalkV1\Controller\PollController::class);
return $proxy->closePoll($this->room, $this->participant, $pollId);

View file

@ -847,7 +847,7 @@ class RoomController extends AEnvironmentAwareController {
#[RequireModeratorOrNoLobby]
#[RequireParticipant]
public function getParticipants(bool $includeStatus = false): DataResponse {
if ($this->room->getRemoteServer()) {
if ($this->room->isFederatedConversation()) {
/** @var \OCA\Talk\Federation\Proxy\TalkV1\Controller\RoomController $proxy */
$proxy = \OCP\Server::get(\OCA\Talk\Federation\Proxy\TalkV1\Controller\RoomController::class);
return $proxy->getParticipants($this->room, $this->participant);
@ -1268,7 +1268,7 @@ class RoomController extends AEnvironmentAwareController {
* @return DataResponse<Http::STATUS_OK|Http::STATUS_BAD_REQUEST|Http::STATUS_NOT_FOUND, array<empty>, array{}>
*/
protected function removeSelfFromRoomLogic(Room $room, Participant $participant): DataResponse {
if ($room->getRemoteServer() !== '') {
if ($room->isFederatedConversation()) {
$this->federationManager->rejectByRemoveSelf($room, $this->userId);
}
@ -1538,7 +1538,7 @@ class RoomController extends AEnvironmentAwareController {
}
$headers = [];
if ($room->getRemoteServer() !== '') {
if ($room->isFederatedConversation()) {
$participant = $this->participantService->getParticipant($room, $this->userId);
/** @var \OCA\Talk\Federation\Proxy\TalkV1\Controller\RoomController $proxy */
@ -2248,7 +2248,7 @@ class RoomController extends AEnvironmentAwareController {
#[RequireParticipant]
public function getCapabilities(): DataResponse {
$headers = [];
if ($this->room->getRemoteServer()) {
if ($this->room->isFederatedConversation()) {
/** @var \OCA\Talk\Federation\Proxy\TalkV1\Controller\RoomController $proxy */
$proxy = \OCP\Server::get(\OCA\Talk\Federation\Proxy\TalkV1\Controller\RoomController::class);
$response = $proxy->getCapabilities($this->room, $this->participant);

View file

@ -113,7 +113,7 @@ class Operation implements IOperation {
continue;
}
if ($room->getRemoteServer() !== '') {
if ($room->isFederatedConversation()) {
// Ignore conversation because it is a proxy conversation
continue;
}
@ -202,7 +202,7 @@ class Operation implements IOperation {
throw new UnexpectedValueException('Room not found', $e->getCode(), $e);
}
if ($room->getRemoteServer() !== '') {
if ($room->isFederatedConversation()) {
throw new UnexpectedValueException('Room is a proxy conversation');
}

View file

@ -279,7 +279,7 @@ class InjectionMiddleware extends Middleware {
*/
protected function checkFederationSupport(AEnvironmentAwareController $controller): void {
$room = $controller->getRoom();
if ($room instanceof Room && $room->getRemoteServer() !== '') {
if ($room instanceof Room && $room->isFederatedConversation()) {
throw new FederationUnsupportedFeatureException();
}
}

View file

@ -356,7 +356,7 @@ class Room {
}
public function getLastMessage(): ?IComment {
if ($this->lastMessageId && $this->lastMessage === null && $this->getRemoteServer() === '') {
if ($this->lastMessageId && $this->lastMessage === null && !$this->isFederatedConversation()) {
$this->lastMessage = $this->manager->loadLastCommentInfo($this->lastMessageId);
if ($this->lastMessage === null) {
$this->lastMessageId = 0;

View file

@ -96,7 +96,7 @@ class CurrentMessageSearch extends MessageSearch {
return SearchResult::complete($title, []);
}
if ($room->getRemoteServer() !== '') {
if ($room->isFederatedConversation()) {
return SearchResult::complete($title, []);
}

View file

@ -170,7 +170,7 @@ class MessageSearch implements IProvider, IFilteringProvider {
}
}
if ($room->getRemoteServer() !== '') {
if ($room->isFederatedConversation()) {
continue;
}

View file

@ -309,7 +309,7 @@ class AvatarService {
if ($room->getObjectType() === Room::OBJECT_TYPE_PHONE) {
return __DIR__ . '/../../img/icon-conversation-phone-' . $colorTone . '.svg';
}
if ($room->getRemoteServer() !== '') {
if ($room->isFederatedConversation()) {
return __DIR__ . '/../../img/icon-conversation-federation-' . $colorTone . '.svg';
}
if ($room->getType() === Room::TYPE_PUBLIC) {

View file

@ -344,7 +344,7 @@ class RoomFormatter {
$roomData['lastReadMessage'] = $attendee->getLastReadMessage();
}
if ($room->getRemoteServer() && $room->getRemoteToken()) {
if ($room->isFederatedConversation()) {
$roomData['remoteServer'] = $room->getRemoteServer();
$roomData['remoteToken'] = $room->getRemoteToken();
}
@ -379,14 +379,14 @@ class RoomFormatter {
$roomData['lastMessage'] = [];
$lastMessage = $room->getLastMessage();
if ($room->getRemoteServer() === '' && $lastMessage instanceof IComment) {
if (!$room->isFederatedConversation() && $lastMessage instanceof IComment) {
$roomData['lastMessage'] = $this->formatLastMessage(
$responseFormat,
$room,
$currentParticipant,
$lastMessage,
);
} elseif ($room->getRemoteServer() !== '') {
} elseif ($room->isFederatedConversation()) {
$roomData['lastCommonReadMessage'] = 0;
try {
$cachedMessage = $this->pcmService->findByRemote(
@ -399,7 +399,7 @@ class RoomFormatter {
}
}
if ($room->getRemoteServer() !== '') {
if ($room->isFederatedConversation()) {
$roomData['attendeeId'] = (int) $attendee->getRemoteId();
$roomData['canLeaveConversation'] = true;
}

View file

@ -121,7 +121,7 @@ class RoomShareProvider implements IShareProvider {
throw new GenericShareException('Room not found', $this->l->t('Conversation not found'), 404);
}
if ($room->getRemoteServer() !== '') {
if ($room->isFederatedConversation()) {
throw new GenericShareException('Room not found', $this->l->t('Conversation not found'), 404);
}

View file

@ -139,10 +139,8 @@ class RemoveEmptyRoomsTest extends TestCase {
->willReturn(Room::TYPE_GROUP);
$room->method('getObjectType')
->willReturn($objectType);
$room->method('getRemoteServer')
->willReturn($inviteCount ? 'https://remote.example.tld' : '');
$room->method('getRemoteToken')
->willReturn($inviteCount ? 'remote' : '');
$room->method('isFederatedConversation')
->willReturn($inviteCount > 0);
$this->federationManager->method('getNumberOfInvitations')
->with($room)