summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouwe Maan <douwe@selenight.nl>2018-09-14 17:53:54 +0200
committerDouwe Maan <douwe@selenight.nl>2018-09-25 12:37:34 +0200
commit4cdbbbe1806e89f8e9d1c568d41f5d91d65c4f49 (patch)
treeed207b371d2e01d1aaf9d11ef1e8fb0df6d47c0c
parent4007456808a9d18858b2c117b9cc6fee91d26ed6 (diff)
downloadgitlab-ce-dm-fix-assign-unassign-quick-actions.tar.gz
Make using assign and unassign quick actions together work as expecteddm-fix-assign-unassign-quick-actions
-rw-r--r--app/services/quick_actions/interpret_service.rb30
-rw-r--r--changelogs/unreleased/dm-fix-assign-unassign-quick-actions.yml6
2 files changed, 19 insertions, 17 deletions
diff --git a/app/services/quick_actions/interpret_service.rb b/app/services/quick_actions/interpret_service.rb
index 02d68c3add3..96021562196 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,17 +162,15 @@ 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|
"Sets the milestone to #{milestone.to_reference}." if 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