diff --git a/js/service/ActivityService.js b/js/service/ActivityService.js index 7c4786384..5b929559a 100644 --- a/js/service/ActivityService.js +++ b/js/service/ActivityService.js @@ -51,7 +51,8 @@ class ActivityService { for (let index in this.toEnhanceWithComments) { if (this.toEnhanceWithComments.hasOwnProperty(index)) { let item = this.toEnhanceWithComments[index]; - item.commentModel = this.commentCollection.get(item.subject_rich[1].comment); + let commentId = Array.isArray(item.subject_rich[1].comment) ? item.subject_rich[1].comment.id : item.subject_rich[1].comment; + item.commentModel = this.commentCollection.get(commentId); if (typeof item.commentModel !== 'undefined') { this.toEnhanceWithComments = this.toEnhanceWithComments.filter((entry) => entry.activity_id !== item.activity_id); } diff --git a/lib/Activity/DeckProvider.php b/lib/Activity/DeckProvider.php index fff6c9a7e..eae63c552 100644 --- a/lib/Activity/DeckProvider.php +++ b/lib/Activity/DeckProvider.php @@ -158,18 +158,19 @@ class DeckProvider implements IProvider { * @param array $parameters */ protected function setSubjects(IEvent $event, $subject, array $parameters) { - $placeholders = $replacements = []; + $placeholders = $replacements = $richParameters = []; foreach ($parameters as $placeholder => $parameter) { $placeholders[] = '{' . $placeholder . '}'; if (is_array($parameter) && array_key_exists('name', $parameter)) { $replacements[] = $parameter['name']; + $richParameters[$placeholder] = $parameter; } else { $replacements[] = ''; } } $event->setParsedSubject(str_replace($placeholders, $replacements, $subject)) - ->setRichSubject($subject, $parameters); + ->setRichSubject($subject, $richParameters); $event->setSubject($subject, $parameters); } @@ -284,7 +285,11 @@ class DeckProvider implements IProvider { $event->setParsedMessage($comment->getMessage()); } catch (NotFoundException $e) { } - $params['comment'] = $subjectParams['comment']; + $params['comment'] =[ + 'type' => 'highlight', + 'id' => $subjectParams['comment'], + 'name' => $comment->getMessage() + ]; } return $params; } diff --git a/tests/unit/Activity/DeckProviderTest.php b/tests/unit/Activity/DeckProviderTest.php index 746764ff6..5a8dcc615 100644 --- a/tests/unit/Activity/DeckProviderTest.php +++ b/tests/unit/Activity/DeckProviderTest.php @@ -465,7 +465,7 @@ class DeckProviderTest extends TestCase { public function testParseParamForComment() { $comment = $this->createMock(IComment::class); - $comment->expects($this->once()) + $comment->expects($this->any()) ->method('getMessage') ->willReturn('Comment content'); $this->commentsManager->expects($this->once()) @@ -481,7 +481,11 @@ class DeckProviderTest extends TestCase { 'comment' => 123 ]; $expected = [ - 'comment' => 123, + 'comment' => [ + 'type' => 'highlight', + 'id' => 123, + 'name' => 'Comment content' + ] ]; $actual = $this->invokePrivate($this->provider, 'parseParamForComment', [$subjectParams, $params, $event]); $this->assertEquals($expected, $actual);