From 84993189289fc1df1615a6c62170c3f092ece6e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Tue, 4 Dec 2018 11:42:26 +0100 Subject: [PATCH 1/2] Fix comment activity entry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- lib/Activity/ActivityManager.php | 12 +++++++----- lib/Activity/CommentEventHandler.php | 12 ++++++++++-- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/lib/Activity/ActivityManager.php b/lib/Activity/ActivityManager.php index c5a5ead10..881c55cf2 100644 --- a/lib/Activity/ActivityManager.php +++ b/lib/Activity/ActivityManager.php @@ -322,11 +322,13 @@ private function createEvent($objectType, $entity, $subject, $additionalParams = // case self::SUBJECT_BOARD_UPDATE_COLOR break; case self::SUBJECT_CARD_COMMENT_CREATE: - /** @var IComment $entity */ - $subjectParams = [ - 'comment' => $entity->getMessage() - ]; - $message = '{comment}'; + $subjectParams = $this->findDetailsForCard($entity->getId()); + if (array_key_exists('comment', $additionalParams)) { + /** @var IComment $entity */ + $comment = $additionalParams['comment']; + $subjectParams['comment'] = $comment->getId(); + unset($additionalParams['comment']); + } break; case self::SUBJECT_STACK_CREATE: diff --git a/lib/Activity/CommentEventHandler.php b/lib/Activity/CommentEventHandler.php index 460bbab3a..44757b59f 100644 --- a/lib/Activity/CommentEventHandler.php +++ b/lib/Activity/CommentEventHandler.php @@ -23,8 +23,10 @@ namespace OCA\Deck\Activity; +use OCA\Deck\Db\CardMapper; use OCA\Deck\Notification\NotificationHelper; use OCP\Comments\CommentsEvent; +use OCP\Comments\IComment; use \OCP\Comments\ICommentsEventHandler; class CommentEventHandler implements ICommentsEventHandler { @@ -35,9 +37,13 @@ class CommentEventHandler implements ICommentsEventHandler { /** @var NotificationHelper */ private $notificationHelper; - public function __construct(ActivityManager $activityManager, NotificationHelper $notificationHelper) { + /** @var CardMapper */ + private $cardMapper; + + public function __construct(ActivityManager $activityManager, NotificationHelper $notificationHelper, CardMapper $cardMapper) { $this->notificationHelper = $notificationHelper; $this->activityManager = $activityManager; + $this->cardMapper = $cardMapper; } /** @@ -71,8 +77,10 @@ public function handle(CommentsEvent $event) { * @param CommentsEvent $event */ private function activityHandler(CommentsEvent $event) { + /** @var IComment $comment */ $comment = $event->getComment(); - $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $comment, ActivityManager::SUBJECT_CARD_COMMENT_CREATE, ['comment' => $comment->getId()]); + $card = $this->cardMapper->find($comment->getObjectId()); + $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_CARD_COMMENT_CREATE, ['comment' => $comment]); } From e5fe19c1073bd33a49ce67df94a930eff57fbe50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Tue, 4 Dec 2018 12:44:41 +0100 Subject: [PATCH 2/2] Fix missing information in activity emails MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- lib/Activity/ActivityManager.php | 3 +++ lib/Activity/DeckProvider.php | 14 +++++++++++++- tests/unit/Activity/CommentEventHandlerTest.php | 13 +++++++++++-- tests/unit/Activity/DeckProviderTest.php | 2 +- 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/lib/Activity/ActivityManager.php b/lib/Activity/ActivityManager.php index 881c55cf2..ebecf0df6 100644 --- a/lib/Activity/ActivityManager.php +++ b/lib/Activity/ActivityManager.php @@ -377,6 +377,9 @@ private function createEvent($objectType, $entity, $subject, $additionalParams = $subjectParams['stackBefore'] = $this->stackMapper->find($additionalParams['before']); } + $subjectParams['author'] = $this->userId; + + $event = $this->manager->generateEvent(); $event->setApp('deck') ->setType('deck') diff --git a/lib/Activity/DeckProvider.php b/lib/Activity/DeckProvider.php index 83f689955..c99bbe468 100644 --- a/lib/Activity/DeckProvider.php +++ b/lib/Activity/DeckProvider.php @@ -81,6 +81,11 @@ public function parse($language, IEvent $event, IEvent $previousEvent = null) { */ $author = $event->getAuthor(); + // get author if + if ($author === '' && array_key_exists('author', $subjectParams)) { + $author = $subjectParams['author']; + unset($subjectParams['author']); + } $user = $this->userManager->get($author); $params = [ 'user' => [ @@ -90,6 +95,9 @@ public function parse($language, IEvent $event, IEvent $previousEvent = null) { ], ]; if ($event->getObjectType() === ActivityManager::DECK_OBJECT_BOARD) { + if ($event->getObjectName() === '') { + $event->setObject($event->getObjectType(), $event->getObjectId(), $subjectParams['board']['title']); + } $board = [ 'type' => 'highlight', 'id' => $event->getObjectId(), @@ -100,6 +108,9 @@ public function parse($language, IEvent $event, IEvent $previousEvent = null) { } if ($event->getObjectType() === ActivityManager::DECK_OBJECT_CARD) { + if ($event->getObjectName() === '') { + $event->setObject($event->getObjectType(), $event->getObjectId(), $subjectParams['card']['title']); + } $card = [ 'type' => 'highlight', 'id' => $event->getObjectId(), @@ -149,6 +160,7 @@ protected function setSubjects(IEvent $event, $subject, array $parameters) { $event->setParsedSubject(str_replace($placeholders, $replacements, $subject)) ->setRichSubject($subject, $parameters); + $event->setSubject($subject, $parameters); } private function getIcon(IEvent $event) { @@ -301,6 +313,6 @@ private function parseParamForChanges($subjectParams, $params, $event) { } public function deckUrl($endpoint) { - return $this->urlGenerator->linkToRoute('deck.page.index') . '#!' . $endpoint; + return $this->urlGenerator->linkToRouteAbsolute('deck.page.index') . '#!' . $endpoint; } } diff --git a/tests/unit/Activity/CommentEventHandlerTest.php b/tests/unit/Activity/CommentEventHandlerTest.php index 1e149f528..5a0b3902a 100644 --- a/tests/unit/Activity/CommentEventHandlerTest.php +++ b/tests/unit/Activity/CommentEventHandlerTest.php @@ -53,13 +53,17 @@ class CommentEventHandlerTest extends TestCase { private $activityManager; /** @var NotificationHelper */ private $notificationHelper; + /** @var CardMapper */ + private $cardMapper; public function setUp() { $this->activityManager = $this->createMock(ActivityManager::class); $this->notificationHelper = $this->createMock(NotificationHelper::class); + $this->cardMapper = $this->createMock(CardMapper::class); $this->commentEventHandler = new CommentEventHandler( $this->activityManager, - $this->notificationHelper + $this->notificationHelper, + $this->cardMapper ); } @@ -67,10 +71,15 @@ public function testHandle() { $comment = $this->createMock(IComment::class); $comment->expects($this->any())->method('getId')->willReturn(1); $comment->expects($this->any())->method('getObjectType')->willReturn('deckCard'); + $comment->expects($this->any())->method('getMessage')->willReturn('Hello world'); + $card = $this->createMock(Card::class); + $this->cardMapper->expects($this->once()) + ->method('find') + ->willReturn($card); $commentsEvent = new CommentsEvent(CommentsEvent::EVENT_ADD, $comment); $this->activityManager->expects($this->once()) ->method('triggerEvent') - ->with(ActivityManager::DECK_OBJECT_CARD, $comment, ActivityManager::SUBJECT_CARD_COMMENT_CREATE, ['comment' => 1]); + ->with(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_CARD_COMMENT_CREATE, ['comment' => $comment]); $this->notificationHelper->expects($this->once()) ->method('sendMention') ->with($comment); diff --git a/tests/unit/Activity/DeckProviderTest.php b/tests/unit/Activity/DeckProviderTest.php index 657dd01d5..2c405ff1f 100644 --- a/tests/unit/Activity/DeckProviderTest.php +++ b/tests/unit/Activity/DeckProviderTest.php @@ -139,7 +139,7 @@ public function testEventIcons($subject, $app, $icon) { public function testDeckUrl() { $this->urlGenerator->expects($this->once()) - ->method('linkToRoute') + ->method('linkToRouteAbsolute') ->with('deck.page.index') ->willReturn('http://localhost/index.php/apps/deck/'); $this->assertEquals(