summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorSean McGivern <sean@gitlab.com>2019-04-03 08:28:10 +0000
committerSean McGivern <sean@gitlab.com>2019-04-03 08:28:10 +0000
commit07cc1885355829d2121d0cc63422efabe14a37d7 (patch)
tree3bb2c925c3adb6de08fcfd163085f0b36ad5b560 /app
parent128871be75ce5976042db99154b482673ca1f92e (diff)
parent3bc30185180cbb5d7c8e026f6e7f1826617358a3 (diff)
downloadgitlab-ce-07cc1885355829d2121d0cc63422efabe14a37d7.tar.gz
Merge branch '53459-quick-action-adds-multiple-labels-to-issue-if-middle-words-overlap-with-existing-label' into 'master'
Resolve "Quick Action Adds Multiple Labels to Issue If Middle Words Overlap with Existing Label" Closes #53459 See merge request gitlab-org/gitlab-ce!26602
Diffstat (limited to 'app')
-rw-r--r--app/services/quick_actions/interpret_service.rb19
1 files changed, 16 insertions, 3 deletions
diff --git a/app/services/quick_actions/interpret_service.rb b/app/services/quick_actions/interpret_service.rb
index f463e08ee7e..8ff73522e5f 100644
--- a/app/services/quick_actions/interpret_service.rb
+++ b/app/services/quick_actions/interpret_service.rb
@@ -96,14 +96,27 @@ module QuickActions
end
def find_labels(labels_params = nil)
+ extract_references(labels_params, :label) | find_labels_by_name_no_tilde(labels_params)
+ end
+
+ def find_labels_by_name_no_tilde(labels_params)
+ return Label.none if label_with_tilde?(labels_params)
+
finder_params = { include_ancestor_groups: true }
finder_params[:project_id] = project.id if project
finder_params[:group_id] = group.id if group
- finder_params[:name] = labels_params.split if labels_params
+ finder_params[:name] = extract_label_names(labels_params) if labels_params
- result = LabelsFinder.new(current_user, finder_params).execute
+ LabelsFinder.new(current_user, finder_params).execute
+ end
+
+ def label_with_tilde?(labels_params)
+ labels_params&.include?('~')
+ end
- extract_references(labels_params, :label) | result
+ def extract_label_names(labels_params)
+ # '"A" "A B C" A B' => ["A", "A B C", "A", "B"]
+ labels_params.scan(/"([^"]+)"|([^ ]+)/).flatten.compact
end
def find_label_references(labels_param)