diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-04-21 02:50:22 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-04-21 02:50:22 +0300 |
commit | 9dc93a4519d9d5d7be48ff274127136236a3adb3 (patch) | |
tree | 70467ae3692a0e35e5ea56bcb803eb512a10bedb /app/services/issuable | |
parent | 4b0f34b6d759d6299322b3a54453e930c6121ff0 (diff) |
Add latest changes from gitlab-org/gitlab@13-11-stable-eev13.11.0-rc43
Diffstat (limited to 'app/services/issuable')
-rw-r--r-- | app/services/issuable/bulk_update_service.rb | 17 | ||||
-rw-r--r-- | app/services/issuable/destroy_service.rb | 34 | ||||
-rw-r--r-- | app/services/issuable/process_assignees.rb | 9 |
3 files changed, 47 insertions, 13 deletions
diff --git a/app/services/issuable/bulk_update_service.rb b/app/services/issuable/bulk_update_service.rb index d3d543edcd7..8bcbb92cd0e 100644 --- a/app/services/issuable/bulk_update_service.rb +++ b/app/services/issuable/bulk_update_service.rb @@ -7,7 +7,9 @@ module Issuable attr_accessor :parent, :current_user, :params def initialize(parent, user = nil, params = {}) - @parent, @current_user, @params = parent, user, params.dup + @parent = parent + @current_user = user + @params = params.dup end def execute(type) @@ -15,7 +17,7 @@ module Issuable set_update_params(type) items = update_issuables(type, ids) - response_success(payload: { count: items.count }) + response_success(payload: { count: items.size }) rescue ArgumentError => e response_error(e.message, 422) end @@ -59,10 +61,17 @@ module Issuable def find_issuables(parent, model_class, ids) if parent.is_a?(Project) - model_class.id_in(ids).of_projects(parent) + projects = parent elsif parent.is_a?(Group) - model_class.id_in(ids).of_projects(parent.all_projects) + projects = parent.all_projects + else + return end + + model_class + .id_in(ids) + .of_projects(projects) + .includes_for_bulk_update end def response_success(message: nil, payload: nil) diff --git a/app/services/issuable/destroy_service.rb b/app/services/issuable/destroy_service.rb index 4c64655a622..d5aa84d8d6c 100644 --- a/app/services/issuable/destroy_service.rb +++ b/app/services/issuable/destroy_service.rb @@ -3,12 +3,36 @@ module Issuable class DestroyService < IssuableBaseService def execute(issuable) - TodoService.new.destroy_target(issuable) do |issuable| - if issuable.destroy - issuable.update_project_counter_caches - issuable.assignees.each(&:invalidate_cache_counts) - end + if issuable.destroy + after_destroy(issuable) + end + end + + private + + def after_destroy(issuable) + delete_todos(issuable) + issuable.update_project_counter_caches + issuable.assignees.each(&:invalidate_cache_counts) + end + + def group_for(issuable) + issuable.resource_parent.group + end + + def delete_todos(issuable) + actor = group_for(issuable) + + if Feature.enabled?(:destroy_issuable_todos_async, actor, default_enabled: :yaml) + TodosDestroyer::DestroyedIssuableWorker + .perform_async(issuable.id, issuable.class.name) + else + TodosDestroyer::DestroyedIssuableWorker + .new + .perform(issuable.id, issuable.class.name) end end end end + +Issuable::DestroyService.prepend_if_ee('EE::Issuable::DestroyService') diff --git a/app/services/issuable/process_assignees.rb b/app/services/issuable/process_assignees.rb index c9c6b0bed85..1ef6d3d9c42 100644 --- a/app/services/issuable/process_assignees.rb +++ b/app/services/issuable/process_assignees.rb @@ -14,12 +14,13 @@ module Issuable end def execute - if assignee_ids.blank? - updated_new_assignees = new_assignee_ids + updated_new_assignees = new_assignee_ids + + if add_assignee_ids.blank? && remove_assignee_ids.blank? + updated_new_assignees = assignee_ids if assignee_ids + else updated_new_assignees |= add_assignee_ids if add_assignee_ids updated_new_assignees -= remove_assignee_ids if remove_assignee_ids - else - updated_new_assignees = assignee_ids end updated_new_assignees.uniq |