PLT-7474 Stopped requiring confirmation for mentions in code blocks (#7375)
* PLT-7474 Stopped requiring confirmation for mentions in code blocks * Stopped mentioning people from code blocks using ~~~
Этот коммит содержится в:
коммит произвёл
Saturnino Abril
родитель
daed8ffbf6
Коммит
575864c917
@@ -4,8 +4,8 @@ describe('PostUtils.containsAtMention', function() {
|
||||
test('should return correct @all (same for @channel)', function() {
|
||||
for (const data of [
|
||||
{
|
||||
text: undefined, //eslint-disable-line no-undefined
|
||||
key: undefined, //eslint-disable-line no-undefined
|
||||
text: undefined, // eslint-disable-line no-undefined
|
||||
key: undefined, // eslint-disable-line no-undefined
|
||||
result: false
|
||||
},
|
||||
{
|
||||
@@ -87,6 +87,56 @@ describe('PostUtils.containsAtMention', function() {
|
||||
text: 'hey @ALL:+1:',
|
||||
key: '@all',
|
||||
result: true
|
||||
},
|
||||
{
|
||||
text: '`@all`',
|
||||
key: '@all',
|
||||
result: false
|
||||
},
|
||||
{
|
||||
text: '@someone `@all`',
|
||||
key: '@all',
|
||||
result: false
|
||||
},
|
||||
{
|
||||
text: '@someone `@all`',
|
||||
key: '@someone',
|
||||
result: true
|
||||
},
|
||||
{
|
||||
text: '``@all``',
|
||||
key: '@all',
|
||||
result: false
|
||||
},
|
||||
{
|
||||
text: '```@all```',
|
||||
key: '@all',
|
||||
result: false
|
||||
},
|
||||
{
|
||||
text: '```\n@all\n```',
|
||||
key: '@all',
|
||||
result: false
|
||||
},
|
||||
{
|
||||
text: '```````\n@all\n```````',
|
||||
key: '@all',
|
||||
result: false
|
||||
},
|
||||
{
|
||||
text: '```code\n@all\n```',
|
||||
key: '@all',
|
||||
result: false
|
||||
},
|
||||
{
|
||||
text: '~~~@all~~~',
|
||||
key: '@all',
|
||||
result: true
|
||||
},
|
||||
{
|
||||
text: '~~~\n@all\n~~~',
|
||||
key: '@all',
|
||||
result: false
|
||||
}
|
||||
]) {
|
||||
const containsAtMention = PostUtils.containsAtMention(data.text, data.key);
|
||||
|
||||
@@ -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, ' ');
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user