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.js19
1 files changed, 15 insertions, 4 deletions
diff --git a/app/assets/javascripts/gfm_auto_complete.js b/app/assets/javascripts/gfm_auto_complete.js
index 22f88b1caa7..470c785f7e4 100644
--- a/app/assets/javascripts/gfm_auto_complete.js
+++ b/app/assets/javascripts/gfm_auto_complete.js
@@ -238,10 +238,13 @@ class GfmAutoComplete {
const MEMBER_COMMAND = {
ASSIGN: '/assign',
UNASSIGN: '/unassign',
+ ASSIGN_REVIEWER: '/assign_reviewer',
+ UNASSIGN_REVIEWER: '/unassign_reviewer',
REASSIGN: '/reassign',
CC: '/cc',
};
let assignees = [];
+ let reviewers = [];
let command = '';
// Team Members
@@ -286,9 +289,11 @@ class GfmAutoComplete {
return null;
});
- // Cache assignees list for easier filtering later
+ // Cache assignees & reviewers list for easier filtering later
assignees =
SidebarMediator.singleton?.store?.assignees?.map(createMemberSearchString) || [];
+ reviewers =
+ SidebarMediator.singleton?.store?.reviewers?.map(createMemberSearchString) || [];
const match = GfmAutoComplete.defaultMatcher(flag, subtext, this.app.controllers);
return match && match.length ? match[1] : null;
@@ -309,6 +314,12 @@ class GfmAutoComplete {
} else if (command === MEMBER_COMMAND.UNASSIGN) {
// Only include members which are assigned to Issuable currently
return data.filter((member) => assignees.includes(member.search));
+ } else if (command === MEMBER_COMMAND.ASSIGN_REVIEWER) {
+ // Only include members which are not assigned as a reviewer to Issuable currently
+ return data.filter((member) => !reviewers.includes(member.search));
+ } else if (command === MEMBER_COMMAND.UNASSIGN_REVIEWER) {
+ // Only include members which are not assigned as a reviewer to Issuable currently
+ return data.filter((member) => reviewers.includes(member.search));
}
return data;
@@ -823,10 +834,10 @@ GfmAutoComplete.Members = {
const lowercaseQuery = query.toLowerCase();
const { nameOrUsernameStartsWith, nameOrUsernameIncludes } = GfmAutoComplete.Members;
- return sortBy(members, [
+ return sortBy(
+ members.filter((member) => nameOrUsernameIncludes(member, lowercaseQuery)),
(member) => (nameOrUsernameStartsWith(member, lowercaseQuery) ? -1 : 0),
- (member) => (nameOrUsernameIncludes(member, lowercaseQuery) ? -1 : 0),
- ]);
+ );
},
};
GfmAutoComplete.Labels = {