diff options
Diffstat (limited to 'webapp/utils')
-rw-r--r-- | webapp/utils/post_utils.jsx | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/webapp/utils/post_utils.jsx b/webapp/utils/post_utils.jsx index 1ff16a5ab..d37e6c26d 100644 --- a/webapp/utils/post_utils.jsx +++ b/webapp/utils/post_utils.jsx @@ -113,5 +113,15 @@ export function containsAtMention(text, key) { } // This doesn't work for at mentions containing periods or hyphens - return new RegExp(`\\B${key}\\b`, 'i').test(text); + return new RegExp(`\\B${key}\\b`, 'i').test(removeCode(text)); +} + +// Returns a given text string with all Markdown code replaced with whitespace. +export function removeCode(text) { + // These patterns should match the ones in app/notification.go, except JavaScript doesn't + // support \z for the end of the text in multiline mode, so we use $(?![\r\n]) + const codeBlockPattern = /^[^\S\n]*[`~]{3}.*$[\s\S]+?(^[^\S\n]*[`~]{3}$|$(?![\r\n]))/m; + const inlineCodePattern = /`+(?:.+?|.*?\n(.*?\S.*?\n)*.*?)`+/m; + + return text.replace(codeBlockPattern, '').replace(inlineCodePattern, ' '); } |