diff --git a/app/emoji/client/emojiParser.js b/app/emoji/client/emojiParser.js index 809b3c41569ab..e51727ade06b8 100644 --- a/app/emoji/client/emojiParser.js +++ b/app/emoji/client/emojiParser.js @@ -24,12 +24,24 @@ Tracker.autorun(() => { // '
' to '
' for emojis such at line breaks message.html = message.html.replace(/
/g, '
'); - message.html = Object.entries(emoji.packages).reduce((value, [, emojiPackage]) => emojiPackage.render(value), message.html); + // URL RegEx + const urlRegex = /(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/gm; + + Object.keys(emoji.packages).forEach((emojiPackage) => { + // Divide into array + const splitMessage = message.html.split(' '); + for (const urlIndex in splitMessage) { + // Only change emoji for non URLs + if (!splitMessage[urlIndex].match(urlRegex)) { + splitMessage[urlIndex] = emoji.packages[emojiPackage].render(splitMessage[urlIndex]); + } + } + message.html = splitMessage.join(' '); + }); const checkEmojiOnly = $(`
${ message.html }
`); let emojiOnly = true; - for (let i = 0, len = checkEmojiOnly[0].childNodes.length; i < len; i++) { const childNode = checkEmojiOnly[0].childNodes[i];