mirror of
https://github.com/element-hq/synapse
synced 2024-09-04 20:40:06 +00:00
SYWEB-48: Better regex for binging on usernames.
This uses /\blocalpart\b|\bdisplayname\b/i which is overall a lot better than before. This specifically gets @localpart references which the bug was originally for.
This commit is contained in:
parent
beae9acfcc
commit
0f192579ac
1 changed files with 28 additions and 1 deletions
|
@ -58,14 +58,29 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) {
|
||||||
var shouldBing = false;
|
var shouldBing = false;
|
||||||
|
|
||||||
// case-insensitive name check for user_id OR display_name if they exist
|
// case-insensitive name check for user_id OR display_name if they exist
|
||||||
|
var userRegex = "";
|
||||||
var myUserId = matrixService.config().user_id;
|
var myUserId = matrixService.config().user_id;
|
||||||
if (myUserId) {
|
if (myUserId) {
|
||||||
myUserId = myUserId.toLocaleLowerCase();
|
var localpart = getLocalPartFromUserId(myUserId);
|
||||||
|
if (localpart) {
|
||||||
|
localpart = localpart.toLocaleLowerCase();
|
||||||
|
userRegex += "\\b" + localpart + "\\b";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
var myDisplayName = matrixService.config().display_name;
|
var myDisplayName = matrixService.config().display_name;
|
||||||
if (myDisplayName) {
|
if (myDisplayName) {
|
||||||
myDisplayName = myDisplayName.toLocaleLowerCase();
|
myDisplayName = myDisplayName.toLocaleLowerCase();
|
||||||
|
if (userRegex.length > 0) {
|
||||||
|
userRegex += "|";
|
||||||
|
}
|
||||||
|
userRegex += "\\b" + myDisplayName + "\\b";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var r = new RegExp(userRegex, 'i');
|
||||||
|
if (content.search(r) >= 0) {
|
||||||
|
shouldBing = true;
|
||||||
|
}
|
||||||
|
|
||||||
if ( (myDisplayName && content.toLocaleLowerCase().indexOf(myDisplayName) != -1) ||
|
if ( (myDisplayName && content.toLocaleLowerCase().indexOf(myDisplayName) != -1) ||
|
||||||
(myUserId && content.toLocaleLowerCase().indexOf(myUserId) != -1) ) {
|
(myUserId && content.toLocaleLowerCase().indexOf(myUserId) != -1) ) {
|
||||||
shouldBing = true;
|
shouldBing = true;
|
||||||
|
@ -84,6 +99,18 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) {
|
||||||
return shouldBing;
|
return shouldBing;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var getLocalPartFromUserId = function(user_id) {
|
||||||
|
if (!user_id) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
var localpartRegex = /@(.*):\w+/i
|
||||||
|
var results = localpartRegex.exec(user_id);
|
||||||
|
if (results && results.length == 2) {
|
||||||
|
return results[1];
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
var initialSyncDeferred;
|
var initialSyncDeferred;
|
||||||
|
|
||||||
var reset = function() {
|
var reset = function() {
|
||||||
|
|
Loading…
Reference in a new issue