Skip to content

Commit

Permalink
Merge pull request #10782 from nextcloud/techdebt/noid/use-injectFn-i…
Browse files Browse the repository at this point in the history
…nstead-of-accessing-iservercontainer

techdebt(context): Use injectFn instead of accessing IServerContainer
  • Loading branch information
nickvergessen authored Oct 26, 2023
2 parents f80401e + 52878fb commit b1294fb
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 30 deletions.
54 changes: 27 additions & 27 deletions lib/AppInfo/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -94,11 +94,11 @@
use OCA\Talk\Share\RoomShareProvider;
use OCA\Talk\Signaling\Listener as SignalingListener;
use OCA\Talk\Status\Listener as StatusListener;
use OCP\App\IAppManager;
use OCP\AppFramework\App;
use OCP\AppFramework\Bootstrap\IBootContext;
use OCP\AppFramework\Bootstrap\IBootstrap;
use OCP\AppFramework\Bootstrap\IRegistrationContext;
use OCP\AppFramework\IAppContainer;
use OCP\Collaboration\Resources\IProviderManager;
use OCP\Collaboration\Resources\LoadAdditionalScriptsEvent;
use OCP\EventDispatcher\IEventDispatcher;
Expand All @@ -109,10 +109,14 @@
use OCP\Group\Events\UserAddedEvent;
use OCP\Group\Events\UserRemovedEvent;
use OCP\IConfig;
use OCP\IServerContainer;
use OCP\INavigationManager;
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\IUserSession;
use OCP\L10N\IFactory;
use OCP\Security\CSP\AddContentSecurityPolicyEvent;
use OCP\Security\FeaturePolicy\AddFeaturePolicyEvent;
use OCP\Server;
use OCP\Settings\IManager;
use OCP\SpeechToText\Events\TranscriptionFailedEvent;
use OCP\SpeechToText\Events\TranscriptionSuccessfulEvent;
Expand Down Expand Up @@ -202,9 +206,10 @@ public function register(IRegistrationContext $context): void {
public function boot(IBootContext $context): void {
$server = $context->getServerContainer();

$this->registerCollaborationResourceProvider($server);
$this->registerClientLinks($server);
$this->registerNavigationLink($server);
$context->injectFn([$this, 'registerCollaborationResourceProvider']);
$context->injectFn([$this, 'registerClientLinks']);
$context->injectFn([$this, 'registerNavigationLink']);
$context->injectFn([$this, 'registerCloudFederationProviderManager']);

/** @var IEventDispatcher $dispatcher */
$dispatcher = $server->get(IEventDispatcher::class);
Expand All @@ -224,56 +229,51 @@ public function boot(IBootContext $context): void {
ReferenceInvalidationListener::register($dispatcher);
ShareListener::register($dispatcher);

$context->injectFn(\Closure::fromCallable([$this, 'registerCloudFederationProviderManager']));
}

protected function registerCollaborationResourceProvider(IServerContainer $server): void {
/** @var IProviderManager $resourceManager */
$resourceManager = $server->get(IProviderManager::class);
public function registerCollaborationResourceProvider(IProviderManager $resourceManager, IEventDispatcher $dispatcher): void {
$resourceManager->registerResourceProvider(ConversationProvider::class);
$server->get(IEventDispatcher::class)->addListener(LoadAdditionalScriptsEvent::class, static function () {
$dispatcher->addListener(LoadAdditionalScriptsEvent::class, static function (): void {
Util::addScript(self::APP_ID, 'talk-collections');
});
}

protected function registerClientLinks(IServerContainer $server): void {
if ($server->getAppManager()->isEnabledForUser('firstrunwizard')) {
/** @var IManager $settingManager */
$settingManager = $server->getSettingsManager();
public function registerClientLinks(IAppManager $appManager, IManager $settingManager): void {
if ($appManager->isEnabledForUser('firstrunwizard')) {
$settingManager->registerSetting('personal', Personal::class);
}
}

protected function registerNavigationLink(IServerContainer $server): void {
$server->getNavigationManager()->add(static function () use ($server) {
/** @var Config $config */
$config = $server->get(Config::class);
$user = $server->getUserSession()->getUser();
public function registerNavigationLink(INavigationManager $navigationManager): void {
$navigationManager->add(static function () {
$config = Server::get(Config::class);
$userSession = Server::get(IUserSession::class);
$urlGenerator = Server::get(IURLGenerator::class);
$l = Server::get(IFactory::class)->get(self::APP_ID);
$user = $userSession->getUser();
return [
'id' => self::APP_ID,
'name' => $server->getL10N(self::APP_ID)->t('Talk'),
'href' => $server->getURLGenerator()->linkToRouteAbsolute('spreed.Page.index'),
'icon' => $server->getURLGenerator()->imagePath(self::APP_ID, 'app.svg'),
'name' => $l->t('Talk'),
'href' => $urlGenerator->linkToRouteAbsolute('spreed.Page.index'),
'icon' => $urlGenerator->imagePath(self::APP_ID, 'app.svg'),
'order' => 3,
'type' => $user instanceof IUser && !$config->isDisabledForUser($user) ? 'link' : 'hidden',
];
});
}

protected function registerCloudFederationProviderManager(
public function registerCloudFederationProviderManager(
IConfig $config,
ICloudFederationProviderManager $manager,
IAppContainer $appContainer): void {
): void {
if ($config->getAppValue('spreed', 'federation_enabled', 'no') !== 'yes') {
return;
}

$manager->addCloudFederationProvider(
'talk-room',
'Talk Federation',
static function () use ($appContainer): ICloudFederationProvider {
return $appContainer->get(CloudFederationProviderTalk::class);
}
static fn (): ICloudFederationProvider => Server::get(CloudFederationProviderTalk::class)
);
}
}
3 changes: 0 additions & 3 deletions tests/psalm-baseline.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@
<code>BeforeTemplateRenderedEvent</code>
<code>BeforeTemplateRenderedEvent</code>
</UndefinedClass>
<UndefinedInterfaceMethod>
<code>getSettingsManager</code>
</UndefinedInterfaceMethod>
</file>
<file src="lib/BackgroundJob/CheckReferenceIdColumn.php">
<UndefinedClass>
Expand Down

0 comments on commit b1294fb

Please sign in to comment.