summaryrefslogtreecommitdiff
path: root/app/services
diff options
context:
space:
mode:
authorValery Sizov <valery@gitlab.com>2017-06-06 11:49:36 +0300
committerValery Sizov <valery@gitlab.com>2017-06-07 09:47:26 +0300
commit223b87d7b1eccfc844631118e454c69a6312004d (patch)
tree118e73eb1974eee04d7d3aaff3b64c490aa48049 /app/services
parent1d5e5f754df345d7e3748bef4030b7210cff63c9 (diff)
downloadgitlab-ce-223b87d7b1eccfc844631118e454c69a6312004d.tar.gz
Backport Fix '/unassign' slash commandbackport_fix_slash_commands_for_multiple_assignee
Diffstat (limited to 'app/services')
-rw-r--r--app/services/slash_commands/interpret_service.rb24
1 files changed, 15 insertions, 9 deletions
diff --git a/app/services/slash_commands/interpret_service.rb b/app/services/slash_commands/interpret_service.rb
index a7e13648b54..b6b411d2185 100644
--- a/app/services/slash_commands/interpret_service.rb
+++ b/app/services/slash_commands/interpret_service.rb
@@ -92,26 +92,20 @@ module SlashCommands
desc 'Assign'
explanation do |users|
- "Assigns #{users.map(&:to_reference).to_sentence}." if users.any?
+ "Assigns #{users.first.to_reference}." if users.any?
end
params '@user'
condition do
current_user.can?(:"admin_#{issuable.to_ability_name}", project)
end
parse_params do |assignee_param|
- users = extract_references(assignee_param, :user)
-
- if users.empty?
- users = User.where(username: assignee_param.split(' ').map(&:strip))
- end
-
- users
+ extract_users(assignee_param)
end
command :assign do |users|
next if users.empty?
if issuable.is_a?(Issue)
- @updates[:assignee_ids] = users.map(&:id)
+ @updates[:assignee_ids] = [users.last.id]
else
@updates[:assignee_id] = users.last.id
end
@@ -459,6 +453,18 @@ module SlashCommands
end
end
+ def extract_users(params)
+ return [] if params.nil?
+
+ users = extract_references(params, :user)
+
+ if users.empty?
+ users = User.where(username: params.split(' ').map(&:strip))
+ end
+
+ users
+ end
+
def find_labels(labels_param)
extract_references(labels_param, :label) |
LabelsFinder.new(current_user, project_id: project.id, name: labels_param.split).execute