summaryrefslogtreecommitdiff
path: root/app/controllers
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-10-09 21:06:24 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2019-10-09 21:06:24 +0000
commit4b28d5ae770c6bd332283a3f13ceae06329c409b (patch)
treeae4d46e1d017002935fe75dc14cb3c108be12fae /app/controllers
parent41efffa17c67405ca5f5dac49d72be7872cee339 (diff)
downloadgitlab-ce-4b28d5ae770c6bd332283a3f13ceae06329c409b.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/projects/merge_requests/application_controller.rb6
-rw-r--r--app/controllers/projects/merge_requests/diffs_controller.rb27
-rw-r--r--app/controllers/projects/merge_requests_controller.rb3
3 files changed, 32 insertions, 4 deletions
diff --git a/app/controllers/projects/merge_requests/application_controller.rb b/app/controllers/projects/merge_requests/application_controller.rb
index edffeb32203..b7e99cb7ed0 100644
--- a/app/controllers/projects/merge_requests/application_controller.rb
+++ b/app/controllers/projects/merge_requests/application_controller.rb
@@ -14,7 +14,11 @@ class Projects::MergeRequests::ApplicationController < Projects::ApplicationCont
end
def merge_request_includes(association)
- association.includes(:metrics, :assignees, author: :status) # rubocop:disable CodeReuse/ActiveRecord
+ association.includes(preloadable_mr_relations) # rubocop:disable CodeReuse/ActiveRecord
+ end
+
+ def preloadable_mr_relations
+ [:metrics, :assignees, { author: :status }]
end
def merge_request_params
diff --git a/app/controllers/projects/merge_requests/diffs_controller.rb b/app/controllers/projects/merge_requests/diffs_controller.rb
index 9c5caf7719e..23ef9157363 100644
--- a/app/controllers/projects/merge_requests/diffs_controller.rb
+++ b/app/controllers/projects/merge_requests/diffs_controller.rb
@@ -5,9 +5,9 @@ class Projects::MergeRequests::DiffsController < Projects::MergeRequests::Applic
include RendersNotes
before_action :apply_diff_view_cookie!
- before_action :commit
- before_action :define_diff_vars
- before_action :define_diff_comment_vars
+ before_action :commit, except: :diffs_batch
+ before_action :define_diff_vars, except: :diffs_batch
+ before_action :define_diff_comment_vars, except: :diffs_batch
def show
render_diffs
@@ -17,8 +17,29 @@ class Projects::MergeRequests::DiffsController < Projects::MergeRequests::Applic
render_diffs
end
+ def diffs_batch
+ return render_404 unless Feature.enabled?(:diffs_batch_load, @merge_request.project)
+
+ diffable = @merge_request.merge_request_diff
+
+ return render_404 unless diffable
+
+ diffs = diffable.diffs_in_batch(params[:page], params[:per_page], diff_options: diff_options)
+
+ options = {
+ merge_request: @merge_request,
+ pagination_data: diffs.pagination_data
+ }
+
+ render json: PaginatedDiffSerializer.new(current_user: current_user).represent(diffs, options)
+ end
+
private
+ def preloadable_mr_relations
+ [{ source_project: :namespace }, { target_project: :namespace }]
+ end
+
def render_diffs
@environment = @merge_request.environments_for(current_user).last
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 7ddff9c1893..bd22226da5c 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -17,6 +17,9 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
before_action :set_issuables_index, only: [:index]
before_action :authenticate_user!, only: [:assign_related_issues]
before_action :check_user_can_push_to_source_branch!, only: [:rebase]
+ before_action only: [:show] do
+ push_frontend_feature_flag(:diffs_batch_load, @project)
+ end
around_action :allow_gitaly_ref_name_caching, only: [:index, :show, :discussions]