Move to injectFn

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl
2020-09-09 11:15:18 +02:00
parent 39b820b661
commit 69f11b8b46

View File

@@ -23,8 +23,9 @@
namespace OCA\Deck\AppInfo; namespace OCA\Deck\AppInfo;
use Closure;
use Exception; use Exception;
use OC_Util; use OC\EventDispatcher\SymfonyAdapter;
use OCA\Deck\Activity\CommentEventHandler; use OCA\Deck\Activity\CommentEventHandler;
use OCA\Deck\Capabilities; use OCA\Deck\Capabilities;
use OCA\Deck\Collaboration\Resources\ResourceProvider; use OCA\Deck\Collaboration\Resources\ResourceProvider;
@@ -45,19 +46,20 @@ use OCP\AppFramework\App;
use OCP\AppFramework\Bootstrap\IBootContext; use OCP\AppFramework\Bootstrap\IBootContext;
use OCP\AppFramework\Bootstrap\IBootstrap; use OCP\AppFramework\Bootstrap\IBootstrap;
use OCP\AppFramework\Bootstrap\IRegistrationContext; use OCP\AppFramework\Bootstrap\IRegistrationContext;
use OCP\Collaboration\Resources\IManager;
use OCP\Collaboration\Resources\IProviderManager; use OCP\Collaboration\Resources\IProviderManager;
use OCP\Comments\CommentsEntityEvent; use OCP\Comments\CommentsEntityEvent;
use OCP\Comments\ICommentsManager;
use OCP\EventDispatcher\Event; use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventDispatcher; use OCP\EventDispatcher\IEventDispatcher;
use OCP\FullTextSearch\IFullTextSearchManager; use OCP\FullTextSearch\IFullTextSearchManager;
use OCP\IConfig; use OCP\IConfig;
use OCP\IContainer;
use OCP\IDBConnection; use OCP\IDBConnection;
use OCP\IGroup; use OCP\IGroup;
use OCP\IGroupManager;
use OCP\IServerContainer; use OCP\IServerContainer;
use OCP\IUser; use OCP\IUser;
use OCP\IUserManager; use OCP\IUserManager;
use OCP\Notification\IManager as NotificationManager;
use OCP\Util; use OCP\Util;
use Psr\Container\ContainerInterface; use Psr\Container\ContainerInterface;
@@ -82,15 +84,14 @@ class Application20 extends App implements IBootstrap {
} }
public function boot(IBootContext $context): void { public function boot(IBootContext $context): void {
$notificationManager = $context->getServerContainer()->get(\OCP\Notification\IManager::class); Util::addStyle('deck', 'deck');
$notificationManager->registerNotifierService(Notifier::class);
\OCP\Util::addStyle('deck', 'deck');
$this->registerUserGroupHooks(); $context->injectFn(Closure::fromCallable([$this, 'registerUserGroupHooks']));
$context->injectFn(Closure::fromCallable([$this, 'registerCommentsEntity']));
$this->registerCommentsEntity(); $context->injectFn(Closure::fromCallable([$this, 'registerCommentsEventHandler']));
$this->registerFullTextSearch(); $context->injectFn(Closure::fromCallable([$this, 'registerNotifications']));
$this->registerCollaborationResources(); $context->injectFn(Closure::fromCallable([$this, 'registerFullTextSearch']));
$context->injectFn(Closure::fromCallable([$this, 'registerCollaborationResources']));
} }
public function register(IRegistrationContext $context): void { public function register(IRegistrationContext $context): void {
@@ -113,11 +114,13 @@ class Application20 extends App implements IBootstrap {
$context->registerDashboardWidget(DeckWidget::class); $context->registerDashboardWidget(DeckWidget::class);
} }
private function registerUserGroupHooks(): void { public function registerNotifications(NotificationManager $notificationManager): void {
$notificationManager->registerNotifierService(Notifier::class);
}
private function registerUserGroupHooks(IUserManager $userManager, IGroupManager $groupManager): void {
$container = $this->getContainer(); $container = $this->getContainer();
// Delete user/group acl entries when they get deleted // Delete user/group acl entries when they get deleted
/** @var IUserManager $userManager */
$userManager = $this->server->getUserManager();
$userManager->listen('\OC\User', 'postDelete', static function (IUser $user) use ($container) { $userManager->listen('\OC\User', 'postDelete', static function (IUser $user) use ($container) {
// delete existing acl entries for deleted user // delete existing acl entries for deleted user
/** @var AclMapper $aclMapper */ /** @var AclMapper $aclMapper */
@@ -141,8 +144,6 @@ class Application20 extends App implements IBootstrap {
} }
}); });
/** @var IUserManager $userManager */
$groupManager = $this->server->getGroupManager();
$groupManager->listen('\OC\Group', 'postDelete', static function (IGroup $group) use ($container) { $groupManager->listen('\OC\Group', 'postDelete', static function (IGroup $group) use ($container) {
/** @var AclMapper $aclMapper */ /** @var AclMapper $aclMapper */
$aclMapper = $container->query(AclMapper::class); $aclMapper = $container->query(AclMapper::class);
@@ -154,8 +155,8 @@ class Application20 extends App implements IBootstrap {
}); });
} }
public function registerCommentsEntity(): void { public function registerCommentsEntity(SymfonyAdapter $symfonyAdapter): void {
$this->server->getEventDispatcher()->addListener(CommentsEntityEvent::EVENT_ENTITY, function (CommentsEntityEvent $event) { $symfonyAdapter->addListener(CommentsEntityEvent::EVENT_ENTITY, function (CommentsEntityEvent $event) {
$event->addEntityCollection(self::COMMENT_ENTITY_TYPE, function ($name) { $event->addEntityCollection(self::COMMENT_ENTITY_TYPE, function ($name) {
/** @var CardMapper */ /** @var CardMapper */
$cardMapper = $this->getContainer()->query(CardMapper::class); $cardMapper = $this->getContainer()->query(CardMapper::class);
@@ -168,85 +169,64 @@ class Application20 extends App implements IBootstrap {
} }
}); });
}); });
$this->registerCommentsEventHandler();
} }
protected function registerCommentsEventHandler(): void { protected function registerCommentsEventHandler(ICommentsManager $commentsManager): void {
$this->server->getCommentsManager()->registerEventHandler(function () { $commentsManager->registerEventHandler(function () {
return $this->getContainer()->query(CommentEventHandler::class); return $this->getContainer()->query(CommentEventHandler::class);
}); });
} }
protected function registerCollaborationResources(): void { protected function registerCollaborationResources(IProviderManager $resourceManager, SymfonyAdapter $symfonyAdapter): void {
$version = OC_Util::getVersion()[0];
/**
* Register Collaboration ResourceProvider
*
* @Todo: Remove if min-version is 18
*/
if ($version < 18) {
/** @var IManager $resourceManager */
$resourceManager = $this->getContainer()->query(IManager::class);
} else {
/** @var IProviderManager $resourceManager */
$resourceManager = $this->getContainer()->query(IProviderManager::class);
}
$resourceManager->registerResourceProvider(ResourceProvider::class); $resourceManager->registerResourceProvider(ResourceProvider::class);
$resourceManager->registerResourceProvider(ResourceProviderCard::class); $resourceManager->registerResourceProvider(ResourceProviderCard::class);
$this->server->getEventDispatcher()->addListener('\OCP\Collaboration\Resources::loadAdditionalScripts', static function () { $symfonyAdapter->addListener('\OCP\Collaboration\Resources::loadAdditionalScripts', static function () {
Util::addScript('deck', 'collections'); Util::addScript('deck', 'collections');
}); });
} }
public function registerFullTextSearch(): void { public function registerFullTextSearch(IFullTextSearchManager $fullTextSearchManager, IEventDispatcher $eventDispatcher): void {
if (Util::getVersion()[0] < 16) { if (!$fullTextSearchManager->isAvailable()) {
return; return;
} }
$c = $this->getContainer(); // FIXME move to addServiceListener
try { $server = $this->server;
// FIXME we should probably lazy load this
$this->fullTextSearchService = $c->query(FullTextSearchService::class);
$this->fullTextSearchManager = $c->query(IFullTextSearchManager::class);
} catch (Exception $e) {
return;
}
if (!$this->fullTextSearchManager->isAvailable()) {
return;
}
/** @var IEventDispatcher $eventDispatcher */
$eventDispatcher = $this->server->query(IEventDispatcher::class);
$eventDispatcher->addListener( $eventDispatcher->addListener(
'\OCA\Deck\Card::onCreate', function (Event $e) { '\OCA\Deck\Card::onCreate', function (Event $e) use ($server) {
$this->fullTextSearchService->onCardCreated($e); $fullTextSearchService = $server->get(FullTextSearchService::class);
$fullTextSearchService->onCardCreated($e);
} }
); );
$eventDispatcher->addListener( $eventDispatcher->addListener(
'\OCA\Deck\Card::onUpdate', function (Event $e) { '\OCA\Deck\Card::onUpdate', function (Event $e) use ($server) {
$this->fullTextSearchService->onCardUpdated($e); $fullTextSearchService = $server->get(FullTextSearchService::class);
$fullTextSearchService->onCardUpdated($e);
} }
); );
$eventDispatcher->addListener( $eventDispatcher->addListener(
'\OCA\Deck\Card::onDelete', function (Event $e) { '\OCA\Deck\Card::onDelete', function (Event $e) use ($server) {
$this->fullTextSearchService->onCardDeleted($e); $fullTextSearchService = $server->get(FullTextSearchService::class);
$fullTextSearchService->onCardDeleted($e);
} }
); );
$eventDispatcher->addListener( $eventDispatcher->addListener(
'\OCA\Deck\Board::onShareNew', function (Event $e) { '\OCA\Deck\Board::onShareNew', function (Event $e) {
$this->fullTextSearchService->onBoardShares($e); $fullTextSearchService = $server->get(FullTextSearchService::class);
$fullTextSearchService->onBoardShares($e);
} }
); );
$eventDispatcher->addListener( $eventDispatcher->addListener(
'\OCA\Deck\Board::onShareEdit', function (Event $e) { '\OCA\Deck\Board::onShareEdit', function (Event $e) use ($server) {
$this->fullTextSearchService->onBoardShares($e); $fullTextSearchService = $server->get(FullTextSearchService::class);
$fullTextSearchService->onBoardShares($e);
} }
); );
$eventDispatcher->addListener( $eventDispatcher->addListener(
'\OCA\Deck\Board::onShareDelete', function (Event $e) { '\OCA\Deck\Board::onShareDelete', function (Event $e) use ($server) {
$this->fullTextSearchService->onBoardShares($e); $fullTextSearchService = $server->get(FullTextSearchService::class);
$fullTextSearchService->onBoardShares($e);
} }
); );
} }