fix(comments): Emit CommentsEntityEvent as typed event

Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
Joas Schilling 2023-07-11 11:06:29 +02:00
parent 705ccd50c5
commit c3bc575d99
No known key found for this signature in database
GPG key ID: 74434EFE0D2E2205
5 changed files with 17 additions and 22 deletions

View file

@ -66,7 +66,7 @@ class Application extends App implements IBootstrap {
LoadSidebarScripts::class
);
$context->registerEventListener(
CommentsEntityEvent::EVENT_ENTITY,
CommentsEntityEvent::class,
CommentsEntityEventListener::class
);
$context->registerSearchProvider(CommentsSearchProvider::class);

View file

@ -26,6 +26,7 @@ namespace OCA\DAV\Comments;
use OCP\Comments\CommentsEntityEvent;
use OCP\Comments\ICommentsManager;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IUserManager;
use OCP\IUserSession;
use Psr\Log\LoggerInterface;
@ -33,7 +34,6 @@ use Sabre\DAV\Exception\Forbidden;
use Sabre\DAV\Exception\NotAuthenticated;
use Sabre\DAV\Exception\NotFound;
use Sabre\DAV\ICollection;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class RootCollection implements ICollection {
/** @var EntityTypeCollection[]|null */
@ -43,13 +43,13 @@ class RootCollection implements ICollection {
protected LoggerInterface $logger;
protected IUserManager $userManager;
protected IUserSession $userSession;
protected EventDispatcherInterface $dispatcher;
protected IEventDispatcher $dispatcher;
public function __construct(
ICommentsManager $commentsManager,
IUserManager $userManager,
IUserSession $userSession,
EventDispatcherInterface $dispatcher,
IEventDispatcher $dispatcher,
LoggerInterface $logger) {
$this->commentsManager = $commentsManager;
$this->logger = $logger;
@ -74,7 +74,8 @@ class RootCollection implements ICollection {
throw new NotAuthenticated();
}
$event = new CommentsEntityEvent(CommentsEntityEvent::EVENT_ENTITY);
$event = new CommentsEntityEvent();
$this->dispatcher->dispatchTyped($event);
$this->dispatcher->dispatch(CommentsEntityEvent::EVENT_ENTITY, $event);
$this->entityTypeCollections = [];

View file

@ -139,7 +139,7 @@ class RootCollection extends SimpleCollection {
\OC::$server->getCommentsManager(),
$userManager,
\OC::$server->getUserSession(),
\OC::$server->getEventDispatcher(),
$dispatcher,
$logger
);

View file

@ -26,15 +26,14 @@
namespace OCA\DAV\Tests\unit\Comments;
use OC\EventDispatcher\EventDispatcher;
use OC\EventDispatcher\SymfonyAdapter;
use OCA\DAV\Comments\EntityTypeCollection as EntityTypeCollectionImplementation;
use OCP\Comments\CommentsEntityEvent;
use OCP\Comments\ICommentsManager;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IUser;
use OCP\IUserManager;
use OCP\IUserSession;
use Psr\Log\LoggerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class RootCollectionTest extends \Test\TestCase {
@ -48,7 +47,7 @@ class RootCollectionTest extends \Test\TestCase {
protected $collection;
/** @var \OCP\IUserSession|\PHPUnit\Framework\MockObject\MockObject */
protected $userSession;
/** @var EventDispatcherInterface */
/** @var IEventDispatcher */
protected $dispatcher;
/** @var \OCP\IUser|\PHPUnit\Framework\MockObject\MockObject */
protected $user;
@ -72,12 +71,9 @@ class RootCollectionTest extends \Test\TestCase {
$this->logger = $this->getMockBuilder(LoggerInterface::class)
->disableOriginalConstructor()
->getMock();
$this->dispatcher = new SymfonyAdapter(
new EventDispatcher(
new \Symfony\Component\EventDispatcher\EventDispatcher(),
\OC::$server,
$this->logger
),
$this->dispatcher = new EventDispatcher(
new \Symfony\Component\EventDispatcher\EventDispatcher(),
\OC::$server,
$this->logger
);
@ -99,7 +95,7 @@ class RootCollectionTest extends \Test\TestCase {
->method('getUser')
->willReturn($this->user);
$this->dispatcher->addListener(CommentsEntityEvent::EVENT_ENTITY, function (CommentsEntityEvent $event): void {
$this->dispatcher->addListener(CommentsEntityEvent::class, function (CommentsEntityEvent $event): void {
$event->addEntityCollection('files', function () {
return true;
});

View file

@ -29,26 +29,24 @@ use OCP\EventDispatcher\Event;
* Class CommentsEntityEvent
*
* @since 9.1.0
* @since 28.0.0 Dispatched as a typed event
*/
class CommentsEntityEvent extends Event {
/**
* @deprecated 22.0.0
* @deprecated 22.0.0 - Listen to the typed event instead.
*/
public const EVENT_ENTITY = 'OCP\Comments\ICommentsManager::registerEntity';
/** @var string */
protected $event;
/** @var \Closure[] */
protected $collections;
/**
* DispatcherEvent constructor.
*
* @param string $event
* @since 9.1.0
*/
public function __construct($event) {
$this->event = $event;
public function __construct() {
parent::__construct();
$this->collections = [];
}