diff options
author | Harrison Healey <harrisonmhealey@gmail.com> | 2016-08-29 09:50:00 -0400 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2016-08-29 09:50:00 -0400 |
commit | 167dd22eefeeeb9c1eaebd990a4f5902bd366302 (patch) | |
tree | 6ddb15a80b2a608d42e20df72b98c0ae72821671 /webapp/utils/utils.jsx | |
parent | 55342e8fe16613f06528ed1aa726231e9b597d26 (diff) | |
download | chat-167dd22eefeeeb9c1eaebd990a4f5902bd366302.tar.gz chat-167dd22eefeeeb9c1eaebd990a4f5902bd366302.tar.bz2 chat-167dd22eefeeeb9c1eaebd990a4f5902bd366302.zip |
PLT-1752/PLT-3567/PLT-3998 Highlighting links in search, unit tests for autolinking (#3865)
* Added highlighting to links when their URL includes the search term
* Decoupling UserStore from react-router to allow for unit tests involving it
* PLT-3998 Added SiteURL as an option to be passed into the text formatting code
* Removed reference to PreferenceStore and window from TextFormatting
* Refactored TextFormatting to remove remaining browser-only code
* Updated ChannelHeader and MessageWrapper to match the changes to TextFormatting
* Increased max listeners for Preference and Emoji stores
* PLT-3832 Added automated unit tests for autolinking
* PLT-3567 Rerender posts when mention keywords change
* Updated RHS and search to match the changes to TextFormatting
* Broke TextFormatting's dependency on the UserStore
Diffstat (limited to 'webapp/utils/utils.jsx')
-rw-r--r-- | webapp/utils/utils.jsx | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/webapp/utils/utils.jsx b/webapp/utils/utils.jsx index a880c1783..3059ce529 100644 --- a/webapp/utils/utils.jsx +++ b/webapp/utils/utils.jsx @@ -1344,3 +1344,27 @@ export function isValidPassword(password) { export function getSiteURL() { return global.mm_config.SiteURL || window.location.origin; } + +export function handleFormattedTextClick(e) { + const mentionAttribute = e.target.getAttributeNode('data-mention'); + const hashtagAttribute = e.target.getAttributeNode('data-hashtag'); + const linkAttribute = e.target.getAttributeNode('data-link'); + + if (mentionAttribute) { + e.preventDefault(); + + searchForTerm(mentionAttribute.value); + } else if (hashtagAttribute) { + e.preventDefault(); + + searchForTerm(hashtagAttribute.value); + } else if (linkAttribute) { + const MIDDLE_MOUSE_BUTTON = 1; + + if (!(e.button === MIDDLE_MOUSE_BUTTON || e.altKey || e.ctrlKey || e.metaKey || e.shiftKey)) { + e.preventDefault(); + + browserHistory.push(linkAttribute.value); + } + } +}
\ No newline at end of file |