From 2be255a423ccb3a638442e593c2c18cee2c0f7c5 Mon Sep 17 00:00:00 2001 From: George Secrieru <george.secrieru@gmail.com> Date: Tue, 15 Sep 2015 18:21:54 -0300 Subject: [PATCH] Only converting into link the strings starting with a hash (#) that are currently naming a channel (should close #807) --- packages/rocketchat-mentions/client.coffee | 3 +++ packages/rocketchat-mentions/server.coffee | 14 ++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/packages/rocketchat-mentions/client.coffee b/packages/rocketchat-mentions/client.coffee index fe255bd2fd3..2e981a15121 100644 --- a/packages/rocketchat-mentions/client.coffee +++ b/packages/rocketchat-mentions/client.coffee @@ -39,6 +39,9 @@ class MentionsClient channels = _.unique channels channels = channels.join('|') msg = msg.replace new RegExp("(?:^|\\s|\\n)(#(#{channels}))\\b", 'g'), (match, mention, channel) -> + if not message.temp? + if not _.findWhere(message.channels, {name: channel})? + return match return match.replace mention, "<a href=\"\" class=\"mention-link\" data-channel=\"#{channel}\">#{mention}</a>" diff --git a/packages/rocketchat-mentions/server.coffee b/packages/rocketchat-mentions/server.coffee index 3526500d546..781a3349b36 100644 --- a/packages/rocketchat-mentions/server.coffee +++ b/packages/rocketchat-mentions/server.coffee @@ -23,6 +23,20 @@ class MentionsServer verifiedMentions.push verifiedMention if verifiedMention? if verifiedMentions.length isnt 0 message.mentions = verifiedMentions + + channels = [] + message.msg.replace /(?:^|\s|\n)(?:#)([A-Za-z0-9-_.]+)/g, (match, mention) -> + channels.push mention + + if channels.length isnt 0 + channels = _.unique channels + verifiedChannels = [] + channels.forEach (mention) -> + verifiedChannel = ChatRoom.findOne({ name: mention, t: 'c' }, { fields: {_id: 1, name: 1 } }) + verifiedChannels.push verifiedChannel if verifiedChannel? + + if verifiedChannels.length isnt 0 + message.channels = verifiedChannels return message RocketChat.callbacks.add 'beforeSaveMessage', MentionsServer \ No newline at end of file -- GitLab