diff --git a/web/public/assets/js/app/__tests__/message-replies.test.js b/web/public/assets/js/app/__tests__/message-replies.test.js index 95c07cc..492c4f8 100644 --- a/web/public/assets/js/app/__tests__/message-replies.test.js +++ b/web/public/assets/js/app/__tests__/message-replies.test.js @@ -100,5 +100,5 @@ test('buildMessageBody suppresses reaction slot markers and formats counts', () renderEmojiHtml: value => `EMOJI(${value})` }); - assert.equal(countedBody, 'EMOJI(✨)'); + assert.equal(countedBody, 'EMOJI(✨) ESC(×2)'); }); diff --git a/web/public/assets/js/app/message-replies.js b/web/public/assets/js/app/message-replies.js index a12a16f..01bb210 100644 --- a/web/public/assets/js/app/message-replies.js +++ b/web/public/assets/js/app/message-replies.js @@ -360,6 +360,7 @@ export function buildMessageBody({ message, escapeHtml, renderEmojiHtml }) { const segments = []; const reaction = isReactionMessage(message); const textSegment = resolveMessageTextSegment(message, reaction); + const reactionCount = reaction && textSegment && /^×\d+$/.test(textSegment) ? textSegment : null; if (textSegment && !reaction) { segments.push(escapeHtml(textSegment)); } @@ -367,6 +368,9 @@ export function buildMessageBody({ message, escapeHtml, renderEmojiHtml }) { if (emoji) { segments.push(renderEmojiHtml(emoji)); } + if (reactionCount) { + segments.push(escapeHtml(reactionCount)); + } if (segments.length === 0) { return '';