mirror of
https://github.com/element-hq/element-web
synced 2024-11-28 04:21:57 +03:00
Merge pull request #111 from matrix-org/kegan/search-on-mxid-and-displayname
Match entities based on uid/displayname and include partials/stripping
This commit is contained in:
commit
ed3a112e5c
1 changed files with 27 additions and 2 deletions
|
@ -17,6 +17,31 @@ limitations under the License.
|
|||
var React = require('react');
|
||||
var sdk = require('./index');
|
||||
|
||||
function isMatch(query, name, uid) {
|
||||
query = query.toLowerCase();
|
||||
name = name.toLowerCase();
|
||||
uid = uid.toLowerCase();
|
||||
|
||||
// direct prefix matches
|
||||
if (name.indexOf(query) === 0 || uid.indexOf(query) === 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// strip @ on uid and try matching again
|
||||
if (uid.length > 1 && uid[0] === "@" && uid.substring(1).indexOf(query) === 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// split spaces in name and try matching constituent parts
|
||||
var parts = name.split(" ");
|
||||
for (var i = 0; i < parts.length; i++) {
|
||||
if (parts[i].indexOf(query) === 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Converts various data models to Entity objects.
|
||||
*
|
||||
|
@ -49,7 +74,7 @@ class MemberEntity extends Entity {
|
|||
}
|
||||
|
||||
matches(queryString) {
|
||||
return this.model.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0;
|
||||
return isMatch(queryString, this.model.name, this.model.userId);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -77,7 +102,7 @@ class UserEntity extends Entity {
|
|||
|
||||
matches(queryString) {
|
||||
var name = this.model.displayName || this.model.userId;
|
||||
return name.toLowerCase().indexOf(queryString.toLowerCase()) === 0;
|
||||
return isMatch(queryString, name, this.model.userId);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue