• Adam Buckland's avatar
    Add indication for closed or merged issuables in GFM · ace833b3
    Adam Buckland authored
    Example: for issues that are closed, the links will now show '[closed]'
    following the issue number. This is done as post-process after the markdown has
    been loaded from the cache as the status of the issue may change between
    the cache being populated and the content being displayed.
    
    In order to avoid N+1 queries problem when rendering notes ObjectRenderer
    populates the cache of referenced issuables for all notes at once,
    before the post processing phase.
    
    As a part of this change, the Banzai BaseParser#grouped_objects_for_nodes
    method has been refactored to return a Hash utilising the node itself as the
    key, since this was a common pattern of usage for this method.
    ace833b3
merge_request_parser.rb 587 Bytes
module Banzai
  module ReferenceParser
    class MergeRequestParser < BaseParser
      self.reference_type = :merge_request

      def merge_requests_for_nodes(nodes)
        @merge_requests_for_nodes ||= grouped_objects_for_nodes(
          nodes,
          MergeRequest.all,
          self.class.data_attribute
        )
      end

      def references_relation
        MergeRequest.includes(:author, :assignee, :target_project)
      end

      private

      def can_read_reference?(user, ref_project)
        can?(user, :read_merge_request, ref_project)
      end
    end
  end
end