mirror of
https://github.com/nextcloud/server.git
synced 2026-04-20 22:00:39 -04:00
feat!: Migrate AccountManager event to typed event
Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
parent
9bf812ac6c
commit
68fc9b48c2
7 changed files with 87 additions and 34 deletions
|
|
@ -69,6 +69,7 @@ use OCA\DAV\Events\CardDeletedEvent;
|
|||
use OCA\DAV\Events\CardUpdatedEvent;
|
||||
use OCA\DAV\Events\SubscriptionCreatedEvent;
|
||||
use OCA\DAV\Events\SubscriptionDeletedEvent;
|
||||
use OCP\Accounts\UserUpdatedEvent;
|
||||
use OCP\EventDispatcher\IEventDispatcher;
|
||||
use OCP\Federation\Events\TrustedServerRemovedEvent;
|
||||
use OCA\DAV\HookManager;
|
||||
|
|
@ -224,13 +225,10 @@ class Application extends App implements IBootstrap {
|
|||
}
|
||||
});
|
||||
|
||||
$dispatcher->addListener('OC\AccountManager::userUpdated', function ($event) use ($container) {
|
||||
if ($event instanceof GenericEvent) {
|
||||
$user = $event->getSubject();
|
||||
/** @var SyncService $syncService */
|
||||
$syncService = $container->query(SyncService::class);
|
||||
$syncService->updateUser($user);
|
||||
}
|
||||
$dispatcher->addListener(UserUpdatedEvent::class, function (UserUpdatedEvent $event) use ($container) {
|
||||
/** @var SyncService $syncService */
|
||||
$syncService = \OCP\Server::get(SyncService::class);
|
||||
$syncService->updateUser($event->getUser());
|
||||
});
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ namespace OCA\LookupServerConnector\AppInfo;
|
|||
|
||||
use Closure;
|
||||
use OCA\LookupServerConnector\UpdateLookupServer;
|
||||
use OCP\Accounts\UserUpdatedEvent;
|
||||
use OCP\AppFramework\App;
|
||||
use OCP\AppFramework\Bootstrap\IBootContext;
|
||||
use OCP\AppFramework\Bootstrap\IBootstrap;
|
||||
|
|
@ -58,15 +59,10 @@ class Application extends App implements IBootstrap {
|
|||
*/
|
||||
private function registerEventListeners(IEventDispatcher $dispatcher,
|
||||
ContainerInterface $appContainer): void {
|
||||
$dispatcher->addListener('OC\AccountManager::userUpdated', function ($event) use ($appContainer) {
|
||||
if ($event instanceof GenericEvent) {
|
||||
/** @var IUser $user */
|
||||
$user = $event->getSubject();
|
||||
|
||||
/** @var UpdateLookupServer $updateLookupServer */
|
||||
$updateLookupServer = $appContainer->get(UpdateLookupServer::class);
|
||||
$updateLookupServer->userUpdated($user);
|
||||
}
|
||||
$dispatcher->addListener(UserUpdatedEvent::class, function (UserUpdatedEvent $event) use ($appContainer) {
|
||||
/** @var UpdateLookupServer $updateLookupServer */
|
||||
$updateLookupServer = $appContainer->get(UpdateLookupServer::class);
|
||||
$updateLookupServer->userUpdated($event->getUser());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ return array(
|
|||
'OCP\\Accounts\\IAccountProperty' => $baseDir . '/lib/public/Accounts/IAccountProperty.php',
|
||||
'OCP\\Accounts\\IAccountPropertyCollection' => $baseDir . '/lib/public/Accounts/IAccountPropertyCollection.php',
|
||||
'OCP\\Accounts\\PropertyDoesNotExistException' => $baseDir . '/lib/public/Accounts/PropertyDoesNotExistException.php',
|
||||
'OCP\\Accounts\\UserUpdatedEvent' => $baseDir . '/lib/public/Accounts/UserUpdatedEvent.php',
|
||||
'OCP\\Activity\\ActivitySettings' => $baseDir . '/lib/public/Activity/ActivitySettings.php',
|
||||
'OCP\\Activity\\IConsumer' => $baseDir . '/lib/public/Activity/IConsumer.php',
|
||||
'OCP\\Activity\\IEvent' => $baseDir . '/lib/public/Activity/IEvent.php',
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
|
|||
'OCP\\Accounts\\IAccountProperty' => __DIR__ . '/../../..' . '/lib/public/Accounts/IAccountProperty.php',
|
||||
'OCP\\Accounts\\IAccountPropertyCollection' => __DIR__ . '/../../..' . '/lib/public/Accounts/IAccountPropertyCollection.php',
|
||||
'OCP\\Accounts\\PropertyDoesNotExistException' => __DIR__ . '/../../..' . '/lib/public/Accounts/PropertyDoesNotExistException.php',
|
||||
'OCP\\Accounts\\UserUpdatedEvent' => __DIR__ . '/../../..' . '/lib/public/Accounts/UserUpdatedEvent.php',
|
||||
'OCP\\Activity\\ActivitySettings' => __DIR__ . '/../../..' . '/lib/public/Activity/ActivitySettings.php',
|
||||
'OCP\\Activity\\IConsumer' => __DIR__ . '/../../..' . '/lib/public/Activity/IConsumer.php',
|
||||
'OCP\\Activity\\IEvent' => __DIR__ . '/../../..' . '/lib/public/Activity/IEvent.php',
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ use libphonenumber\NumberParseException;
|
|||
use libphonenumber\PhoneNumberFormat;
|
||||
use libphonenumber\PhoneNumberUtil;
|
||||
use OC\Profile\TProfileHelper;
|
||||
use OCP\Accounts\UserUpdatedEvent;
|
||||
use OCP\Cache\CappedMemoryCache;
|
||||
use OCA\Settings\BackgroundJobs\VerifyUserData;
|
||||
use OCP\Accounts\IAccount;
|
||||
|
|
@ -51,6 +52,7 @@ use OCP\Accounts\PropertyDoesNotExistException;
|
|||
use OCP\BackgroundJob\IJobList;
|
||||
use OCP\DB\QueryBuilder\IQueryBuilder;
|
||||
use OCP\Defaults;
|
||||
use OCP\EventDispatcher\IEventDispatcher;
|
||||
use OCP\IConfig;
|
||||
use OCP\IDBConnection;
|
||||
use OCP\IL10N;
|
||||
|
|
@ -62,8 +64,6 @@ use OCP\Security\ICrypto;
|
|||
use OCP\Security\VerificationToken\IVerificationToken;
|
||||
use OCP\Util;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Component\EventDispatcher\GenericEvent;
|
||||
use function array_flip;
|
||||
use function iterator_to_array;
|
||||
use function json_decode;
|
||||
|
|
@ -109,7 +109,7 @@ class AccountManager implements IAccountManager {
|
|||
public function __construct(
|
||||
private IDBConnection $connection,
|
||||
private IConfig $config,
|
||||
private EventDispatcherInterface $eventDispatcher,
|
||||
private IEventDispatcher $dispatcher,
|
||||
private IJobList $jobList,
|
||||
private LoggerInterface $logger,
|
||||
private IVerificationToken $verificationToken,
|
||||
|
|
@ -255,10 +255,10 @@ class AccountManager implements IAccountManager {
|
|||
}
|
||||
|
||||
if ($updated) {
|
||||
$this->eventDispatcher->dispatch(
|
||||
'OC\AccountManager::userUpdated',
|
||||
new GenericEvent($user, $data)
|
||||
);
|
||||
$this->dispatcher->dispatchTyped(new UserUpdatedEvent(
|
||||
$user,
|
||||
$data,
|
||||
));
|
||||
}
|
||||
|
||||
return $data;
|
||||
|
|
|
|||
58
lib/public/Accounts/UserUpdatedEvent.php
Normal file
58
lib/public/Accounts/UserUpdatedEvent.php
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
<?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\Accounts;
|
||||
|
||||
use OCP\EventDispatcher\Event;
|
||||
use OCP\IUser;
|
||||
|
||||
/**
|
||||
* @since 28.0.0
|
||||
*/
|
||||
class UserUpdatedEvent extends Event {
|
||||
/**
|
||||
* @since 28.0.0
|
||||
*/
|
||||
public function __construct(
|
||||
protected IUser $user,
|
||||
protected array $data,
|
||||
) {
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 28.0.0
|
||||
*/
|
||||
public function getUser(): IUser {
|
||||
return $this->user;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 28.0.0
|
||||
*/
|
||||
public function getData(): array {
|
||||
return $this->data;
|
||||
}
|
||||
}
|
||||
|
|
@ -28,8 +28,10 @@ use OC\Accounts\Account;
|
|||
use OC\Accounts\AccountManager;
|
||||
use OCA\Settings\BackgroundJobs\VerifyUserData;
|
||||
use OCP\Accounts\IAccountManager;
|
||||
use OCP\Accounts\UserUpdatedEvent;
|
||||
use OCP\BackgroundJob\IJobList;
|
||||
use OCP\Defaults;
|
||||
use OCP\EventDispatcher\IEventDispatcher;
|
||||
use OCP\IConfig;
|
||||
use OCP\IDBConnection;
|
||||
use OCP\IURLGenerator;
|
||||
|
|
@ -40,8 +42,6 @@ use OCP\Security\ICrypto;
|
|||
use OCP\Security\VerificationToken\IVerificationToken;
|
||||
use PHPUnit\Framework\MockObject\MockObject;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Component\EventDispatcher\GenericEvent;
|
||||
use Test\TestCase;
|
||||
|
||||
/**
|
||||
|
|
@ -70,7 +70,7 @@ class AccountManagerTest extends TestCase {
|
|||
/** @var IConfig|MockObject */
|
||||
private $config;
|
||||
|
||||
/** @var EventDispatcherInterface|MockObject */
|
||||
/** @var IEventDispatcher|MockObject */
|
||||
private $eventDispatcher;
|
||||
|
||||
/** @var IJobList|MockObject */
|
||||
|
|
@ -86,7 +86,7 @@ class AccountManagerTest extends TestCase {
|
|||
|
||||
protected function setUp(): void {
|
||||
parent::setUp();
|
||||
$this->eventDispatcher = $this->createMock(EventDispatcherInterface::class);
|
||||
$this->eventDispatcher = $this->createMock(IEventDispatcher::class);
|
||||
$this->connection = \OC::$server->get(IDBConnection::class);
|
||||
$this->config = $this->createMock(IConfig::class);
|
||||
$this->jobList = $this->createMock(IJobList::class);
|
||||
|
|
@ -502,15 +502,14 @@ class AccountManagerTest extends TestCase {
|
|||
if (!$insertNew && !$updateExisting) {
|
||||
$accountManager->expects($this->never())->method('updateExistingUser');
|
||||
$accountManager->expects($this->never())->method('insertNewUser');
|
||||
$this->eventDispatcher->expects($this->never())->method('dispatch');
|
||||
$this->eventDispatcher->expects($this->never())->method('dispatchTyped');
|
||||
} else {
|
||||
$this->eventDispatcher->expects($this->once())->method('dispatch')
|
||||
$this->eventDispatcher->expects($this->once())->method('dispatchTyped')
|
||||
->willReturnCallback(
|
||||
function ($eventName, $event) use ($user, $newData) {
|
||||
$this->assertSame('OC\AccountManager::userUpdated', $eventName);
|
||||
$this->assertInstanceOf(GenericEvent::class, $event);
|
||||
$this->assertSame($user, $event->getSubject());
|
||||
$this->assertSame($newData, $event->getArguments());
|
||||
function ($event) use ($user, $newData) {
|
||||
$this->assertInstanceOf(UserUpdatedEvent::class, $event);
|
||||
$this->assertSame($user, $event->getUser());
|
||||
$this->assertSame($newData, $event->getData());
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue