Commit 4a5b7718 authored by Douwe Maan's avatar Douwe Maan
Browse files

Participable doesn't need to know about Mentionable

parent c3b8bedf3ed7
......@@ -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 @@ def mentionable_attrs
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 @@ def participant_attrs
# 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 '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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment