Commit efe96293 authored by Douwe Maan's avatar Douwe Maan

Fix Mention notification level.

parent 80097606
...@@ -130,22 +130,23 @@ class NotificationService ...@@ -130,22 +130,23 @@ class NotificationService
if note.commit_id.present? if note.commit_id.present?
recipients << note.commit_author recipients << note.commit_author
end end
# Get users who left comment in thread # Add all users participating in the thread (author, assignee, comment authors)
recipients = recipients.concat(noteable_commenters(note)) 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 # Merge project watchers
recipients = recipients.concat(project_watchers(note.project)).compact.uniq recipients = recipients.concat(project_watchers(note.project)).compact.uniq
# Reject users with Mention notification level # Reject users with Mention notification level, except those mentioned in _this_ note.
recipients = reject_mention_users(recipients, note.project) recipients = reject_mention_users(recipients - note.mentioned_users, note.project)
recipients = recipients + note.mentioned_users
# Add explicitly mentioned users
if target.respond_to?(:participants)
recipients = recipients.concat(target.participants)
else
recipients = recipients.concat(note.mentioned_users)
end
# Reject mutes users # Reject mutes users
recipients = reject_muted_users(recipients, note.project) recipients = reject_muted_users(recipients, note.project)
...@@ -216,18 +217,6 @@ class NotificationService ...@@ -216,18 +217,6 @@ class NotificationService
protected 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 # Get project users with WATCH notification level
def project_watchers(project) def project_watchers(project)
project_members = project_member_notification(project) project_members = project_member_notification(project)
......
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