Merge branch '57953-fix-unfolded-diff-suggestions' into 'master'
Fix suggestion on lines that are not part of an MR See merge request gitlab-org/gitlab-ce!30606
This commit is contained in:
commit
aed076353d
4 changed files with 37 additions and 12 deletions
|
@ -4,7 +4,7 @@ class BlobPresenter < Gitlab::View::Presenter::Delegated
|
|||
presents :blob
|
||||
|
||||
def highlight(plain: nil)
|
||||
blob.load_all_data! if blob.respond_to?(:load_all_data!)
|
||||
load_all_blob_data
|
||||
|
||||
Gitlab::Highlight.highlight(
|
||||
blob.path,
|
||||
|
@ -17,4 +17,10 @@ class BlobPresenter < Gitlab::View::Presenter::Delegated
|
|||
def web_url
|
||||
Gitlab::Routing.url_helpers.project_blob_url(blob.repository.project, File.join(blob.commit_id, blob.path))
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def load_all_blob_data
|
||||
blob.load_all_data! if blob.respond_to?(:load_all_data!)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -16,8 +16,12 @@ module Blobs
|
|||
attribute :indent, Integer, default: 0
|
||||
|
||||
def initialize(blob, params)
|
||||
# Load all blob data first as we need to ensure they're all loaded first
|
||||
# so we can accurately show the rest of the diff when unfolding.
|
||||
load_all_blob_data
|
||||
|
||||
@subject = blob
|
||||
@all_lines = highlight.lines
|
||||
@all_lines = blob.data.lines
|
||||
super(params)
|
||||
|
||||
if full?
|
||||
|
@ -25,10 +29,12 @@ module Blobs
|
|||
end
|
||||
end
|
||||
|
||||
# Converts a String array to Gitlab::Diff::Line array, with match line added
|
||||
# Returns an array of Gitlab::Diff::Line with match line added
|
||||
def diff_lines
|
||||
diff_lines = lines.map do |line|
|
||||
Gitlab::Diff::Line.new(line, nil, nil, nil, nil, rich_text: line)
|
||||
diff_lines = lines.map.with_index do |line, index|
|
||||
full_line = limited_blob_lines[index].delete("\n")
|
||||
|
||||
Gitlab::Diff::Line.new(full_line, nil, nil, nil, nil, rich_text: line)
|
||||
end
|
||||
|
||||
add_match_line(diff_lines)
|
||||
|
@ -37,11 +43,7 @@ module Blobs
|
|||
end
|
||||
|
||||
def lines
|
||||
strong_memoize(:lines) do
|
||||
lines = @all_lines
|
||||
lines = lines[since - 1..to - 1] unless full?
|
||||
lines.map(&:html_safe)
|
||||
end
|
||||
@lines ||= limit(highlight.lines).map(&:html_safe)
|
||||
end
|
||||
|
||||
def match_line_text
|
||||
|
@ -71,5 +73,15 @@ module Blobs
|
|||
|
||||
bottom? ? diff_lines.push(match_line) : diff_lines.unshift(match_line)
|
||||
end
|
||||
|
||||
def limited_blob_lines
|
||||
@limited_blob_lines ||= limit(@all_lines)
|
||||
end
|
||||
|
||||
def limit(lines)
|
||||
return lines if full?
|
||||
|
||||
lines[since - 1..to - 1]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix suggestion on lines that are not part of an MR
|
||||
merge_request: 30606
|
||||
author:
|
||||
type: fixed
|
|
@ -54,8 +54,10 @@ describe Blobs::UnfoldPresenter do
|
|||
expect(lines.size).to eq(total_lines)
|
||||
|
||||
lines.each.with_index do |line, index|
|
||||
expect(line.text).to include("LC#{index + 1}")
|
||||
expect(line.text).to eq(line.rich_text)
|
||||
line_number = index + 1
|
||||
|
||||
expect(line.text).to eq(line_number.to_s)
|
||||
expect(line.rich_text).to include("LC#{line_number}")
|
||||
expect(line.type).to be_nil
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue