Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit eac66f0

Browse files
authored
Merge pull request #3783 from matrix-org/t3chguy/fuzzy_sort_memberlist
fuzzy-sort MemberList
2 parents c79bd79 + f9e386a commit eac66f0

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

src/components/views/rooms/MemberList.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ const INITIAL_LOAD_NUM_MEMBERS = 30;
3232
const INITIAL_LOAD_NUM_INVITED = 5;
3333
const SHOW_MORE_INCREMENT = 100;
3434

35+
// Regex applied to filter our punctuation in member names before applying sort, to fuzzy it a little
36+
// matches all ASCII punctuation: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
37+
const SORT_REGEX = /[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]+/g;
38+
3539
module.exports = createReactClass({
3640
displayName: 'MemberList',
3741

@@ -336,10 +340,13 @@ module.exports = createReactClass({
336340
}
337341

338342
// Fourth by name (alphabetical)
339-
const nameA = memberA.name[0] === '@' ? memberA.name.substr(1) : memberA.name;
340-
const nameB = memberB.name[0] === '@' ? memberB.name.substr(1) : memberB.name;
343+
const nameA = (memberA.name[0] === '@' ? memberA.name.substr(1) : memberA.name).replace(SORT_REGEX, "");
344+
const nameB = (memberB.name[0] === '@' ? memberB.name.substr(1) : memberB.name).replace(SORT_REGEX, "");
341345
// console.log(`Comparing userA_name=${nameA} against userB_name=${nameB} - returning`);
342-
return nameA.localeCompare(nameB);
346+
return nameA.localeCompare(nameB, {
347+
ignorePunctuation: true,
348+
sensitivity: "base",
349+
});
343350
},
344351

345352
onSearchQueryChanged: function(searchQuery) {

0 commit comments

Comments
 (0)