Merge pull request #23742 from nextcloud/enhancement/eventdispatcher-typed-listener-callable
Type the event dispatcher listener callables with Psalm
This commit is contained in:
commit
1654826e83
|
@ -59,6 +59,7 @@ use OCP\IServerContainer;
|
|||
use OCP\Share\Events\ShareCreatedEvent;
|
||||
use OCP\Util;
|
||||
use Psr\Container\ContainerInterface;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Component\EventDispatcher\GenericEvent;
|
||||
|
||||
class Application extends App {
|
||||
|
@ -74,6 +75,7 @@ class Application extends App {
|
|||
|
||||
/** @var IEventDispatcher $dispatcher */
|
||||
$dispatcher = $container->query(IEventDispatcher::class);
|
||||
$oldDispatcher = $container->getServer()->getEventDispatcher();
|
||||
$mountProviderCollection = $server->getMountProviderCollection();
|
||||
$notifications = $server->getNotificationManager();
|
||||
|
||||
|
@ -124,7 +126,7 @@ class Application extends App {
|
|||
$notifications->registerNotifierService(Notifier::class);
|
||||
|
||||
$this->registerMountProviders($mountProviderCollection);
|
||||
$this->registerEventsScripts($dispatcher);
|
||||
$this->registerEventsScripts($dispatcher, $oldDispatcher);
|
||||
$this->setupSharingMenus();
|
||||
|
||||
/**
|
||||
|
@ -138,7 +140,7 @@ class Application extends App {
|
|||
$mountProviderCollection->registerProvider($this->getContainer()->query('ExternalMountProvider'));
|
||||
}
|
||||
|
||||
protected function registerEventsScripts(IEventDispatcher $dispatcher) {
|
||||
protected function registerEventsScripts(IEventDispatcher $dispatcher, EventDispatcherInterface $oldDispatcher) {
|
||||
// sidebar and files scripts
|
||||
$dispatcher->addServiceListener(LoadAdditionalScriptsEvent::class, LoadAdditionalListener::class);
|
||||
$dispatcher->addServiceListener(BeforeTemplateRenderedEvent::class, LegacyBeforeTemplateRenderedListener::class);
|
||||
|
@ -151,12 +153,12 @@ class Application extends App {
|
|||
$dispatcher->addServiceListener(UserAddedEvent::class, UserAddedToGroupListener::class);
|
||||
|
||||
// notifications api to accept incoming user shares
|
||||
$dispatcher->addListener('OCP\Share::postShare', function (GenericEvent $event) {
|
||||
$oldDispatcher->addListener('OCP\Share::postShare', function (GenericEvent $event) {
|
||||
/** @var Listener $listener */
|
||||
$listener = $this->getContainer()->query(Listener::class);
|
||||
$listener->shareNotification($event);
|
||||
});
|
||||
$dispatcher->addListener(IGroup::class . '::postAddUser', function (GenericEvent $event) {
|
||||
$oldDispatcher->addListener(IGroup::class . '::postAddUser', function (GenericEvent $event) {
|
||||
/** @var Listener $listener */
|
||||
$listener = $this->getContainer()->query(Listener::class);
|
||||
$listener->userAddedToGroup($event);
|
||||
|
|
|
@ -35,9 +35,9 @@ use OCP\AppFramework\App;
|
|||
use OCP\AppFramework\Bootstrap\IBootContext;
|
||||
use OCP\AppFramework\Bootstrap\IBootstrap;
|
||||
use OCP\AppFramework\Bootstrap\IRegistrationContext;
|
||||
use OCP\EventDispatcher\IEventDispatcher;
|
||||
use OCP\AppFramework\IAppContainer;
|
||||
use OCP\IUser;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcher;
|
||||
use Symfony\Component\EventDispatcher\GenericEvent;
|
||||
|
||||
class Application extends App implements IBootstrap {
|
||||
|
@ -57,7 +57,7 @@ class Application extends App implements IBootstrap {
|
|||
/**
|
||||
* @todo move the OCP events and then move the registration to `register`
|
||||
*/
|
||||
private function registerEventListeners(IEventDispatcher $dispatcher,
|
||||
private function registerEventListeners(EventDispatcher $dispatcher,
|
||||
IAppContainer $appContainer): void {
|
||||
$dispatcher->addListener('OC\AccountManager::userUpdated', function (GenericEvent $event) use ($appContainer) {
|
||||
/** @var IUser $user */
|
||||
|
|
|
@ -73,7 +73,9 @@ class Application extends App {
|
|||
$notificationManager->registerNotifierService(RemoveLinkSharesNotifier::class);
|
||||
$notificationManager->registerNotifierService(AuthenticationNotifier::class);
|
||||
|
||||
$eventDispatcher->addListener(IDBConnection::CHECK_MISSING_INDEXES_EVENT,
|
||||
$oldEventDispatcher = $server->getEventDispatcher();
|
||||
|
||||
$oldEventDispatcher->addListener(IDBConnection::CHECK_MISSING_INDEXES_EVENT,
|
||||
function (GenericEvent $event) use ($container) {
|
||||
/** @var MissingIndexInformation $subject */
|
||||
$subject = $event->getSubject();
|
||||
|
@ -179,7 +181,7 @@ class Application extends App {
|
|||
}
|
||||
);
|
||||
|
||||
$eventDispatcher->addListener(IDBConnection::CHECK_MISSING_COLUMNS_EVENT,
|
||||
$oldEventDispatcher->addListener(IDBConnection::CHECK_MISSING_COLUMNS_EVENT,
|
||||
function (GenericEvent $event) use ($container) {
|
||||
/** @var MissingColumnInformation $subject */
|
||||
$subject = $event->getSubject();
|
||||
|
|
|
@ -39,6 +39,7 @@ interface IEventDispatcher {
|
|||
* @param string $eventName preferably the fully-qualified class name of the Event sub class
|
||||
* @psalm-param string|class-string<T> $eventName preferably the fully-qualified class name of the Event sub class
|
||||
* @param callable $listener the object that is invoked when a matching event is dispatched
|
||||
* @psalm-param callable(T):void $listener
|
||||
* @param int $priority
|
||||
*
|
||||
* @since 17.0.0
|
||||
|
@ -50,6 +51,7 @@ interface IEventDispatcher {
|
|||
* @param string $eventName preferably the fully-qualified class name of the Event sub class
|
||||
* @psalm-param string|class-string<T> $eventName preferably the fully-qualified class name of the Event sub class
|
||||
* @param callable $listener the object that is invoked when a matching event is dispatched
|
||||
* @psalm-param callable(T):void $listener
|
||||
*
|
||||
* @since 19.0.0
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue