Commit 8f05fbba authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Dont show comment on diff if diff line was changed after comment left

parent 2d75b454
...@@ -38,6 +38,8 @@ module CommitsHelper ...@@ -38,6 +38,8 @@ module CommitsHelper
lines_arr = ::Gitlab::InlineDiff.processing diff_arr lines_arr = ::Gitlab::InlineDiff.processing diff_arr
lines_arr.each do |line| lines_arr.each do |line|
raw_line = line.dup
next if line.match(/^\-\-\- \/dev\/null/) next if line.match(/^\-\-\- \/dev\/null/)
next if line.match(/^\+\+\+ \/dev\/null/) next if line.match(/^\+\+\+ \/dev\/null/)
next if line.match(/^\-\-\- a/) next if line.match(/^\-\-\- a/)
...@@ -58,7 +60,7 @@ module CommitsHelper ...@@ -58,7 +60,7 @@ module CommitsHelper
else else
type = identification_type(line) type = identification_type(line)
line_code = build_line_anchor(diff, line_new, line_old) line_code = build_line_anchor(diff, line_new, line_old)
yield(full_line, type, line_code, line_new, line_old) yield(full_line, type, line_code, line_new, line_old, raw_line)
end end
......
...@@ -99,10 +99,21 @@ class Note < ActiveRecord::Base ...@@ -99,10 +99,21 @@ class Note < ActiveRecord::Base
diff.new_path if diff diff.new_path if diff
end end
def diff_old_line
line_code.split('_')[1].to_i
end
def diff_new_line def diff_new_line
line_code.split('_')[2].to_i line_code.split('_')[2].to_i
end end
def diff_line
if diff
@diff_line ||= diff.diff.lines.select { |line| line =~ /\A\+/ }[diff_new_line] ||
diff.diff.lines.select { |line| line =~ /\A\-/ }[diff_old_line]
end
end
def discussion_id def discussion_id
@discussion_id ||= [:discussion, noteable_type.try(:underscore), noteable_id || commit_id, line_code].join("-").to_sym @discussion_id ||= [:discussion, noteable_type.try(:underscore), noteable_id || commit_id, line_code].join("-").to_sym
end end
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
%a.supp_diff_link Diff suppressed. Click to show %a.supp_diff_link Diff suppressed. Click to show
%table.text-file{class: "#{'hide' if too_big}"} %table.text-file{class: "#{'hide' if too_big}"}
- each_diff_line(diff, index) do |line, type, line_code, line_new, line_old| - each_diff_line(diff, index) do |line, type, line_code, line_new, line_old, raw_line|
%tr.line_holder{ id: line_code, class: "#{type}" } %tr.line_holder{ id: line_code, class: "#{type}" }
- if type == "match" - if type == "match"
%td.old_line= "..." %td.old_line= "..."
...@@ -20,4 +20,4 @@ ...@@ -20,4 +20,4 @@
- if @reply_allowed - if @reply_allowed
- comments = @line_notes.select { |n| n.line_code == line_code }.sort_by(&:created_at) - comments = @line_notes.select { |n| n.line_code == line_code }.sort_by(&:created_at)
- unless comments.empty? - unless comments.empty?
= render "projects/notes/diff_notes_with_reply", notes: comments = render "projects/notes/diff_notes_with_reply", notes: comments, raw_line: raw_line
- note = notes.first # example note - note = notes.first # example note
%tr.notes_holder -# Check if line want not changed since comment was left
%td.notes_line{ colspan: 2 } - if !defined?(raw_line) || raw_line == note.diff_line
%span.btn.disabled %tr.notes_holder
%i.icon-comment %td.notes_line{ colspan: 2 }
= notes.count %span.btn.disabled
%td.notes_content %i.icon-comment
%ul.notes{ rel: note.discussion_id } = notes.count
= render notes %td.notes_content
%ul.notes{ rel: note.discussion_id }
= render notes
= render "projects/notes/discussion_reply_button", note: note = render "projects/notes/discussion_reply_button", note: note
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment