diff --git a/app/contexts/notes/load_context.rb b/app/contexts/notes/load_context.rb index f92a7801..f3949149 100644 --- a/app/contexts/notes/load_context.rb +++ b/app/contexts/notes/load_context.rb @@ -13,7 +13,7 @@ module Notes when "issue" project.issues.find(target_id).notes.inc_author.fresh.limit(20) when "merge_request" - project.merge_requests.find(target_id).notes.inc_author.fresh.limit(20) + project.merge_requests.find(target_id).mr_and_commit_notes.inc_author.fresh.limit(20) when "snippet" project.snippets.find(target_id).notes.fresh when "wall" diff --git a/app/controllers/notes_controller.rb b/app/controllers/notes_controller.rb index 7f5f5cd2..d794f368 100644 --- a/app/controllers/notes_controller.rb +++ b/app/controllers/notes_controller.rb @@ -7,6 +7,11 @@ class NotesController < ProjectResourceController def index notes + if params[:target_type] == "merge_request" + @mixed_targets = true + @main_target_type = params[:target_type].camelize + end + respond_with(@notes) end diff --git a/app/helpers/notes_helper.rb b/app/helpers/notes_helper.rb index 65389e38..3e875023 100644 --- a/app/helpers/notes_helper.rb +++ b/app/helpers/notes_helper.rb @@ -7,6 +7,11 @@ module NotesHelper params[:loading_new].present? end + # Helps to distinguish e.g. commit notes in mr notes list + def note_for_main_target?(note) + !@mixed_targets || @main_target_type == note.noteable_type + end + def note_vote_class(note) if note.upvote? "vote upvote" diff --git a/app/models/note.rb b/app/models/note.rb index 65b20fe0..ae51e486 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -49,7 +49,7 @@ class Note < ActiveRecord::Base end def target - if noteable_type == "Commit" + if commit? project.commit(noteable_id) else noteable @@ -82,6 +82,10 @@ class Note < ActiveRecord::Base noteable_type == "Commit" end + def line_note? + line_code.present? + end + def commit_author @commit_author ||= project.users.find_by_email(target.author_email) ||