UPSTREAM BASELINE: nextcloud/spreed v22.0.12 (без изменений)
Type checking / changes (push) Has been cancelled
Type checking / test (push) Has been cancelled
Type checking / typescript-summary (push) Has been cancelled
Node tests / changes (push) Has been cancelled
Node tests / test (push) Has been cancelled
Node tests / test-summary (push) Has been cancelled
Type checking / changes (push) Has been cancelled
Type checking / test (push) Has been cancelled
Type checking / typescript-summary (push) Has been cancelled
Node tests / changes (push) Has been cancelled
Node tests / test (push) Has been cancelled
Node tests / test-summary (push) Has been cancelled
Источник: https://github.com/nextcloud/spreed/archive/refs/tags/v22.0.12.tar.gz С этого коммита ветка официального Nextcloud Talk отрезана (решение владельца 2026-07-06). Все дальнейшие изменения — только наши; версии релизов: 22.0.12-f7.N.
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
namespace OCA\Talk\Search;
|
||||
|
||||
use OCA\Talk\Exceptions\ParticipantNotFoundException;
|
||||
use OCA\Talk\Exceptions\RoomNotFoundException;
|
||||
use OCP\IUser;
|
||||
use OCP\Search\ISearchQuery;
|
||||
use OCP\Search\SearchResult;
|
||||
|
||||
class CurrentMessageSearch extends MessageSearch {
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
#[\Override]
|
||||
public function getId(): string {
|
||||
return 'talk-message-current';
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
#[\Override]
|
||||
public function getName(): string {
|
||||
return $this->l->t('Messages in current conversation');
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
#[\Override]
|
||||
public function getOrder(string $route, array $routeParameters): ?int {
|
||||
$currentUser = $this->userSession->getUser();
|
||||
if ($currentUser && $this->talkConfig->isDisabledForUser($currentUser)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if ($route === 'spreed.Page.showCall') {
|
||||
// In conversation, prefer this search results
|
||||
return -3;
|
||||
}
|
||||
|
||||
// We are not returning something anyway.
|
||||
return null;
|
||||
}
|
||||
|
||||
#[\Override]
|
||||
protected function getSublineTemplate(): string {
|
||||
return $this->l->t('{user}');
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
#[\Override]
|
||||
public function search(IUser $user, ISearchQuery $query): SearchResult {
|
||||
$title = $this->l->t('Messages');
|
||||
$currentToken = $this->getCurrentConversationToken($query);
|
||||
if ($currentToken === '') {
|
||||
return SearchResult::complete($title, []);
|
||||
}
|
||||
|
||||
$filter = $query->getFilter(self::CONVERSATION_FILTER);
|
||||
if ($filter && $filter->get() !== $currentToken) {
|
||||
return SearchResult::complete($title, []);
|
||||
}
|
||||
|
||||
try {
|
||||
$room = $this->roomManager->getRoomForUserByToken(
|
||||
$currentToken,
|
||||
$user->getUID()
|
||||
);
|
||||
} catch (RoomNotFoundException) {
|
||||
return SearchResult::complete($title, []);
|
||||
}
|
||||
|
||||
try {
|
||||
$this->participantService->getParticipant($room, $user->getUID(), false);
|
||||
} catch (ParticipantNotFoundException) {
|
||||
return SearchResult::complete($title, []);
|
||||
}
|
||||
|
||||
if ($room->isFederatedConversation()) {
|
||||
return SearchResult::complete($title, []);
|
||||
}
|
||||
|
||||
return $this->performSearch($user, $query, $this->l->t('Messages'), [$room], true);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user