aboutsummaryrefslogtreecommitdiffstats
path: root/apps/comments
diff options
context:
space:
mode:
authorCarl Schwan <carl@carlschwan.eu>2022-11-25 11:19:47 +0100
committerCôme Chilliet <come.chilliet@nextcloud.com>2023-06-20 10:55:20 +0200
commit9725d0032944ebe5a73d59781a66742c5d1ae404 (patch)
treed7f90b66e49297e276241ed3960716cddfbad49a /apps/comments
parent5063bf37ed3e68041adb9a96f430a87d59106491 (diff)
downloadnextcloud-server-9725d0032944ebe5a73d59781a66742c5d1ae404.tar.gz
nextcloud-server-9725d0032944ebe5a73d59781a66742c5d1ae404.zip
Cleanup comments code
- Fix various psalm issues - Add as much typing as possible while preserving stable API Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Diffstat (limited to 'apps/comments')
-rw-r--r--apps/comments/lib/Activity/Filter.php38
-rw-r--r--apps/comments/lib/Activity/Listener.php5
-rw-r--r--apps/comments/lib/Activity/Provider.php2
-rw-r--r--apps/comments/lib/Activity/Setting.php51
-rw-r--r--apps/comments/lib/Collaboration/CommentersSorter.php10
-rw-r--r--apps/comments/lib/EventHandler.php22
-rw-r--r--apps/comments/lib/Listener/CommentsEntityEventListener.php13
-rw-r--r--apps/comments/lib/MaxAutoCompleteResultsInitialState.php4
-rw-r--r--apps/comments/lib/Notification/Listener.php23
-rw-r--r--apps/comments/lib/Search/CommentsSearchProvider.php13
-rw-r--r--apps/comments/lib/Search/Result.php11
11 files changed, 49 insertions, 143 deletions
diff --git a/apps/comments/lib/Activity/Filter.php b/apps/comments/lib/Activity/Filter.php
index efd8d5140ae..2b6e898f599 100644
--- a/apps/comments/lib/Activity/Filter.php
+++ b/apps/comments/lib/Activity/Filter.php
@@ -27,64 +27,42 @@ use OCP\IL10N;
use OCP\IURLGenerator;
class Filter implements IFilter {
-
- /** @var IL10N */
- protected $l;
-
- /** @var IURLGenerator */
- protected $url;
+ protected IL10N $l;
+ protected IURLGenerator $url;
public function __construct(IL10N $l, IURLGenerator $url) {
$this->l = $l;
$this->url = $url;
}
- /**
- * @return string Lowercase a-z only identifier
- * @since 11.0.0
- */
- public function getIdentifier() {
+ public function getIdentifier(): string {
return 'comments';
}
- /**
- * @return string A translated string
- * @since 11.0.0
- */
- public function getName() {
+ public function getName(): string {
return $this->l->t('Comments');
}
- /**
- * @return int
- * @since 11.0.0
- */
- public function getPriority() {
+ public function getPriority(): int {
return 40;
}
- /**
- * @return string Full URL to an icon, empty string when none is given
- * @since 11.0.0
- */
- public function getIcon() {
+ public function getIcon(): string {
return $this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/comment.svg'));
}
/**
* @param string[] $types
* @return string[] An array of allowed apps from which activities should be displayed
- * @since 11.0.0
*/
- public function filterTypes(array $types) {
+ public function filterTypes(array $types): array {
return $types;
}
/**
* @return string[] An array of allowed apps from which activities should be displayed
- * @since 11.0.0
*/
- public function allowedApps() {
+ public function allowedApps(): array {
return ['comments'];
}
}
diff --git a/apps/comments/lib/Activity/Listener.php b/apps/comments/lib/Activity/Listener.php
index 69315b6ac00..a066ccdefc1 100644
--- a/apps/comments/lib/Activity/Listener.php
+++ b/apps/comments/lib/Activity/Listener.php
@@ -59,10 +59,7 @@ class Listener {
$this->shareHelper = $shareHelper;
}
- /**
- * @param CommentsEvent $event
- */
- public function commentEvent(CommentsEvent $event) {
+ public function commentEvent(CommentsEvent $event): void {
if ($event->getComment()->getObjectType() !== 'files'
|| $event->getEvent() !== CommentsEvent::EVENT_ADD
|| !$this->appManager->isInstalled('activity')) {
diff --git a/apps/comments/lib/Activity/Provider.php b/apps/comments/lib/Activity/Provider.php
index f9a5971c7f3..727f6d66b50 100644
--- a/apps/comments/lib/Activity/Provider.php
+++ b/apps/comments/lib/Activity/Provider.php
@@ -58,7 +58,7 @@ class Provider implements IProvider {
* @throws \InvalidArgumentException
* @since 11.0.0
*/
- public function parse($language, IEvent $event, IEvent $previousEvent = null) {
+ public function parse($language, IEvent $event, IEvent $previousEvent = null): IEvent {
if ($event->getApp() !== 'comments') {
throw new \InvalidArgumentException();
}
diff --git a/apps/comments/lib/Activity/Setting.php b/apps/comments/lib/Activity/Setting.php
index c0d91c244a6..3352bf2a59b 100644
--- a/apps/comments/lib/Activity/Setting.php
+++ b/apps/comments/lib/Activity/Setting.php
@@ -26,72 +26,37 @@ use OCP\Activity\ISetting;
use OCP\IL10N;
class Setting implements ISetting {
+ protected IL10N $l;
- /** @var IL10N */
- protected $l;
-
- /**
- * @param IL10N $l
- */
public function __construct(IL10N $l) {
$this->l = $l;
}
- /**
- * @return string Lowercase a-z and underscore only identifier
- * @since 11.0.0
- */
- public function getIdentifier() {
+ public function getIdentifier(): string {
return 'comments';
}
- /**
- * @return string A translated string
- * @since 11.0.0
- */
- public function getName() {
+ public function getName(): string {
return $this->l->t('<strong>Comments</strong> for files');
}
- /**
- * @return int whether the filter should be rather on the top or bottom of
- * the admin section. The filters are arranged in ascending order of the
- * priority values. It is required to return a value between 0 and 100.
- * @since 11.0.0
- */
- public function getPriority() {
+ public function getPriority(): int {
return 50;
}
- /**
- * @return bool True when the option can be changed for the stream
- * @since 11.0.0
- */
- public function canChangeStream() {
+ public function canChangeStream(): bool {
return true;
}
- /**
- * @return bool True when the option can be changed for the stream
- * @since 11.0.0
- */
- public function isDefaultEnabledStream() {
+ public function isDefaultEnabledStream(): bool {
return true;
}
- /**
- * @return bool True when the option can be changed for the mail
- * @since 11.0.0
- */
- public function canChangeMail() {
+ public function canChangeMail(): bool {
return true;
}
- /**
- * @return bool True when the option can be changed for the stream
- * @since 11.0.0
- */
- public function isDefaultEnabledMail() {
+ public function isDefaultEnabledMail(): bool {
return false;
}
}
diff --git a/apps/comments/lib/Collaboration/CommentersSorter.php b/apps/comments/lib/Collaboration/CommentersSorter.php
index 8723b132e03..b7c993b4f20 100644
--- a/apps/comments/lib/Collaboration/CommentersSorter.php
+++ b/apps/comments/lib/Collaboration/CommentersSorter.php
@@ -27,14 +27,13 @@ use OCP\Collaboration\AutoComplete\ISorter;
use OCP\Comments\ICommentsManager;
class CommentersSorter implements ISorter {
-
private ICommentsManager $commentsManager;
public function __construct(ICommentsManager $commentsManager) {
$this->commentsManager = $commentsManager;
}
- public function getId() {
+ public function getId(): string {
return 'commenters';
}
@@ -42,10 +41,10 @@ class CommentersSorter implements ISorter {
* Sorts people who commented on the given item atop (descelating) of the
* others
*
- * @param array $sortArray
+ * @param array &$sortArray
* @param array $context
*/
- public function sort(array &$sortArray, array $context) {
+ public function sort(array &$sortArray, array $context): void {
$commenters = $this->retrieveCommentsInformation($context['itemType'], $context['itemId']);
if (count($commenters) === 0) {
return;
@@ -76,6 +75,9 @@ class CommentersSorter implements ISorter {
}
}
+ /**
+ * @return array<string, array<string, int>>
+ */
protected function retrieveCommentsInformation(string $type, string $id): array {
$comments = $this->commentsManager->getForObject($type, $id);
if (count($comments) === 0) {
diff --git a/apps/comments/lib/EventHandler.php b/apps/comments/lib/EventHandler.php
index 6027a24b026..722e3b8cc72 100644
--- a/apps/comments/lib/EventHandler.php
+++ b/apps/comments/lib/EventHandler.php
@@ -34,21 +34,15 @@ use OCP\Comments\ICommentsEventHandler;
* @package OCA\Comments
*/
class EventHandler implements ICommentsEventHandler {
- /** @var ActivityListener */
- private $activityListener;
-
- /** @var NotificationListener */
- private $notificationListener;
+ private ActivityListener $activityListener;
+ private NotificationListener $notificationListener;
public function __construct(ActivityListener $activityListener, NotificationListener $notificationListener) {
$this->activityListener = $activityListener;
$this->notificationListener = $notificationListener;
}
- /**
- * @param CommentsEvent $event
- */
- public function handle(CommentsEvent $event) {
+ public function handle(CommentsEvent $event): void {
if ($event->getComment()->getObjectType() !== 'files') {
// this is a 'files'-specific Handler
return;
@@ -73,17 +67,11 @@ class EventHandler implements ICommentsEventHandler {
}
}
- /**
- * @param CommentsEvent $event
- */
- private function activityHandler(CommentsEvent $event) {
+ private function activityHandler(CommentsEvent $event): void {
$this->activityListener->commentEvent($event);
}
- /**
- * @param CommentsEvent $event
- */
- private function notificationHandler(CommentsEvent $event) {
+ private function notificationHandler(CommentsEvent $event): void {
$this->notificationListener->evaluate($event);
}
}
diff --git a/apps/comments/lib/Listener/CommentsEntityEventListener.php b/apps/comments/lib/Listener/CommentsEntityEventListener.php
index 5675e1904cc..b49304c409b 100644
--- a/apps/comments/lib/Listener/CommentsEntityEventListener.php
+++ b/apps/comments/lib/Listener/CommentsEntityEventListener.php
@@ -28,16 +28,25 @@ namespace OCA\Comments\Listener;
use OCP\Comments\CommentsEntityEvent;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
+use OCP\Files\IRootFolder;
class CommentsEntityEventListener implements IEventListener {
+ private IRootFolder $rootFolder;
+ private ?string $userId;
+
+ public function __construct(IRootFolder $rootFolder, ?string $userId = null) {
+ $this->rootFolder = $rootFolder;
+ $this->userId = $userId;
+ }
+
public function handle(Event $event): void {
if (!($event instanceof CommentsEntityEvent)) {
// Unrelated
return;
}
- $event->addEntityCollection('files', function ($name) {
- $nodes = \OC::$server->getUserFolder()->getById((int)$name);
+ $event->addEntityCollection('files', function ($name): bool {
+ $nodes = $this->rootFolder->getUserFolder($this->userId)->getById((int)$name);
return !empty($nodes);
});
}
diff --git a/apps/comments/lib/MaxAutoCompleteResultsInitialState.php b/apps/comments/lib/MaxAutoCompleteResultsInitialState.php
index 015eaf19d84..cf7335e84c8 100644
--- a/apps/comments/lib/MaxAutoCompleteResultsInitialState.php
+++ b/apps/comments/lib/MaxAutoCompleteResultsInitialState.php
@@ -31,9 +31,7 @@ use OCP\AppFramework\Services\InitialStateProvider;
use OCP\IConfig;
class MaxAutoCompleteResultsInitialState extends InitialStateProvider {
-
- /** @var IConfig */
- private $config;
+ private IConfig $config;
public function __construct(IConfig $config) {
$this->config = $config;
diff --git a/apps/comments/lib/Notification/Listener.php b/apps/comments/lib/Notification/Listener.php
index d1662f84266..bbea310ef7e 100644
--- a/apps/comments/lib/Notification/Listener.php
+++ b/apps/comments/lib/Notification/Listener.php
@@ -27,15 +27,12 @@ use OCP\Comments\CommentsEvent;
use OCP\Comments\IComment;
use OCP\IUserManager;
use OCP\Notification\IManager;
+use OCP\Notification\INotification;
class Listener {
-
protected IManager $notificationManager;
protected IUserManager $userManager;
- /**
- * Listener constructor.
- */
public function __construct(
IManager $notificationManager,
IUserManager $userManager
@@ -44,10 +41,7 @@ class Listener {
$this->userManager = $userManager;
}
- /**
- * @param CommentsEvent $event
- */
- public function evaluate(CommentsEvent $event) {
+ public function evaluate(CommentsEvent $event): void {
$comment = $event->getComment();
$mentions = $this->extractMentions($comment->getMentions());
@@ -77,12 +71,9 @@ class Listener {
}
/**
- * creates a notification instance and fills it with comment data
- *
- * @param IComment $comment
- * @return \OCP\Notification\INotification
+ * Creates a notification instance and fills it with comment data
*/
- public function instantiateNotification(IComment $comment) {
+ public function instantiateNotification(IComment $comment): INotification {
$notification = $this->notificationManager->createNotification();
$notification
->setApp('comments')
@@ -94,12 +85,12 @@ class Listener {
}
/**
- * flattens the mention array returned from comments to a list of user ids.
+ * Flattens the mention array returned from comments to a list of user ids.
*
* @param array $mentions
- * @return string[] containing the mentions, e.g. ['alice', 'bob']
+ * @return list<string> containing the mentions, e.g. ['alice', 'bob']
*/
- public function extractMentions(array $mentions) {
+ public function extractMentions(array $mentions): array {
if (empty($mentions)) {
return [];
}
diff --git a/apps/comments/lib/Search/CommentsSearchProvider.php b/apps/comments/lib/Search/CommentsSearchProvider.php
index b36f82f8401..cca01c8ac44 100644
--- a/apps/comments/lib/Search/CommentsSearchProvider.php
+++ b/apps/comments/lib/Search/CommentsSearchProvider.php
@@ -39,7 +39,6 @@ use function array_map;
use function pathinfo;
class CommentsSearchProvider implements IProvider {
-
private IUserManager $userManager;
private IL10N $l10n;
private IURLGenerator $urlGenerator;
@@ -55,23 +54,14 @@ class CommentsSearchProvider implements IProvider {
$this->legacyProvider = $legacyProvider;
}
- /**
- * @inheritDoc
- */
public function getId(): string {
return 'comments';
}
- /**
- * @inheritDoc
- */
public function getName(): string {
return $this->l10n->t('Comments');
}
- /**
- * @inheritDoc
- */
public function getOrder(string $route, array $routeParameters): int {
if ($route === 'files.View.index') {
// Files first
@@ -80,9 +70,6 @@ class CommentsSearchProvider implements IProvider {
return 10;
}
- /**
- * @inheritDoc
- */
public function search(IUser $user, ISearchQuery $query): SearchResult {
return SearchResult::complete(
$this->l10n->t('Comments'),
diff --git a/apps/comments/lib/Search/Result.php b/apps/comments/lib/Search/Result.php
index ec799b7e30a..06016d2b46d 100644
--- a/apps/comments/lib/Search/Result.php
+++ b/apps/comments/lib/Search/Result.php
@@ -58,10 +58,6 @@ class Result extends BaseResult {
public $fileName;
/**
- * @param string $search
- * @param IComment $comment
- * @param string $authorName
- * @param string $path
* @throws NotFoundException
* @deprecated 20.0.0
*/
@@ -70,7 +66,7 @@ class Result extends BaseResult {
string $authorName,
string $path) {
parent::__construct(
- (int) $comment->getId(),
+ $comment->getId(),
$comment->getMessage()
/* @todo , [link to file] */
);
@@ -83,8 +79,6 @@ class Result extends BaseResult {
}
/**
- * @param string $path
- * @return string
* @throws NotFoundException
*/
protected function getVisiblePath(string $path): string {
@@ -98,9 +92,6 @@ class Result extends BaseResult {
}
/**
- * @param string $message
- * @param string $search
- * @return string
* @throws NotFoundException
*/
protected function getRelevantMessagePart(string $message, string $search): string {