diff --git a/lib/Search/ConversationSearch.php b/lib/Search/ConversationSearch.php index 0e3dbc688ad2..f55b14d877c3 100644 --- a/lib/Search/ConversationSearch.php +++ b/lib/Search/ConversationSearch.php @@ -26,12 +26,14 @@ namespace OCA\Talk\Search; use OCA\Talk\AppInfo\Application; +use OCA\Talk\Config; use OCA\Talk\Manager; use OCA\Talk\Room; use OCA\Talk\Service\AvatarService; use OCP\IL10N; use OCP\IURLGenerator; use OCP\IUser; +use OCP\IUserSession; use OCP\Search\IProvider; use OCP\Search\ISearchQuery; use OCP\Search\SearchResult; @@ -44,6 +46,8 @@ public function __construct( protected Manager $manager, protected IURLGenerator $url, protected IL10N $l, + protected Config $talkConfig, + protected IUserSession $userSession, ) { } @@ -64,7 +68,12 @@ public function getName(): string { /** * @inheritDoc */ - public function getOrder(string $route, array $routeParameters): int { + public function getOrder(string $route, array $routeParameters): ?int { + $currentUser = $this->userSession->getUser(); + if ($currentUser && $this->talkConfig->isDisabledForUser($currentUser)) { + return null; + } + if (strpos($route, Application::APP_ID . '.') === 0) { // Active app, prefer Talk results return -1; diff --git a/lib/Search/CurrentMessageSearch.php b/lib/Search/CurrentMessageSearch.php index f5594a25ecf2..81f2295e5de1 100644 --- a/lib/Search/CurrentMessageSearch.php +++ b/lib/Search/CurrentMessageSearch.php @@ -48,6 +48,11 @@ public function getName(): string { * @inheritDoc */ 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; diff --git a/lib/Search/MessageSearch.php b/lib/Search/MessageSearch.php index abfdcddada36..5086e1ce387f 100644 --- a/lib/Search/MessageSearch.php +++ b/lib/Search/MessageSearch.php @@ -26,6 +26,7 @@ use OCA\Talk\AppInfo\Application; use OCA\Talk\Chat\ChatManager; use OCA\Talk\Chat\MessageParser; +use OCA\Talk\Config; use OCA\Talk\Exceptions\ParticipantNotFoundException; use OCA\Talk\Exceptions\UnauthorizedException; use OCA\Talk\Manager as RoomManager; @@ -55,6 +56,8 @@ public function __construct( protected ITimeFactory $timeFactory, protected IURLGenerator $url, protected IL10N $l, + protected Config $talkConfig, + protected IUserSession $userSession, ) { } @@ -76,6 +79,11 @@ public function getName(): string { * @inheritDoc */ public function getOrder(string $route, array $routeParameters): ?int { + $currentUser = $this->userSession->getUser(); + if ($currentUser && $this->talkConfig->isDisabledForUser($currentUser)) { + return null; + } + if (strpos($route, Application::APP_ID . '.') === 0) { // Active app, prefer Talk results return -2;