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:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-08-19 12:08:42 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-08-19 12:08:42 +0300
commitb76ae638462ab0f673e5915986070518dd3f9ad3 (patch)
treebdab0533383b52873be0ec0eb4d3c66598ff8b91 /app/services/draft_notes/publish_service.rb
parent434373eabe7b4be9593d18a585fb763f1e5f1a6f (diff)
Add latest changes from gitlab-org/gitlab@14-2-stable-eev14.2.0-rc42
Diffstat (limited to 'app/services/draft_notes/publish_service.rb')
-rw-r--r--app/services/draft_notes/publish_service.rb30
1 files changed, 23 insertions, 7 deletions
diff --git a/app/services/draft_notes/publish_service.rb b/app/services/draft_notes/publish_service.rb
index d73c3417a8b..3a1db16aaf4 100644
--- a/app/services/draft_notes/publish_service.rb
+++ b/app/services/draft_notes/publish_service.rb
@@ -32,26 +32,28 @@ module DraftNotes
review = Review.create!(author: current_user, merge_request: merge_request, project: project)
- draft_notes.map do |draft_note|
+ created_notes = draft_notes.map do |draft_note|
draft_note.review = review
- create_note_from_draft(draft_note)
+ create_note_from_draft(draft_note, skip_capture_diff_note_position: true)
end
- draft_notes.delete_all
+ capture_diff_note_positions(created_notes)
+ draft_notes.delete_all
set_reviewed
-
notification_service.async.new_review(review)
MergeRequests::ResolvedDiscussionNotificationService.new(project: project, current_user: current_user).execute(merge_request)
end
- def create_note_from_draft(draft)
+ def create_note_from_draft(draft, skip_capture_diff_note_position: false)
# Make sure the diff file is unfolded in order to find the correct line
# codes.
draft.diff_file&.unfold_diff_lines(draft.original_position)
- note = Notes::CreateService.new(draft.project, draft.author, draft.publish_params).execute
- set_discussion_resolve_status(note, draft)
+ note = Notes::CreateService.new(draft.project, draft.author, draft.publish_params).execute(
+ skip_capture_diff_note_position: skip_capture_diff_note_position
+ )
+ set_discussion_resolve_status(note, draft)
note
end
@@ -70,5 +72,19 @@ module DraftNotes
def set_reviewed
::MergeRequests::MarkReviewerReviewedService.new(project: project, current_user: current_user).execute(merge_request)
end
+
+ def capture_diff_note_positions(notes)
+ paths = notes.flat_map do |note|
+ note.diff_file&.paths if note.diff_note?
+ end
+
+ return if paths.empty?
+
+ capture_service = Discussions::CaptureDiffNotePositionService.new(merge_request, paths.compact)
+
+ notes.each do |note|
+ capture_service.execute(note.discussion) if note.diff_note? && note.start_of_discussion?
+ end
+ end
end
end