diff options
Diffstat (limited to 'app/services/issues/update_service.rb')
-rw-r--r-- | app/services/issues/update_service.rb | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/app/services/issues/update_service.rb b/app/services/issues/update_service.rb index b9832400302..127ed04cf51 100644 --- a/app/services/issues/update_service.rb +++ b/app/services/issues/update_service.rb @@ -9,7 +9,7 @@ module Issues handle_move_between_ids(issue) filter_spam_check_params change_issue_duplicate(issue) - move_issue_to_new_project(issue) || update_task_event(issue) || update(issue) + move_issue_to_new_project(issue) || clone_issue(issue) || update_task_event(issue) || update(issue) end def update(issue) @@ -34,7 +34,6 @@ module Issues end def after_update(issue) - add_incident_label(issue) IssuesChannel.broadcast_to(issue, event: 'updated') if Gitlab::ActionCable::Config.in_app? || Feature.enabled?(:broadcast_issue_updates, issue.project) end @@ -127,6 +126,18 @@ module Issues private + def clone_issue(issue) + target_project = params.delete(:target_clone_project) + with_notes = params.delete(:clone_with_notes) + + return unless target_project && + issue.can_clone?(current_user, target_project) + + # we've pre-empted this from running in #execute, so let's go ahead and update the Issue now. + update(issue) + Issues::CloneService.new(project, current_user).execute(issue, target_project, with_notes: with_notes) + end + def create_merge_request_from_quick_action create_merge_request_params = params.delete(:create_merge_request) return unless create_merge_request_params |