From 8811692c6a4d846e4506fdb9522b649c73fe4362 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Fri, 14 Sep 2018 17:53:54 +0200 Subject: [PATCH] Make using assign and unassign quick actions together work as expected --- .../quick_actions/interpret_service.rb | 28 ++++++++----------- .../dm-fix-assign-unassign-quick-actions.yml | 6 ++++ 2 files changed, 18 insertions(+), 16 deletions(-) create mode 100644 changelogs/unreleased/dm-fix-assign-unassign-quick-actions.yml diff --git a/app/services/quick_actions/interpret_service.rb b/app/services/quick_actions/interpret_service.rb index 02d68c3add3..ceb01c8dc73 100644 --- a/app/services/quick_actions/interpret_service.rb +++ b/app/services/quick_actions/interpret_service.rb @@ -126,18 +126,16 @@ module QuickActions parse_params do |assignee_param| extract_users(assignee_param) end - # rubocop: disable CodeReuse/ActiveRecord command :assign do |users| next if users.empty? - @updates[:assignee_ids] = - if issuable.allows_multiple_assignees? - issuable.assignees.pluck(:id) + users.map(&:id) - else - [users.first.id] - end + if issuable.allows_multiple_assignees? + @updates[:assignee_ids] ||= issuable.assignees.map(&:id) + @updates[:assignee_ids] += users.map(&:id) + else + @updates[:assignee_ids] = [users.first.id] + end end - # rubocop: enable CodeReuse/ActiveRecord desc do if issuable.allows_multiple_assignees? @@ -164,16 +162,14 @@ module QuickActions # When multiple users are assigned, all will be unassigned if multiple assignees are no longer allowed extract_users(unassign_param) if issuable.allows_multiple_assignees? end - # rubocop: disable CodeReuse/ActiveRecord command :unassign do |users = nil| - @updates[:assignee_ids] = - if users&.any? - issuable.assignees.pluck(:id) - users.map(&:id) - else - [] - end + if issuable.allows_multiple_assignees? && users&.any? + @updates[:assignee_ids] ||= issuable.assignees.map(&:id) + @updates[:assignee_ids] -= users.map(&:id) + else + @updates[:assignee_ids] = [] + end end - # rubocop: enable CodeReuse/ActiveRecord desc 'Set milestone' explanation do |milestone| diff --git a/changelogs/unreleased/dm-fix-assign-unassign-quick-actions.yml b/changelogs/unreleased/dm-fix-assign-unassign-quick-actions.yml new file mode 100644 index 00000000000..bfc1ff7b8af --- /dev/null +++ b/changelogs/unreleased/dm-fix-assign-unassign-quick-actions.yml @@ -0,0 +1,6 @@ +--- +title: Don't ignore first action when assign and unassign quick actions are used in + the same comment +merge_request: 21749 +author: +type: fixed