From 57f09b642e9a5e8cf2865ed52eaf93b09f8dea14 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 8 Aug 2025 16:30:58 +0200 Subject: [PATCH] fix(container): Reduce general deprecation spam on all requests Signed-off-by: Joas Schilling --- .../lib/Provider/BackupCodesProvider.php | 21 +++------- .../Unit/Provider/BackupCodesProviderTest.php | 6 +-- build/psalm-baseline.xml | 13 +++---- .../DependencyInjection/DIContainer.php | 3 +- lib/private/InitialStateService.php | 22 ++++------- lib/private/UserStatus/Manager.php | 38 ++++++------------- lib/public/IInitialStateService.php | 8 ++-- 7 files changed, 39 insertions(+), 72 deletions(-) diff --git a/apps/twofactor_backupcodes/lib/Provider/BackupCodesProvider.php b/apps/twofactor_backupcodes/lib/Provider/BackupCodesProvider.php index 12959f57e9b..c521329e203 100644 --- a/apps/twofactor_backupcodes/lib/Provider/BackupCodesProvider.php +++ b/apps/twofactor_backupcodes/lib/Provider/BackupCodesProvider.php @@ -11,35 +11,24 @@ namespace OCA\TwoFactorBackupCodes\Provider; use OC\App\AppManager; use OCA\TwoFactorBackupCodes\Service\BackupCodeStorage; use OCA\TwoFactorBackupCodes\Settings\Personal; +use OCP\AppFramework\Services\IInitialState; use OCP\Authentication\TwoFactorAuth\IDeactivatableByAdmin; use OCP\Authentication\TwoFactorAuth\IPersonalProviderSettings; use OCP\Authentication\TwoFactorAuth\IProvidesPersonalSettings; -use OCP\IInitialStateService; use OCP\IL10N; use OCP\IUser; use OCP\Template\ITemplate; use OCP\Template\ITemplateManager; class BackupCodesProvider implements IDeactivatableByAdmin, IProvidesPersonalSettings { - - /** @var AppManager */ - private $appManager; - - /** - * @param string $appName - * @param BackupCodeStorage $storage - * @param IL10N $l10n - * @param AppManager $appManager - */ public function __construct( private string $appName, private BackupCodeStorage $storage, private IL10N $l10n, - AppManager $appManager, - private IInitialStateService $initialStateService, + private AppManager $appManager, + private IInitialState $initialState, private ITemplateManager $templateManager, ) { - $this->appManager = $appManager; } /** @@ -131,11 +120,11 @@ class BackupCodesProvider implements IDeactivatableByAdmin, IProvidesPersonalSet */ public function getPersonalSettings(IUser $user): IPersonalProviderSettings { $state = $this->storage->getBackupCodesState($user); - $this->initialStateService->provideInitialState($this->appName, 'state', $state); + $this->initialState->provideInitialState('state', $state); return new Personal(); } - public function disableFor(IUser $user) { + public function disableFor(IUser $user): void { $this->storage->deleteCodes($user); } } diff --git a/apps/twofactor_backupcodes/tests/Unit/Provider/BackupCodesProviderTest.php b/apps/twofactor_backupcodes/tests/Unit/Provider/BackupCodesProviderTest.php index cef3e07a36e..512374fca8c 100644 --- a/apps/twofactor_backupcodes/tests/Unit/Provider/BackupCodesProviderTest.php +++ b/apps/twofactor_backupcodes/tests/Unit/Provider/BackupCodesProviderTest.php @@ -11,7 +11,7 @@ namespace OCA\TwoFactorBackupCodes\Tests\Unit\Provider; use OC\App\AppManager; use OCA\TwoFactorBackupCodes\Provider\BackupCodesProvider; use OCA\TwoFactorBackupCodes\Service\BackupCodeStorage; -use OCP\IInitialStateService; +use OCP\AppFramework\Services\IInitialState; use OCP\IL10N; use OCP\IUser; use OCP\Server; @@ -25,7 +25,7 @@ class BackupCodesProviderTest extends TestCase { private BackupCodeStorage&MockObject $storage; private IL10N&MockObject $l10n; private AppManager&MockObject $appManager; - private IInitialStateService&MockObject $initialState; + private IInitialState&MockObject $initialState; private ITemplateManager $templateManager; private BackupCodesProvider $provider; @@ -37,7 +37,7 @@ class BackupCodesProviderTest extends TestCase { $this->storage = $this->createMock(BackupCodeStorage::class); $this->l10n = $this->createMock(IL10N::class); $this->appManager = $this->createMock(AppManager::class); - $this->initialState = $this->createMock(IInitialStateService::class); + $this->initialState = $this->createMock(IInitialState::class); $this->templateManager = Server::get(ITemplateManager::class); $this->provider = new BackupCodesProvider( diff --git a/build/psalm-baseline.xml b/build/psalm-baseline.xml index 7ec5c22632c..07df0637d57 100644 --- a/build/psalm-baseline.xml +++ b/build/psalm-baseline.xml @@ -2424,14 +2424,6 @@ - - - - - - - - @@ -4013,6 +4005,11 @@ + + + + + diff --git a/lib/private/AppFramework/DependencyInjection/DIContainer.php b/lib/private/AppFramework/DependencyInjection/DIContainer.php index 0bce8ac193b..76261fe6b92 100644 --- a/lib/private/AppFramework/DependencyInjection/DIContainer.php +++ b/lib/private/AppFramework/DependencyInjection/DIContainer.php @@ -38,6 +38,7 @@ use OC\Log\PsrLoggerAdapter; use OC\ServerContainer; use OC\Settings\AuthorizedGroupMapper; use OCA\WorkflowEngine\Manager; +use OCP\App\IAppManager; use OCP\AppFramework\Http\IOutput; use OCP\AppFramework\IAppContainer; use OCP\AppFramework\QueryException; @@ -200,7 +201,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { $server->getUserSession()->isLoggedIn(), $c->get(IGroupManager::class), $c->get(ISubAdmin::class), - $server->getAppManager(), + $c->get(IAppManager::class), $server->getL10N('lib'), $c->get(AuthorizedGroupMapper::class), $c->get(IUserSession::class), diff --git a/lib/private/InitialStateService.php b/lib/private/InitialStateService.php index c930ffd9466..300aa238397 100644 --- a/lib/private/InitialStateService.php +++ b/lib/private/InitialStateService.php @@ -13,29 +13,23 @@ use OC\AppFramework\Bootstrap\Coordinator; use OCP\AppFramework\QueryException; use OCP\AppFramework\Services\InitialStateProvider; use OCP\IInitialStateService; -use OCP\IServerContainer; +use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; class InitialStateService implements IInitialStateService { - /** @var LoggerInterface */ - private $logger; /** @var string[][] */ - private $states = []; + private array $states = []; /** @var Closure[][] */ - private $lazyStates = []; + private array $lazyStates = []; - /** @var Coordinator */ - private $bootstrapCoordinator; - /** @var IServerContainer */ - private $container; - - public function __construct(LoggerInterface $logger, Coordinator $bootstrapCoordinator, IServerContainer $container) { - $this->logger = $logger; - $this->bootstrapCoordinator = $bootstrapCoordinator; - $this->container = $container; + public function __construct( + private LoggerInterface $logger, + private Coordinator $bootstrapCoordinator, + private ContainerInterface $container, + ) { } public function provideInitialState(string $appName, string $key, $data): void { diff --git a/lib/private/UserStatus/Manager.php b/lib/private/UserStatus/Manager.php index 4658f61df82..4cfd1c18e79 100644 --- a/lib/private/UserStatus/Manager.php +++ b/lib/private/UserStatus/Manager.php @@ -8,35 +8,21 @@ declare(strict_types=1); */ namespace OC\UserStatus; -use OCP\IServerContainer; use OCP\UserStatus\IManager; use OCP\UserStatus\IProvider; use Psr\Container\ContainerExceptionInterface; +use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; class Manager implements IManager { - /** @var IServerContainer */ - private $container; - - /** @var LoggerInterface */ - private $logger; - - /** @var class-string */ - private $providerClass; - - /** @var IProvider */ - private $provider; - - /** - * Manager constructor. - * - * @param IServerContainer $container - * @param LoggerInterface $logger - */ - public function __construct(IServerContainer $container, - LoggerInterface $logger) { - $this->container = $container; - $this->logger = $logger; + /** @var ?class-string */ + private ?string $providerClass = null; + private ?IProvider $provider = null; + + public function __construct( + private ContainerInterface $container, + private LoggerInterface $logger, + ) { } /** @@ -89,7 +75,7 @@ class Manager implements IManager { public function setUserStatus(string $userId, string $messageId, string $status, bool $createBackup = false, ?string $customMessage = null): void { $this->setupProvider(); - if (!$this->provider || !($this->provider instanceof ISettableProvider)) { + if (!$this->provider instanceof ISettableProvider) { return; } @@ -98,7 +84,7 @@ class Manager implements IManager { public function revertUserStatus(string $userId, string $messageId, string $status): void { $this->setupProvider(); - if (!$this->provider || !($this->provider instanceof ISettableProvider)) { + if (!$this->provider instanceof ISettableProvider) { return; } $this->provider->revertUserStatus($userId, $messageId, $status); @@ -106,7 +92,7 @@ class Manager implements IManager { public function revertMultipleUserStatus(array $userIds, string $messageId, string $status): void { $this->setupProvider(); - if (!$this->provider || !($this->provider instanceof ISettableProvider)) { + if (!$this->provider instanceof ISettableProvider) { return; } $this->provider->revertMultipleUserStatus($userIds, $messageId, $status); diff --git a/lib/public/IInitialStateService.php b/lib/public/IInitialStateService.php index 672c086b22d..6c482c2cf20 100644 --- a/lib/public/IInitialStateService.php +++ b/lib/public/IInitialStateService.php @@ -11,13 +11,13 @@ use Closure; /** * @since 16.0.0 - * @deprecated 21 Use OCP\AppFramework\Services\IInitialState or OCP\AppFramework\Services\InitialStateProvider + * @deprecated 21 Use {@see \OCP\AppFramework\Services\IInitialState} or {@see \OCP\AppFramework\Services\InitialStateProvider} * @see \OCP\AppFramework\Services\IInitialState */ interface IInitialStateService { /** * Allows an app to provide its initial state to the template system. - * Use this if you know your initial state sill be used for example if + * Use this if you know your initial state still be used for example if * you are in the render function of you controller. * * @since 16.0.0 @@ -26,7 +26,7 @@ interface IInitialStateService { * @param string $key * @param bool|int|float|string|array|\JsonSerializable $data * - * @deprecated 21 Use OCP\AppFramework\Services\IInitialState or OCP\AppFramework\Services\InitialStateProvider + * @deprecated 21 Use {@see \OCP\AppFramework\Services\IInitialState} or {@see \OCP\AppFramework\Services\InitialStateProvider} * @see \OCP\AppFramework\Services\IInitialState::provideInitialState() */ public function provideInitialState(string $appName, string $key, $data): void; @@ -44,7 +44,7 @@ interface IInitialStateService { * @param string $key * @param Closure $closure returns a primitive or an object that implements JsonSerializable * - * @deprecated 21 Use OCP\AppFramework\Services\IInitialState or OCP\AppFramework\Services\InitialStateProvider + * @deprecated 21 Use {@see \OCP\AppFramework\Services\IInitialState} or {@see \OCP\AppFramework\Services\InitialStateProvider} * @see \OCP\AppFramework\Services\IInitialState::provideLazyInitialState() */ public function provideLazyInitialState(string $appName, string $key, Closure $closure): void;