30 lines
781 B
Ruby
30 lines
781 B
Ruby
module Notes
|
|
class DiffPositionUpdateService < BaseService
|
|
def execute(note)
|
|
new_position = tracer.trace(note.position)
|
|
|
|
# Don't update the position if the type doesn't match, since that means
|
|
# the diff line commented on was changed, and the comment is now outdated
|
|
old_position = note.position
|
|
if new_position &&
|
|
new_position != old_position &&
|
|
new_position.type == old_position.type
|
|
|
|
note.position = new_position
|
|
end
|
|
|
|
note
|
|
end
|
|
|
|
private
|
|
|
|
def tracer
|
|
@tracer ||= Gitlab::Diff::PositionTracer.new(
|
|
repository: project.repository,
|
|
old_diff_refs: params[:old_diff_refs],
|
|
new_diff_refs: params[:new_diff_refs],
|
|
paths: params[:paths]
|
|
)
|
|
end
|
|
end
|
|
end
|