Inject service WatchlistManager into MinervaPagePermissions

Change-Id: Id41c85c8e119efbf9814be25ba659f1da1151eb4
This commit is contained in:
Fomafix 2024-02-26 07:35:55 +00:00
parent c94c90d93d
commit 248180ef03
3 changed files with 12 additions and 5 deletions

View file

@ -24,13 +24,13 @@ use IContextSource;
use MediaWiki\Config\Config;
use MediaWiki\Config\ConfigException;
use MediaWiki\Content\IContentHandlerFactory;
use MediaWiki\MediaWikiServices;
use MediaWiki\Minerva\LanguagesHelper;
use MediaWiki\Minerva\SkinOptions;
use MediaWiki\Permissions\Authority;
use MediaWiki\Permissions\PermissionManager;
use MediaWiki\Title\Title;
use MediaWiki\User\UserFactory;
use MediaWiki\Watchlist\WatchlistManager;
/**
* A wrapper for all available Minerva permissions.
@ -77,6 +77,8 @@ final class MinervaPagePermissions implements IMinervaPagePermissions {
private UserFactory $userFactory;
private WatchlistManager $watchlistManager;
/**
* Initialize internal Minerva Permissions system
* @param SkinOptions $skinOptions
@ -84,19 +86,22 @@ final class MinervaPagePermissions implements IMinervaPagePermissions {
* @param PermissionManager $permissionManager
* @param IContentHandlerFactory $contentHandlerFactory
* @param UserFactory $userFactory
* @param WatchlistManager $watchlistManager
*/
public function __construct(
SkinOptions $skinOptions,
LanguagesHelper $languagesHelper,
PermissionManager $permissionManager,
IContentHandlerFactory $contentHandlerFactory,
UserFactory $userFactory
UserFactory $userFactory,
WatchlistManager $watchlistManager
) {
$this->skinOptions = $skinOptions;
$this->languagesHelper = $languagesHelper;
$this->permissionManager = $permissionManager;
$this->contentHandlerFactory = $contentHandlerFactory;
$this->userFactory = $userFactory;
$this->watchlistManager = $watchlistManager;
}
/**
@ -177,7 +182,7 @@ final class MinervaPagePermissions implements IMinervaPagePermissions {
}
if ( $action === self::WATCHABLE || $action === self::WATCH ) {
$isWatchable = MediaWikiServices::getInstance()->getWatchlistManager()->isWatchable( $this->title );
$isWatchable = $this->watchlistManager->isWatchable( $this->title );
if ( $action === self::WATCHABLE ) {
return $isWatchable;

View file

@ -162,7 +162,8 @@ return [
$services->getService( 'Minerva.LanguagesHelper' ),
$services->getPermissionManager(),
$services->getContentHandlerFactory(),
$services->getUserFactory()
$services->getUserFactory(),
$services->getWatchlistManager()
);
// TODO: This should not be allowed, this is basically global $wgTitle and $wgUser.
$permissions->setContext( RequestContext::getMain() );

View file

@ -74,7 +74,8 @@ class MinervaPagePermissionsTest extends MediaWikiIntegrationTestCase {
$languageHelper,
$permissionManager,
$contentHandlerFactory,
$this->createMock( UserFactory::class )
$this->createMock( UserFactory::class ),
$this->getServiceContainer()->getWatchlistManager()
) )->setContext( $context );
}