Skip to content

Commit

Permalink
fix(dispatcher): Migrate to OCP event dispatcher before symfony/event…
Browse files Browse the repository at this point in the history
…-dispatcher upgrade

Signed-off-by: Joas Schilling <coding@schilljs.com>
  • Loading branch information
nickvergessen committed Jun 1, 2023
1 parent 2845a04 commit 4abc53a
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 9 deletions.
8 changes: 4 additions & 4 deletions apps/lookup_server_connector/lib/AppInfo/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@
use OCP\AppFramework\Bootstrap\IBootContext;
use OCP\AppFramework\Bootstrap\IBootstrap;
use OCP\AppFramework\Bootstrap\IRegistrationContext;
use OCP\AppFramework\IAppContainer;
use OCP\IUser;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Psr\Container\ContainerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\GenericEvent;

class Application extends App implements IBootstrap {
Expand All @@ -56,8 +56,8 @@ public function boot(IBootContext $context): void {
/**
* @todo move the OCP events and then move the registration to `register`
*/
private function registerEventListeners(EventDispatcher $dispatcher,
IAppContainer $appContainer): void {
private function registerEventListeners(EventDispatcherInterface $dispatcher,
ContainerInterface $appContainer): void {
$dispatcher->addListener('OC\AccountManager::userUpdated', function (GenericEvent $event) use ($appContainer) {
/** @var IUser $user */
$user = $event->getSubject();
Expand Down
4 changes: 2 additions & 2 deletions apps/systemtags/lib/AppInfo/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@
use OCP\AppFramework\Bootstrap\IBootContext;
use OCP\AppFramework\Bootstrap\IBootstrap;
use OCP\AppFramework\Bootstrap\IRegistrationContext;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\SystemTag\ManagerEvent;
use OCP\SystemTag\MapperEvent;
use Symfony\Component\EventDispatcher\EventDispatcher;

class Application extends App implements IBootstrap {
public const APP_ID = 'systemtags';
Expand All @@ -47,7 +47,7 @@ public function register(IRegistrationContext $context): void {
}

public function boot(IBootContext $context): void {
$context->injectFn(function (EventDispatcher $dispatcher) use ($context) {
$context->injectFn(function (IEventDispatcher $dispatcher) use ($context) {
/*
* @todo move the OCP events and then move the registration to `register`
*/
Expand Down
3 changes: 1 addition & 2 deletions lib/private/EventDispatcher/SymfonyAdapter.php
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,7 @@ public function dispatch($eventName, $event = null): object {

// Event with no payload (object) need special handling
if ($newEvent === null) {
$this->eventDispatcher->getSymfonyDispatcher()->dispatch($eventName);
return new Event();
$newEvent = new Event();
}

// Flip the argument order for Symfony to prevent a trigger_error
Expand Down
1 change: 1 addition & 0 deletions tests/lib/EventDispatcher/SymfonyAdapterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ public function testDispatchEventWithoutPayload(): void {
$symfonyDispatcher->expects(self::once())
->method('dispatch')
->with(
$this->anything(),
$eventName
)
->willReturnArgument(0);
Expand Down
8 changes: 7 additions & 1 deletion tests/lib/Share20/LegacyHooksTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,15 @@

namespace Test\Share20;

use OC\EventDispatcher\SymfonyAdapter;
use OC\Share20\LegacyHooks;
use OC\Share20\Manager;
use OCP\Constants;
use OCP\Files\Cache\ICacheEntry;
use OCP\Files\File;
use OCP\IServerContainer;
use OCP\Share\IShare;
use Psr\Log\LoggerInterface;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\EventDispatcher\GenericEvent;
use Test\TestCase;
Expand All @@ -46,7 +49,10 @@ class LegacyHooksTest extends TestCase {
protected function setUp(): void {
parent::setUp();

$this->eventDispatcher = new EventDispatcher();
$symfonyDispatcher = new \Symfony\Component\EventDispatcher\EventDispatcher();
$logger = $this->createMock(LoggerInterface::class);
$eventDispatcher = new \OC\EventDispatcher\EventDispatcher($symfonyDispatcher, \OC::$server->get(IServerContainer::class), $logger);
$this->eventDispatcher = new SymfonyAdapter($eventDispatcher, $logger);
$this->hooks = new LegacyHooks($this->eventDispatcher);
$this->manager = \OC::$server->getShareManager();
}
Expand Down

0 comments on commit 4abc53a

Please sign in to comment.