Skip to content
Snippets Groups Projects
Commit 4c9e47f6 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Fix notifications for group projects

parent 3208dad1
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -147,17 +147,17 @@ class NotificationService
 
# Get project users with WATCH notification level
def project_watchers(project)
project_watchers = []
member_methods = { project => :users_projects }
member_methods.merge!(project.group => :users_groups) if project.group
 
member_methods = [:users_projects]
member_methods << :users_groups if project.group
member_methods.each do |member_method|
member_methods.each do |object, member_method|
# Get project notification settings since it has higher priority
user_ids = project.send(member_method).where(notification_level: Notification::N_WATCH).pluck(:user_id)
project_watchers = User.where(id: user_ids)
user_ids = object.send(member_method).where(notification_level: Notification::N_WATCH).pluck(:user_id)
project_watchers += User.where(id: user_ids)
 
# next collect users who use global settings with watch state
user_ids = project.send(member_method).where(notification_level: Notification::N_GLOBAL).pluck(:user_id)
user_ids = object.send(member_method).where(notification_level: Notification::N_GLOBAL).pluck(:user_id)
project_watchers += User.where(id: user_ids, notification_level: Notification::N_WATCH)
end
 
Loading
Loading
@@ -175,7 +175,7 @@ class NotificationService
tm = project.users_projects.find_by_user_id(user.id)
 
if !tm && project.group
tm = project.users_groups.find_by_user_id(user.id)
tm = project.group.users_groups.find_by_user_id(user.id)
end
 
# reject users who globally disabled notification and has no membership
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment