Skip to content

Commit

Permalink
Merge pull request #39062 from nextcloud/fix/tag-search-short-circuit…
Browse files Browse the repository at this point in the history
…-master

fix(TagSearchProvider): Short circuit if no tag matches the query
  • Loading branch information
blizzz authored Jul 5, 2023
2 parents 75a15dc + 29c0e07 commit fc7944f
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions apps/systemtags/lib/Search/TagSearchProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,11 @@ public function getOrder(string $route, array $routeParameters): int {
* @inheritDoc
*/
public function search(IUser $user, ISearchQuery $query): SearchResult {
$matchingTags = $this->tagManager->getAllTags(true, $query->getTerm());
if (count($matchingTags) === 0) {
return SearchResult::complete($this->l10n->t('Tags'), []);
}

$userFolder = $this->rootFolder->getUserFolder($user->getUID());
$fileQuery = new SearchQuery(
new SearchBinaryOperator(SearchBinaryOperator::OPERATOR_OR, [
Expand All @@ -133,7 +138,6 @@ public function search(IUser $user, ISearchQuery $query): SearchResult {
return $node->getId();
}, $searchResults);
$matchedTags = $this->objectMapper->getTagIdsForObjects($resultIds, 'files');
$relevantTags = $this->tagManager->getTagsByIds(array_unique($this->flattenArray($matchedTags)));

// prepare direct tag results
$tagResults = array_map(function(ISystemTag $tag) {
Expand All @@ -149,9 +153,7 @@ public function search(IUser $user, ISearchQuery $query): SearchResult {
'icon-tag'
);
return $searchResultEntry;
}, array_filter($relevantTags, function($tag) use ($query) {
return $tag->isUserVisible() && strpos($tag->getName(), $query->getTerm()) !== false;
}));
}, $matchingTags);

// prepare files results
return SearchResult::paginated(
Expand Down

0 comments on commit fc7944f

Please sign in to comment.