Commit 4c9e47f6e054649eefd453089d1658b9508c16fc
1 parent
3208dad1
Exists in
master
and in
4 other branches
Fix notifications for group projects
Showing
1 changed file
with
8 additions
and
8 deletions
Show diff stats
app/services/notification_service.rb
| @@ -147,17 +147,17 @@ class NotificationService | @@ -147,17 +147,17 @@ class NotificationService | ||
| 147 | 147 | ||
| 148 | # Get project users with WATCH notification level | 148 | # Get project users with WATCH notification level |
| 149 | def project_watchers(project) | 149 | def project_watchers(project) |
| 150 | + project_watchers = [] | ||
| 151 | + member_methods = { project => :users_projects } | ||
| 152 | + member_methods.merge!(project.group => :users_groups) if project.group | ||
| 150 | 153 | ||
| 151 | - member_methods = [:users_projects] | ||
| 152 | - member_methods << :users_groups if project.group | ||
| 153 | - | ||
| 154 | - member_methods.each do |member_method| | 154 | + member_methods.each do |object, member_method| |
| 155 | # Get project notification settings since it has higher priority | 155 | # Get project notification settings since it has higher priority |
| 156 | - user_ids = project.send(member_method).where(notification_level: Notification::N_WATCH).pluck(:user_id) | ||
| 157 | - project_watchers = User.where(id: user_ids) | 156 | + user_ids = object.send(member_method).where(notification_level: Notification::N_WATCH).pluck(:user_id) |
| 157 | + project_watchers += User.where(id: user_ids) | ||
| 158 | 158 | ||
| 159 | # next collect users who use global settings with watch state | 159 | # next collect users who use global settings with watch state |
| 160 | - user_ids = project.send(member_method).where(notification_level: Notification::N_GLOBAL).pluck(:user_id) | 160 | + user_ids = object.send(member_method).where(notification_level: Notification::N_GLOBAL).pluck(:user_id) |
| 161 | project_watchers += User.where(id: user_ids, notification_level: Notification::N_WATCH) | 161 | project_watchers += User.where(id: user_ids, notification_level: Notification::N_WATCH) |
| 162 | end | 162 | end |
| 163 | 163 | ||
| @@ -175,7 +175,7 @@ class NotificationService | @@ -175,7 +175,7 @@ class NotificationService | ||
| 175 | tm = project.users_projects.find_by_user_id(user.id) | 175 | tm = project.users_projects.find_by_user_id(user.id) |
| 176 | 176 | ||
| 177 | if !tm && project.group | 177 | if !tm && project.group |
| 178 | - tm = project.users_groups.find_by_user_id(user.id) | 178 | + tm = project.group.users_groups.find_by_user_id(user.id) |
| 179 | end | 179 | end |
| 180 | 180 | ||
| 181 | # reject users who globally disabled notification and has no membership | 181 | # reject users who globally disabled notification and has no membership |