Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/work_items')
-rw-r--r--app/services/work_items/create_service.rb15
-rw-r--r--app/services/work_items/widgets/labels_service/base_service.rb25
-rw-r--r--app/services/work_items/widgets/labels_service/create_service.rb18
-rw-r--r--app/services/work_items/widgets/labels_service/update_service.rb12
4 files changed, 60 insertions, 10 deletions
diff --git a/app/services/work_items/create_service.rb b/app/services/work_items/create_service.rb
index f9eadc3fb60..e1e6063c8ac 100644
--- a/app/services/work_items/create_service.rb
+++ b/app/services/work_items/create_service.rb
@@ -53,6 +53,21 @@ module WorkItems
end
end
+ def prepare_create_params(work_item)
+ execute_widgets(
+ work_item: work_item,
+ callback: :prepare_create_params,
+ widget_params: @widget_params,
+ service_params: params
+ )
+
+ super
+ end
+
+ def parent
+ container
+ end
+
private
override :handle_quick_actions
diff --git a/app/services/work_items/widgets/labels_service/base_service.rb b/app/services/work_items/widgets/labels_service/base_service.rb
new file mode 100644
index 00000000000..2d679c1f18c
--- /dev/null
+++ b/app/services/work_items/widgets/labels_service/base_service.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+module WorkItems
+ module Widgets
+ module LabelsService
+ class BaseService < WorkItems::Widgets::BaseService
+ private
+
+ def prepare_params(params: {}, permitted_params: [])
+ clear_label_params(params) if new_type_excludes_widget?
+
+ return if params.blank?
+ return unless has_permission?(:set_work_item_metadata)
+
+ service_params.merge!(params.slice(*permitted_params))
+ end
+
+ def clear_label_params(params)
+ params[:remove_label_ids] = @work_item.labels.map(&:id)
+ params[:add_label_ids] = []
+ end
+ end
+ end
+ end
+end
diff --git a/app/services/work_items/widgets/labels_service/create_service.rb b/app/services/work_items/widgets/labels_service/create_service.rb
new file mode 100644
index 00000000000..bed6be173cc
--- /dev/null
+++ b/app/services/work_items/widgets/labels_service/create_service.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+module WorkItems
+ module Widgets
+ module LabelsService
+ class CreateService < BaseService
+ def prepare_create_params(params: {})
+ prepare_params(params: params, permitted_params: %i[add_label_ids remove_label_ids label_ids])
+ end
+
+ def clear_label_params(params)
+ params[:add_label_ids] = []
+ params[:label_ids] = []
+ end
+ end
+ end
+ end
+end
diff --git a/app/services/work_items/widgets/labels_service/update_service.rb b/app/services/work_items/widgets/labels_service/update_service.rb
index b0791571924..780451e3eae 100644
--- a/app/services/work_items/widgets/labels_service/update_service.rb
+++ b/app/services/work_items/widgets/labels_service/update_service.rb
@@ -3,17 +3,9 @@
module WorkItems
module Widgets
module LabelsService
- class UpdateService < WorkItems::Widgets::BaseService
+ class UpdateService < BaseService
def prepare_update_params(params: {})
- if new_type_excludes_widget?
- params[:remove_label_ids] = @work_item.labels.map(&:id)
- params[:add_label_ids] = []
- end
-
- return if params.blank?
- return unless has_permission?(:set_work_item_metadata)
-
- service_params.merge!(params.slice(:add_label_ids, :remove_label_ids))
+ prepare_params(params: params, permitted_params: %i[add_label_ids remove_label_ids])
end
end
end