diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-20 17:34:42 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-20 17:34:42 +0300 |
commit | 9f46488805e86b1bc341ea1620b866016c2ce5ed (patch) | |
tree | f9748c7e287041e37d6da49e0a29c9511dc34768 /app/serializers/diff_file_base_entity.rb | |
parent | dfc92d081ea0332d69c8aca2f0e745cb48ae5e6d (diff) |
Add latest changes from gitlab-org/gitlab@13-0-stable-ee
Diffstat (limited to 'app/serializers/diff_file_base_entity.rb')
-rw-r--r-- | app/serializers/diff_file_base_entity.rb | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/app/serializers/diff_file_base_entity.rb b/app/serializers/diff_file_base_entity.rb index 302fe3d7c67..8c2b3a65d57 100644 --- a/app/serializers/diff_file_base_entity.rb +++ b/app/serializers/diff_file_base_entity.rb @@ -22,16 +22,16 @@ class DiffFileBaseEntity < Grape::Entity expose :edit_path, if: -> (_, options) { options[:merge_request] } do |diff_file| merge_request = options[:merge_request] - options = merge_request.persisted? ? { from_merge_request_iid: merge_request.iid } : {} + next unless merge_request.merged? || merge_request.source_branch_exists? - next unless merge_request.source_project + target_project, target_branch = edit_project_branch_options(merge_request) if Feature.enabled?(:web_ide_default) - ide_edit_path(merge_request.source_project, merge_request.source_branch, diff_file.new_path) + ide_edit_path(target_project, target_branch, diff_file.new_path) else - project_edit_blob_path(merge_request.source_project, - tree_join(merge_request.source_branch, diff_file.new_path), - options) + options = merge_request.persisted? && merge_request.source_branch_exists? && !merge_request.merged? ? { from_merge_request_iid: merge_request.iid } : {} + + project_edit_blob_path(target_project, tree_join(target_branch, diff_file.new_path), options) end end @@ -61,7 +61,7 @@ class DiffFileBaseEntity < Grape::Entity next unless diff_file.blob if merge_request&.source_project && current_user - can_modify_blob?(diff_file.blob, merge_request.source_project, merge_request.source_branch) + can_modify_blob?(diff_file.blob, merge_request.source_project, merge_request.source_branch_exists? ? merge_request.source_branch : merge_request.target_branch) else false end @@ -88,6 +88,7 @@ class DiffFileBaseEntity < Grape::Entity expose :b_mode expose :viewer, using: DiffViewerEntity + expose :alternate_viewer, using: DiffViewerEntity expose :old_size do |diff_file| diff_file.old_blob&.raw_size @@ -112,4 +113,12 @@ class DiffFileBaseEntity < Grape::Entity def current_user request.current_user end + + def edit_project_branch_options(merge_request) + if merge_request.source_branch_exists? && !merge_request.merged? + [merge_request.source_project, merge_request.source_branch] + else + [merge_request.target_project, merge_request.target_branch] + end + end end |