From d25a515f9e0889c9bbd366ef296ecb68de230d80 Mon Sep 17 00:00:00 2001 From: Gabriel Delavald Date: Fri, 30 Jun 2017 17:36:27 -0300 Subject: [PATCH 1/3] Refactoring markdowncode a bit and fixes messages showing unescaped when just sent --- packages/rocketchat-markdown/markdowncode.js | 31 ++++++------------- packages/rocketchat-mentions/Mentions.js | 3 +- .../client/renderMessageBody.js | 6 ++-- 3 files changed, 13 insertions(+), 27 deletions(-) diff --git a/packages/rocketchat-markdown/markdowncode.js b/packages/rocketchat-markdown/markdowncode.js index 65f00ce79ff1..e00b030d01bc 100644 --- a/packages/rocketchat-markdown/markdowncode.js +++ b/packages/rocketchat-markdown/markdowncode.js @@ -60,29 +60,16 @@ class MarkdownCode { if (codeMatch != null) { // Process highlight if this part is code - let code; - let lang; - let result; const singleLine = codeMatch[0].indexOf('\n') === -1; - - if (singleLine) { - lang = ''; - code = _.unescapeHTML(codeMatch[1] + codeMatch[2]); - } else { - lang = codeMatch[1]; - code = _.unescapeHTML(codeMatch[2]); - } - - if (s.trim(lang) === '') { - lang = ''; - } - - if (!Array.from(hljs.listLanguages()).includes(s.trim(lang))) { - result = hljs.highlightAuto((lang + code)); - } else { - result = hljs.highlight(s.trim(lang), code); - } - + const lang = !singleLine && Array.from(hljs.listLanguages()).includes(s.trim(codeMatch[1])) ? s.trim(codeMatch[1]) : ''; + const code = + singleLine ? + _.unescapeHTML(codeMatch[1]) : + lang === '' ? + _.unescapeHTML(codeMatch[1] + codeMatch[2]) : + _.unescapeHTML(codeMatch[2]); + + const result = lang === '' ? hljs.highlightAuto((lang + code)) : hljs.highlight(lang, code); const token = `=!=${ Random.id() }=!=`; message.tokens.push({ diff --git a/packages/rocketchat-mentions/Mentions.js b/packages/rocketchat-mentions/Mentions.js index 55959a9bed54..c9a744a9ac40 100644 --- a/packages/rocketchat-mentions/Mentions.js +++ b/packages/rocketchat-mentions/Mentions.js @@ -50,7 +50,8 @@ export default class { }); } replaceChannels(str, message) { - return str.replace(this.channelMentionRegex, (match, name) => { + //since apostrophe escaped contains # we need to unescape it + return str.replace(/'/g, '\'').replace(this.channelMentionRegex, (match, name) => { if (message.temp == null && _.findWhere(message.channels, {name}) == null) { return match; } diff --git a/packages/rocketchat-ui-message/client/renderMessageBody.js b/packages/rocketchat-ui-message/client/renderMessageBody.js index ec6dc6a89056..ebaa6a9eded4 100644 --- a/packages/rocketchat-ui-message/client/renderMessageBody.js +++ b/packages/rocketchat-ui-message/client/renderMessageBody.js @@ -1,10 +1,8 @@ /* global renderMessageBody:true */ renderMessageBody = function(msg) { - msg.html = msg.msg; - - if (_.trim(msg.html) !== '') { - msg.html = _.escapeHTML(msg.html); + if (_.trim(msg.msg) !== '') { + msg.html = _.escapeHTML(msg.msg); } const message = RocketChat.callbacks.run('renderMessage', msg); From ab28c73e1788d290066fdcb6b893070b3d3eb7d6 Mon Sep 17 00:00:00 2001 From: Gabriel Delavald Date: Fri, 30 Jun 2017 18:04:47 -0300 Subject: [PATCH 2/3] lint fix --- packages/rocketchat-ui-message/client/renderMessageBody.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rocketchat-ui-message/client/renderMessageBody.js b/packages/rocketchat-ui-message/client/renderMessageBody.js index ebaa6a9eded4..9babc5e7025b 100644 --- a/packages/rocketchat-ui-message/client/renderMessageBody.js +++ b/packages/rocketchat-ui-message/client/renderMessageBody.js @@ -2,7 +2,7 @@ renderMessageBody = function(msg) { if (_.trim(msg.msg) !== '') { - msg.html = _.escapeHTML(msg.msg); + msg.html = _.escapeHTML(msg.msg); } const message = RocketChat.callbacks.run('renderMessage', msg); From 8924b67c16e632cd325eb12cf84b1f024ea79f8a Mon Sep 17 00:00:00 2001 From: Gabriel Delavald Date: Mon, 3 Jul 2017 17:36:31 -0300 Subject: [PATCH 3/3] Rollback changes to renderMessageBody which were causing exception --- packages/rocketchat-ui-message/client/renderMessageBody.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/rocketchat-ui-message/client/renderMessageBody.js b/packages/rocketchat-ui-message/client/renderMessageBody.js index 9babc5e7025b..ec6dc6a89056 100644 --- a/packages/rocketchat-ui-message/client/renderMessageBody.js +++ b/packages/rocketchat-ui-message/client/renderMessageBody.js @@ -1,8 +1,10 @@ /* global renderMessageBody:true */ renderMessageBody = function(msg) { - if (_.trim(msg.msg) !== '') { - msg.html = _.escapeHTML(msg.msg); + msg.html = msg.msg; + + if (_.trim(msg.html) !== '') { + msg.html = _.escapeHTML(msg.html); } const message = RocketChat.callbacks.run('renderMessage', msg);