diff options
author | Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com> | 2023-11-21 17:24:36 +0100 |
---|---|---|
committer | Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com> | 2023-11-22 08:47:53 +0100 |
commit | 75e5854458d60e220f7989dc8290f9c570645dd2 (patch) | |
tree | a92484deab1a571d6c1f90b6dbce086240f4c280 /lib | |
parent | e1d3fb53bc8b2c378fc1cc020af802910e6d6f78 (diff) | |
download | nextcloud-server-75e5854458d60e220f7989dc8290f9c570645dd2.tar.gz nextcloud-server-75e5854458d60e220f7989dc8290f9c570645dd2.zip |
feat(search): hide search provider
Some search providers can be hidden if they send `null` in `getOrder`
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/Search/SearchComposer.php | 7 | ||||
-rw-r--r-- | lib/public/Search/IProvider.php | 6 |
2 files changed, 10 insertions, 3 deletions
diff --git a/lib/private/Search/SearchComposer.php b/lib/private/Search/SearchComposer.php index b20d47aa94e..22da362bf40 100644 --- a/lib/private/Search/SearchComposer.php +++ b/lib/private/Search/SearchComposer.php @@ -184,6 +184,10 @@ class SearchComposer { function (array $providerData) use ($route, $routeParameters) { $appId = $providerData['appId']; $provider = $providerData['provider']; + $order = $provider->getOrder($route, $routeParameters); + if ($order === null) { + return; + } $triggers = [$provider->getId()]; if ($provider instanceof IFilteringProvider) { $triggers += $provider->getAlternateIds(); @@ -197,7 +201,7 @@ class SearchComposer { 'appId' => $appId, 'name' => $provider->getName(), 'icon' => $this->fetchIcon($appId, $provider->getId()), - 'order' => $provider->getOrder($route, $routeParameters), + 'order' => $order, 'triggers' => $triggers, 'filters' => $this->getFiltersType($filters, $provider->getId()), 'inAppSearch' => $provider instanceof IInAppSearch, @@ -205,6 +209,7 @@ class SearchComposer { }, $this->providers, ); + $providers = array_filter($providers); // Sort providers by order and strip associative keys usort($providers, function ($provider1, $provider2) { diff --git a/lib/public/Search/IProvider.php b/lib/public/Search/IProvider.php index 61655c47367..95d7a1b163a 100644 --- a/lib/public/Search/IProvider.php +++ b/lib/public/Search/IProvider.php @@ -68,15 +68,17 @@ interface IProvider { /** * Get the search provider order * The lower the int, the higher it will be sorted (0 will be before 10) + * If null, the search provider will be hidden in the UI and the API not called * * @param string $route the route the user is currently at, e.g. files.view.index * @param array $routeParameters the parameters of the route the user is currently at, e.g. [fileId = 982, dir = "/"] * - * @return int + * @return int|null * * @since 20.0.0 + * @since 28.0.0 Can return null */ - public function getOrder(string $route, array $routeParameters): int; + public function getOrder(string $route, array $routeParameters): ?int; /** * Find matching search entries in an app |