summaryrefslogtreecommitdiff
path: root/app/services/labels/available_labels_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/labels/available_labels_service.rb')
-rw-r--r--app/services/labels/available_labels_service.rb20
1 files changed, 11 insertions, 9 deletions
diff --git a/app/services/labels/available_labels_service.rb b/app/services/labels/available_labels_service.rb
index 1d022740c44..ff29358df86 100644
--- a/app/services/labels/available_labels_service.rb
+++ b/app/services/labels/available_labels_service.rb
@@ -14,15 +14,16 @@ module Labels
return [] unless labels
- labels = labels.split(',') if labels.is_a?(String)
+ labels = labels.split(',').map(&:strip) if labels.is_a?(String)
+ existing_labels = LabelsFinder.new(current_user, finder_params(labels)).execute.index_by(&:title)
labels.map do |label_name|
label = Labels::FindOrCreateService.new(
current_user,
parent,
include_ancestor_groups: true,
- title: label_name.strip,
- available_labels: available_labels
+ title: label_name,
+ existing_labels_by_title: existing_labels
).execute(find_only: find_only)
label
@@ -45,18 +46,19 @@ module Labels
private
- def finder_params
- params = { include_ancestor_groups: true }
+ def finder_params(titles = nil)
+ finder_params = { include_ancestor_groups: true }
+ finder_params[:title] = titles if titles
case parent
when Group
- params[:group_id] = parent.id
- params[:only_group_labels] = true
+ finder_params[:group_id] = parent.id
+ finder_params[:only_group_labels] = true
when Project
- params[:project_id] = parent.id
+ finder_params[:project_id] = parent.id
end
- params
+ finder_params
end
end
end