feat(events): Add typed event for filtering autocompletion sugges…tags/v28.0.0beta1
@@ -35,6 +35,7 @@ use OCP\AppFramework\Http; | |||
use OCP\AppFramework\Http\DataResponse; | |||
use OCP\AppFramework\OCSController; | |||
use OCP\Collaboration\AutoComplete\AutoCompleteEvent; | |||
use OCP\Collaboration\AutoComplete\AutoCompleteFilterEvent; | |||
use OCP\Collaboration\AutoComplete\IManager; | |||
use OCP\Collaboration\Collaborators\ISearch; | |||
use OCP\EventDispatcher\IEventDispatcher; | |||
@@ -88,6 +89,18 @@ class AutoCompleteController extends OCSController { | |||
$this->dispatcher->dispatch(IManager::class . '::filterResults', $event); | |||
$results = $event->getResults(); | |||
$event = new AutoCompleteFilterEvent( | |||
$results, | |||
$search, | |||
$itemType, | |||
$itemId, | |||
$sorter, | |||
$shareTypes, | |||
$limit, | |||
); | |||
$this->dispatcher->dispatchTyped($event); | |||
$results = $event->getResults(); | |||
$exactMatches = $results['exact']; | |||
unset($results['exact']); | |||
$results = array_merge_recursive($exactMatches, $results); |
@@ -169,6 +169,7 @@ return array( | |||
'OCP\\Capabilities\\IInitialStateExcludedCapability' => $baseDir . '/lib/public/Capabilities/IInitialStateExcludedCapability.php', | |||
'OCP\\Capabilities\\IPublicCapability' => $baseDir . '/lib/public/Capabilities/IPublicCapability.php', | |||
'OCP\\Collaboration\\AutoComplete\\AutoCompleteEvent' => $baseDir . '/lib/public/Collaboration/AutoComplete/AutoCompleteEvent.php', | |||
'OCP\\Collaboration\\AutoComplete\\AutoCompleteFilterEvent' => $baseDir . '/lib/public/Collaboration/AutoComplete/AutoCompleteFilterEvent.php', | |||
'OCP\\Collaboration\\AutoComplete\\IManager' => $baseDir . '/lib/public/Collaboration/AutoComplete/IManager.php', | |||
'OCP\\Collaboration\\AutoComplete\\ISorter' => $baseDir . '/lib/public/Collaboration/AutoComplete/ISorter.php', | |||
'OCP\\Collaboration\\Collaborators\\ISearch' => $baseDir . '/lib/public/Collaboration/Collaborators/ISearch.php', |
@@ -202,6 +202,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2 | |||
'OCP\\Capabilities\\IInitialStateExcludedCapability' => __DIR__ . '/../../..' . '/lib/public/Capabilities/IInitialStateExcludedCapability.php', | |||
'OCP\\Capabilities\\IPublicCapability' => __DIR__ . '/../../..' . '/lib/public/Capabilities/IPublicCapability.php', | |||
'OCP\\Collaboration\\AutoComplete\\AutoCompleteEvent' => __DIR__ . '/../../..' . '/lib/public/Collaboration/AutoComplete/AutoCompleteEvent.php', | |||
'OCP\\Collaboration\\AutoComplete\\AutoCompleteFilterEvent' => __DIR__ . '/../../..' . '/lib/public/Collaboration/AutoComplete/AutoCompleteFilterEvent.php', | |||
'OCP\\Collaboration\\AutoComplete\\IManager' => __DIR__ . '/../../..' . '/lib/public/Collaboration/AutoComplete/IManager.php', | |||
'OCP\\Collaboration\\AutoComplete\\ISorter' => __DIR__ . '/../../..' . '/lib/public/Collaboration/AutoComplete/ISorter.php', | |||
'OCP\\Collaboration\\Collaborators\\ISearch' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Collaborators/ISearch.php', |
@@ -29,6 +29,7 @@ use OCP\EventDispatcher\GenericEvent; | |||
/** | |||
* @since 16.0.0 | |||
* @deprecated Use {@see AutoCompleteFilterEvent} instead | |||
*/ | |||
class AutoCompleteEvent extends GenericEvent { | |||
/** |
@@ -0,0 +1,107 @@ | |||
<?php | |||
declare(strict_types=1); | |||
/** | |||
* @copyright Copyright (c) 2023 Joas Schilling <coding@schilljs.com> | |||
* | |||
* @author Joas Schilling <coding@schilljs.com> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU Affero General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Affero General Public License | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
namespace OCP\Collaboration\AutoComplete; | |||
use OCP\EventDispatcher\Event; | |||
/** | |||
* @since 28.0.0 | |||
*/ | |||
class AutoCompleteFilterEvent extends Event { | |||
/** | |||
* @since 28.0.0 | |||
*/ | |||
public function __construct( | |||
protected array $results, | |||
protected string $search, | |||
protected ?string $itemType, | |||
protected ?string $itemId, | |||
protected ?string $sorter, | |||
protected array $shareTypes, | |||
protected int $limit, | |||
) { | |||
parent::__construct(); | |||
} | |||
/** | |||
* @since 28.0.0 | |||
*/ | |||
public function getResults(): array { | |||
return $this->results; | |||
} | |||
/** | |||
* @param array $results | |||
* @since 28.0.0 | |||
*/ | |||
public function setResults(array $results): void { | |||
$this->results = $results; | |||
} | |||
/** | |||
* @since 28.0.0 | |||
*/ | |||
public function getSearchTerm(): string { | |||
return $this->search; | |||
} | |||
/** | |||
* @return int[] List of `\OCP\Share\IShare::TYPE_*` constants | |||
* @since 28.0.0 | |||
*/ | |||
public function getShareTypes(): array { | |||
return $this->shareTypes; | |||
} | |||
/** | |||
* @since 28.0.0 | |||
*/ | |||
public function getItemType(): ?string { | |||
return $this->itemType; | |||
} | |||
/** | |||
* @since 28.0.0 | |||
*/ | |||
public function getItemId(): ?string { | |||
return $this->itemId; | |||
} | |||
/** | |||
* @return ?string List of desired sort identifiers, top priority first. When multiple are given they are joined with a pipe: `commenters|share-recipients` | |||
* @since 28.0.0 | |||
*/ | |||
public function getSorter(): ?string { | |||
return $this->sorter; | |||
} | |||
/** | |||
* @since 28.0.0 | |||
*/ | |||
public function getLimit(): int { | |||
return $this->limit; | |||
} | |||
} |