summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/gfm_auto_complete.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/gfm_auto_complete.js')
-rw-r--r--app/assets/javascripts/gfm_auto_complete.js31
1 files changed, 11 insertions, 20 deletions
diff --git a/app/assets/javascripts/gfm_auto_complete.js b/app/assets/javascripts/gfm_auto_complete.js
index c5ea4cc92fd..22f88b1caa7 100644
--- a/app/assets/javascripts/gfm_auto_complete.js
+++ b/app/assets/javascripts/gfm_auto_complete.js
@@ -1,6 +1,6 @@
import $ from 'jquery';
import '~/lib/utils/jquery_at_who';
-import { escape, template } from 'lodash';
+import { escape, sortBy, template } from 'lodash';
import * as Emoji from '~/emoji';
import axios from '~/lib/utils/axios_utils';
import { s__, __, sprintf } from '~/locale';
@@ -325,25 +325,7 @@ class GfmAutoComplete {
return items;
}
- const lowercaseQuery = query.toLowerCase();
- const members = items.slice();
- const { nameOrUsernameStartsWith, nameOrUsernameIncludes } = GfmAutoComplete.Members;
-
- return members.sort((a, b) => {
- if (nameOrUsernameStartsWith(a, lowercaseQuery)) {
- return -1;
- }
- if (nameOrUsernameStartsWith(b, lowercaseQuery)) {
- return 1;
- }
- if (nameOrUsernameIncludes(a, lowercaseQuery)) {
- return -1;
- }
- if (nameOrUsernameIncludes(b, lowercaseQuery)) {
- return 1;
- }
- return 0;
- });
+ return GfmAutoComplete.Members.sort(query, items);
},
},
});
@@ -837,6 +819,15 @@ GfmAutoComplete.Members = {
// `member.search` is a name:username string like `MargeSimpson msimpson`
return member.search.toLowerCase().includes(query);
},
+ sort(query, members) {
+ const lowercaseQuery = query.toLowerCase();
+ const { nameOrUsernameStartsWith, nameOrUsernameIncludes } = GfmAutoComplete.Members;
+
+ return sortBy(members, [
+ (member) => (nameOrUsernameStartsWith(member, lowercaseQuery) ? -1 : 0),
+ (member) => (nameOrUsernameIncludes(member, lowercaseQuery) ? -1 : 0),
+ ]);
+ },
};
GfmAutoComplete.Labels = {
templateFunction(color, title) {