Participable doesn't need to know about Mentionable
This commit is contained in:
parent
61d8f96176
commit
4a5b77188e
5 changed files with 16 additions and 11 deletions
|
@ -2,13 +2,13 @@ class Commit
|
|||
extend ActiveModel::Naming
|
||||
|
||||
include ActiveModel::Conversion
|
||||
include Mentionable
|
||||
include Participable
|
||||
include Mentionable
|
||||
include Referable
|
||||
include StaticModel
|
||||
|
||||
attr_mentionable :safe_message
|
||||
participant :author, :committer, :notes, :mentioned_users
|
||||
participant :author, :committer, :notes
|
||||
|
||||
attr_accessor :project
|
||||
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
#
|
||||
module Issuable
|
||||
extend ActiveSupport::Concern
|
||||
include Mentionable
|
||||
include Participable
|
||||
include Mentionable
|
||||
|
||||
included do
|
||||
belongs_to :author, class_name: "User"
|
||||
|
@ -47,7 +47,7 @@ module Issuable
|
|||
prefix: true
|
||||
|
||||
attr_mentionable :title, :description
|
||||
participant :author, :assignee, :notes, :mentioned_users
|
||||
participant :author, :assignee, :notes
|
||||
end
|
||||
|
||||
module ClassMethods
|
||||
|
|
|
@ -20,6 +20,12 @@ module Mentionable
|
|||
end
|
||||
end
|
||||
|
||||
included do
|
||||
if self < Participable
|
||||
participant ->(current_user) { mentioned_users(current_user, load_lazy_references: false) }
|
||||
end
|
||||
end
|
||||
|
||||
# Returns the text used as the body of a Note when this object is referenced
|
||||
#
|
||||
# By default this will be the class name and the result of calling
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#
|
||||
# # ...
|
||||
#
|
||||
# participant :author, :assignee, :mentioned_users, :notes
|
||||
# participant :author, :assignee, :notes, ->(current_user) { mentioned_users(current_user) }
|
||||
# end
|
||||
#
|
||||
# issue = Issue.last
|
||||
|
@ -39,12 +39,11 @@ module Participable
|
|||
# Save result into variable if you are going to reuse it inside same request
|
||||
def participants(current_user = self.author, project = self.project, load_lazy_references: true)
|
||||
participants = self.class.participant_attrs.flat_map do |attr|
|
||||
meth = method(attr)
|
||||
value =
|
||||
if attr == :mentioned_users
|
||||
meth.call(current_user, load_lazy_references: false)
|
||||
if attr.respond_to?(:call)
|
||||
instance_exec(current_user, &attr)
|
||||
else
|
||||
meth.call
|
||||
send(attr)
|
||||
end
|
||||
|
||||
participants_for(value, current_user, project)
|
||||
|
|
|
@ -22,14 +22,14 @@ require 'carrierwave/orm/activerecord'
|
|||
require 'file_size_validator'
|
||||
|
||||
class Note < ActiveRecord::Base
|
||||
include Mentionable
|
||||
include Gitlab::CurrentSettings
|
||||
include Participable
|
||||
include Mentionable
|
||||
|
||||
default_value_for :system, false
|
||||
|
||||
attr_mentionable :note
|
||||
participant :author, :mentioned_users
|
||||
participant :author
|
||||
|
||||
belongs_to :project
|
||||
belongs_to :noteable, polymorphic: true
|
||||
|
|
Loading…
Reference in a new issue