diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-09 21:06:24 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-09 21:06:24 +0000 |
commit | 4b28d5ae770c6bd332283a3f13ceae06329c409b (patch) | |
tree | ae4d46e1d017002935fe75dc14cb3c108be12fae /app/controllers | |
parent | 41efffa17c67405ca5f5dac49d72be7872cee339 (diff) | |
download | gitlab-ce-4b28d5ae770c6bd332283a3f13ceae06329c409b.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/controllers')
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] |