5a3e6fdff9
This commit, introduced in https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/23812, fixes a problem creating a displaying image diff notes when the image is stored in LFS. The main problem was that `Gitlab::Diff::File` was returning an invalid valid in `text?` for this kind of files. It also fixes a rendering problem with other LFS files, like text ones. They LFS pointer shouldn't be shown when LFS is enabled for the project, but they were.
40 lines
1.1 KiB
Ruby
40 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module DiffViewer
|
|
module ServerSide
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
self.collapse_limit = 1.megabyte
|
|
self.size_limit = 5.megabytes
|
|
end
|
|
|
|
def prepare!
|
|
diff_file.old_blob&.load_all_data!
|
|
diff_file.new_blob&.load_all_data!
|
|
end
|
|
|
|
def render_error
|
|
# Files that are not stored in the repository, like LFS files and
|
|
# build artifacts, can only be rendered using a client-side viewer,
|
|
# since we do not want to read large amounts of data into memory on the
|
|
# server side. Client-side viewers use JS and can fetch the file from
|
|
# `diff_file_blob_raw_path` and `diff_file_old_blob_raw_path` using AJAX.
|
|
return :server_side_but_stored_externally if diff_file.stored_externally?
|
|
|
|
super
|
|
end
|
|
|
|
private
|
|
|
|
def render_error_reason
|
|
return super unless render_error == :server_side_but_stored_externally
|
|
|
|
if diff_file.external_storage == :lfs
|
|
_('it is stored in LFS')
|
|
else
|
|
_('it is stored externally')
|
|
end
|
|
end
|
|
end
|
|
end
|