diff options
author | Sean McGivern <sean@gitlab.com> | 2019-04-03 08:28:10 +0000 |
---|---|---|
committer | Sean McGivern <sean@gitlab.com> | 2019-04-03 08:28:10 +0000 |
commit | 07cc1885355829d2121d0cc63422efabe14a37d7 (patch) | |
tree | 3bb2c925c3adb6de08fcfd163085f0b36ad5b560 /app | |
parent | 128871be75ce5976042db99154b482673ca1f92e (diff) | |
parent | 3bc30185180cbb5d7c8e026f6e7f1826617358a3 (diff) | |
download | gitlab-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.rb | 19 |
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) |