diff --git a/app/services/slash_commands/interpret_service.rb b/app/services/slash_commands/interpret_service.rb index 78a6e072f26..a7e13648b54 100644 --- a/app/services/slash_commands/interpret_service.rb +++ b/app/services/slash_commands/interpret_service.rb @@ -91,41 +91,35 @@ module SlashCommands end desc 'Assign' - explanation do |user| - "Assigns #{user.to_reference}." if user + explanation do |users| + "Assigns #{users.map(&:to_reference).to_sentence}." if users.any? end params '@user' condition do current_user.can?(:"admin_#{issuable.to_ability_name}", project) end -<<<<<<< HEAD - command :assign do |assignee_param| - user_ids = extract_references(assignee_param, :user).map(&:id) + parse_params do |assignee_param| + users = extract_references(assignee_param, :user) - if user_ids.empty? - user_ids = User.where(username: assignee_param.split(' ').map(&:strip)).pluck(:id) + if users.empty? + users = User.where(username: assignee_param.split(' ').map(&:strip)) end - next if user_ids.empty? + users + end + command :assign do |users| + next if users.empty? if issuable.is_a?(Issue) - @updates[:assignee_ids] = user_ids + @updates[:assignee_ids] = users.map(&:id) else - @updates[:assignee_id] = user_ids.last + @updates[:assignee_id] = users.last.id end -======= - parse_params do |assignee_param| - extract_references(assignee_param, :user).first || - User.find_by(username: assignee_param) - end - command :assign do |user| - @updates[:assignee_id] = user.id if user ->>>>>>> 10c1bf2d77fd0ab21309d0b136cbc0ac11f56c77 end desc 'Remove assignee' explanation do - "Removes assignee #{issuable.assignee.to_reference}." + "Removes assignee #{issuable.assignees.first.to_reference}." end condition do issuable.persisted? && diff --git a/spec/services/slash_commands/interpret_service_spec.rb b/spec/services/slash_commands/interpret_service_spec.rb index 24f2c1407aa..e5e400ee281 100644 --- a/spec/services/slash_commands/interpret_service_spec.rb +++ b/spec/services/slash_commands/interpret_service_spec.rb @@ -874,7 +874,7 @@ describe SlashCommands::InterpretService, services: true do describe 'unassign command' do let(:content) { '/unassign' } - let(:issue) { create(:issue, project: project, assignee: developer) } + let(:issue) { create(:issue, project: project, assignees: [developer]) } it 'includes current assignee reference' do _, explanations = service.explain(content, issue)