diff options
Diffstat (limited to 'app/controllers/concerns')
| -rw-r--r-- | app/controllers/concerns/members_presentation.rb | 8 | ||||
| -rw-r--r-- | app/controllers/concerns/membership_actions.rb | 2 | ||||
| -rw-r--r-- | app/controllers/concerns/notes_actions.rb | 4 | ||||
| -rw-r--r-- | app/controllers/concerns/renders_notes.rb | 5 |
4 files changed, 17 insertions, 2 deletions
diff --git a/app/controllers/concerns/members_presentation.rb b/app/controllers/concerns/members_presentation.rb index c0622516fd3..215e0bdf3cb 100644 --- a/app/controllers/concerns/members_presentation.rb +++ b/app/controllers/concerns/members_presentation.rb @@ -2,10 +2,18 @@ module MembersPresentation extend ActiveSupport::Concern def present_members(members) + preload_associations(members) Gitlab::View::Presenter::Factory.new( members, current_user: current_user, presenter_class: MembersPresenter ).fabricate! end + + def preload_associations(members) + ActiveRecord::Associations::Preloader.new.preload(members, :user) + ActiveRecord::Associations::Preloader.new.preload(members, :source) + ActiveRecord::Associations::Preloader.new.preload(members.map(&:user), :status) + ActiveRecord::Associations::Preloader.new.preload(members.map(&:user), :u2f_registrations) + end end diff --git a/app/controllers/concerns/membership_actions.rb b/app/controllers/concerns/membership_actions.rb index 7a6a00b8e13..409e6d4c4d2 100644 --- a/app/controllers/concerns/membership_actions.rb +++ b/app/controllers/concerns/membership_actions.rb @@ -1,4 +1,5 @@ module MembershipActions + include MembersPresentation extend ActiveSupport::Concern def create @@ -20,6 +21,7 @@ module MembershipActions .execute(member) .present(current_user: current_user) + present_members([member]) respond_to do |format| format.js { render 'shared/members/update', locals: { member: member } } end diff --git a/app/controllers/concerns/notes_actions.rb b/app/controllers/concerns/notes_actions.rb index fe9a030cdf2..5127db3f5fb 100644 --- a/app/controllers/concerns/notes_actions.rb +++ b/app/controllers/concerns/notes_actions.rb @@ -41,7 +41,7 @@ module NotesActions @note = Notes::CreateService.new(note_project, current_user, create_params).execute if @note.is_a?(Note) - Notes::RenderService.new(current_user).execute([@note]) + prepare_notes_for_rendering([@note], noteable) end respond_to do |format| @@ -56,7 +56,7 @@ module NotesActions @note = Notes::UpdateService.new(project, current_user, note_params).execute(note) if @note.is_a?(Note) - Notes::RenderService.new(current_user).execute([@note]) + prepare_notes_for_rendering([@note]) end respond_to do |format| diff --git a/app/controllers/concerns/renders_notes.rb b/app/controllers/concerns/renders_notes.rb index 36e3d76ecfe..cf04023080a 100644 --- a/app/controllers/concerns/renders_notes.rb +++ b/app/controllers/concerns/renders_notes.rb @@ -4,6 +4,7 @@ module RendersNotes preload_noteable_for_regular_notes(notes) preload_max_access_for_authors(notes, @project) preload_first_time_contribution_for_authors(noteable, notes) + preload_author_status(notes) Notes::RenderService.new(current_user).execute(notes) notes @@ -28,4 +29,8 @@ module RendersNotes notes.each {|n| n.specialize_for_first_contribution!(noteable)} end + + def preload_author_status(notes) + ActiveRecord::Associations::Preloader.new.preload(notes, { author: :status }) + end end |
