diff options
author | Douwe Maan <douwe@selenight.nl> | 2018-09-14 18:53:54 +0300 |
---|---|---|
committer | Douwe Maan <douwe@selenight.nl> | 2018-09-26 16:28:40 +0300 |
commit | 8811692c6a4d846e4506fdb9522b649c73fe4362 (patch) | |
tree | fcbb56d1fcbe4c85a87dc5907f6ead71bb5be65c /app/services/quick_actions | |
parent | 4007456808a9d18858b2c117b9cc6fee91d26ed6 (diff) |
Make using assign and unassign quick actions together work as expected
Diffstat (limited to 'app/services/quick_actions')
-rw-r--r-- | app/services/quick_actions/interpret_service.rb | 28 |
1 files changed, 12 insertions, 16 deletions
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| |