Fix Mention notification level.
This commit is contained in:
parent
80097606f5
commit
efe9629346
|
@ -130,22 +130,23 @@ class NotificationService
|
|||
if note.commit_id.present?
|
||||
recipients << note.commit_author
|
||||
end
|
||||
|
||||
# Get users who left comment in thread
|
||||
recipients = recipients.concat(noteable_commenters(note))
|
||||
|
||||
# Add all users participating in the thread (author, assignee, comment authors)
|
||||
participants =
|
||||
if target.is_a?(Commit)
|
||||
author_ids = Note.for_commit_id(target.id).pluck(:author_id).uniq
|
||||
User.where(id: author_ids)
|
||||
else
|
||||
target.participants
|
||||
end
|
||||
recipients = recipients.concat(participants)
|
||||
|
||||
# Merge project watchers
|
||||
recipients = recipients.concat(project_watchers(note.project)).compact.uniq
|
||||
|
||||
# Reject users with Mention notification level
|
||||
recipients = reject_mention_users(recipients, note.project)
|
||||
|
||||
# Add explicitly mentioned users
|
||||
if target.respond_to?(:participants)
|
||||
recipients = recipients.concat(target.participants)
|
||||
else
|
||||
recipients = recipients.concat(note.mentioned_users)
|
||||
end
|
||||
# Reject users with Mention notification level, except those mentioned in _this_ note.
|
||||
recipients = reject_mention_users(recipients - note.mentioned_users, note.project)
|
||||
recipients = recipients + note.mentioned_users
|
||||
|
||||
# Reject mutes users
|
||||
recipients = reject_muted_users(recipients, note.project)
|
||||
|
@ -216,18 +217,6 @@ class NotificationService
|
|||
|
||||
protected
|
||||
|
||||
def noteable_commenters(note)
|
||||
opts = { noteable_type: note.noteable_type, project_id: note.project_id }
|
||||
|
||||
if note.commit_id.present?
|
||||
opts.merge!(commit_id: note.commit_id)
|
||||
else
|
||||
opts.merge!(noteable_id: note.noteable_id)
|
||||
end
|
||||
|
||||
User.where(id: Note.where(opts).pluck(:author_id))
|
||||
end
|
||||
|
||||
# Get project users with WATCH notification level
|
||||
def project_watchers(project)
|
||||
project_members = project_member_notification(project)
|
||||
|
|
Loading…
Reference in New Issue