29 lines
750 B
Ruby
29 lines
750 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Notifications
|
|
module Mentioned
|
|
extend ActiveSupport::Concern
|
|
|
|
def linked_object
|
|
target.mentions_container
|
|
end
|
|
|
|
module ClassMethods
|
|
def notify(mentionable, recipient_user_ids)
|
|
actor = mentionable.author
|
|
relevant_mentions = filter_mentions(
|
|
mentionable.mentions.local.where.not(person: actor),
|
|
mentionable,
|
|
recipient_user_ids
|
|
)
|
|
|
|
relevant_mentions.each do |mention|
|
|
recipient = mention.person.owner
|
|
unless exists?(recipient: recipient, target: mention)
|
|
create_notification(recipient, mention, actor).try(:email_the_user, mention, actor)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|