Commit 8723f292 authored by Mark Chao's avatar Mark Chao

Fix diff bottom expand button appears twice

This is a quick fix by only append match line once
when calling diff_lines_for_serializer multiple time.

Also enable feature by default
parent 8a59c9fd
...@@ -57,7 +57,7 @@ class DiffFileEntity < DiffFileBaseEntity ...@@ -57,7 +57,7 @@ class DiffFileEntity < DiffFileBaseEntity
diff_file.diff_lines_for_serializer diff_file.diff_lines_for_serializer
end end
expose :is_fully_expanded, if: -> (diff_file, _) { Feature.enabled?(:expand_diff_full_file) && diff_file.text? } do |diff_file| expose :is_fully_expanded, if: -> (diff_file, _) { Feature.enabled?(:expand_diff_full_file, default_enabled: true) && diff_file.text? } do |diff_file|
diff_file.fully_expanded? diff_file.fully_expanded?
end end
......
---
title: Fix duplicated bottom match line on merge request parallel diff view
merge_request: 26402
author:
type: fixed
...@@ -158,7 +158,10 @@ module Gitlab ...@@ -158,7 +158,10 @@ module Gitlab
new_blob || old_blob new_blob || old_blob
end end
attr_writer :highlighted_diff_lines def highlighted_diff_lines=(value)
clear_memoization(:diff_lines_for_serializer)
@highlighted_diff_lines = value
end
# Array of Gitlab::Diff::Line objects # Array of Gitlab::Diff::Line objects
def diff_lines def diff_lines
...@@ -314,19 +317,21 @@ module Gitlab ...@@ -314,19 +317,21 @@ module Gitlab
# This adds the bottom match line to the array if needed. It contains # This adds the bottom match line to the array if needed. It contains
# the data to load more context lines. # the data to load more context lines.
def diff_lines_for_serializer def diff_lines_for_serializer
lines = highlighted_diff_lines strong_memoize(:diff_lines_for_serializer) do
lines = highlighted_diff_lines
return if lines.empty? next if lines.empty?
return if blob.nil? next if blob.nil?
last_line = lines.last last_line = lines.last
if last_line.new_pos < total_blob_lines(blob) && !deleted_file? if last_line.new_pos < total_blob_lines(blob) && !deleted_file?
match_line = Gitlab::Diff::Line.new("", 'match', nil, last_line.old_pos, last_line.new_pos) match_line = Gitlab::Diff::Line.new("", 'match', nil, last_line.old_pos, last_line.new_pos)
lines.push(match_line) lines.push(match_line)
end end
lines lines
end
end end
def fully_expanded? def fully_expanded?
......
...@@ -72,6 +72,13 @@ describe Gitlab::Diff::File do ...@@ -72,6 +72,13 @@ describe Gitlab::Diff::File do
expect(diff_file.diff_lines_for_serializer.last.type).to eq('match') expect(diff_file.diff_lines_for_serializer.last.type).to eq('match')
end end
context 'when called multiple times' do
it 'only adds bottom match line once' do
expect(diff_file.diff_lines_for_serializer.size).to eq(31)
expect(diff_file.diff_lines_for_serializer.size).to eq(31)
end
end
context 'when deleted' do context 'when deleted' do
let(:commit) { project.commit('d59c60028b053793cecfb4022de34602e1a9218e') } let(:commit) { project.commit('d59c60028b053793cecfb4022de34602e1a9218e') }
let(:diff_file) { commit.diffs.diff_file_with_old_path('files/js/commit.js.coffee') } let(:diff_file) { commit.diffs.diff_file_with_old_path('files/js/commit.js.coffee') }
......
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