Commit 0487009d authored by http://jneen.net/'s avatar http://jneen.net/

deparameterize `project`

since 99% of the time it's `target.project` anyways.
parent 246951bb
...@@ -44,6 +44,10 @@ module NotificationRecipientService ...@@ -44,6 +44,10 @@ module NotificationRecipientService
raise 'abstract' raise 'abstract'
end end
def project
target.project
end
def recipients def recipients
@recipients ||= [] @recipients ||= []
end end
...@@ -138,7 +142,7 @@ module NotificationRecipientService ...@@ -138,7 +142,7 @@ module NotificationRecipientService
user_ids = user_ids_with_global_level_watch((user_ids_with_project_global + user_ids_with_group_global).uniq) user_ids = user_ids_with_global_level_watch((user_ids_with_project_global + user_ids_with_group_global).uniq)
user_ids_with_project_setting = select_project_members_ids(project, user_ids_with_project_global, user_ids) user_ids_with_project_setting = select_project_members_ids(user_ids_with_project_global, user_ids)
user_ids_with_group_setting = select_group_members_ids(project.group, project_members_ids, user_ids_with_group_global, user_ids) user_ids_with_group_setting = select_group_members_ids(project.group, project_members_ids, user_ids_with_group_global, user_ids)
user_scope.where(id: user_ids_with_project_setting.concat(user_ids_with_group_setting).uniq) user_scope.where(id: user_ids_with_project_setting.concat(user_ids_with_group_setting).uniq)
...@@ -163,7 +167,7 @@ module NotificationRecipientService ...@@ -163,7 +167,7 @@ module NotificationRecipientService
end end
# Build a list of user_ids based on project notification settings # Build a list of user_ids based on project notification settings
def select_project_members_ids(project, global_setting, user_ids_global_level_watch) def select_project_members_ids(global_setting, user_ids_global_level_watch)
user_ids = user_ids_notifiable_on(project, :watch) user_ids = user_ids_notifiable_on(project, :watch)
# If project setting is global, add to watch list if global setting is watch # If project setting is global, add to watch list if global setting is watch
...@@ -230,14 +234,12 @@ module NotificationRecipientService ...@@ -230,14 +234,12 @@ module NotificationRecipientService
end end
class Default < Base class Default < Base
attr_reader :project
attr_reader :target attr_reader :target
attr_reader :current_user attr_reader :current_user
attr_reader :action attr_reader :action
attr_reader :previous_assignee attr_reader :previous_assignee
attr_reader :skip_current_user attr_reader :skip_current_user
def initialize(project, target, current_user, action:, previous_assignee: nil, skip_current_user: true) def initialize(target, current_user, action:, previous_assignee: nil, skip_current_user: true)
@project = project
@target = target @target = target
@current_user = current_user @current_user = current_user
@action = action @action = action
...@@ -280,12 +282,10 @@ module NotificationRecipientService ...@@ -280,12 +282,10 @@ module NotificationRecipientService
end end
class Relabeled < Base class Relabeled < Base
attr_reader :project
attr_reader :target attr_reader :target
attr_reader :current_user attr_reader :current_user
attr_reader :labels attr_reader :labels
def initialize(project, target, current_user, labels:) def initialize(target, current_user, labels:)
@project = project
@target = target @target = target
@current_user = current_user @current_user = current_user
@labels = labels @labels = labels
...@@ -297,13 +297,17 @@ module NotificationRecipientService ...@@ -297,13 +297,17 @@ module NotificationRecipientService
end end
class NewNote < Base class NewNote < Base
attr_reader :project
attr_reader :note attr_reader :note
attr_reader :target def initialize(note)
def initialize(project, note)
@project = project
@note = note @note = note
@target = note.noteable end
def target
note.noteable
end
def project
note.project
end end
def read_ability def read_ability
......
...@@ -42,7 +42,7 @@ class NotificationService ...@@ -42,7 +42,7 @@ class NotificationService
# * users with custom level checked with "new issue" # * users with custom level checked with "new issue"
# #
def new_issue(issue, current_user) def new_issue(issue, current_user)
new_resource_email(issue, issue.project, :new_issue_email) new_resource_email(issue, :new_issue_email)
end end
# When issue text is updated, we should send an email to: # When issue text is updated, we should send an email to:
...@@ -52,7 +52,6 @@ class NotificationService ...@@ -52,7 +52,6 @@ class NotificationService
def new_mentions_in_issue(issue, new_mentioned_users, current_user) def new_mentions_in_issue(issue, new_mentioned_users, current_user)
new_mentions_in_resource_email( new_mentions_in_resource_email(
issue, issue,
issue.project,
new_mentioned_users, new_mentioned_users,
current_user, current_user,
:new_mention_in_issue_email :new_mention_in_issue_email
...@@ -67,7 +66,7 @@ class NotificationService ...@@ -67,7 +66,7 @@ class NotificationService
# * users with custom level checked with "close issue" # * users with custom level checked with "close issue"
# #
def close_issue(issue, current_user) def close_issue(issue, current_user)
close_resource_email(issue, issue.project, current_user, :closed_issue_email) close_resource_email(issue, current_user, :closed_issue_email)
end end
# When we reassign an issue we should send an email to: # When we reassign an issue we should send an email to:
...@@ -78,7 +77,6 @@ class NotificationService ...@@ -78,7 +77,6 @@ class NotificationService
# #
def reassigned_issue(issue, current_user, previous_assignees = []) def reassigned_issue(issue, current_user, previous_assignees = [])
recipients = NotificationRecipientService.build_recipients( recipients = NotificationRecipientService.build_recipients(
issue.project,
issue, issue,
current_user, current_user,
action: "reassign", action: "reassign",
...@@ -103,7 +101,7 @@ class NotificationService ...@@ -103,7 +101,7 @@ class NotificationService
# * watchers of the issue's labels # * watchers of the issue's labels
# #
def relabeled_issue(issue, added_labels, current_user) def relabeled_issue(issue, added_labels, current_user)
relabeled_resource_email(issue, issue.project, added_labels, current_user, :relabeled_issue_email) relabeled_resource_email(issue, added_labels, current_user, :relabeled_issue_email)
end end
# When create a merge request we should send an email to: # When create a merge request we should send an email to:
...@@ -114,7 +112,7 @@ class NotificationService ...@@ -114,7 +112,7 @@ class NotificationService
# * users with custom level checked with "new merge request" # * users with custom level checked with "new merge request"
# #
def new_merge_request(merge_request, current_user) def new_merge_request(merge_request, current_user)
new_resource_email(merge_request, merge_request.target_project, :new_merge_request_email) new_resource_email(merge_request, :new_merge_request_email)
end end
# When merge request text is updated, we should send an email to: # When merge request text is updated, we should send an email to:
...@@ -124,7 +122,6 @@ class NotificationService ...@@ -124,7 +122,6 @@ class NotificationService
def new_mentions_in_merge_request(merge_request, new_mentioned_users, current_user) def new_mentions_in_merge_request(merge_request, new_mentioned_users, current_user)
new_mentions_in_resource_email( new_mentions_in_resource_email(
merge_request, merge_request,
merge_request.target_project,
new_mentioned_users, new_mentioned_users,
current_user, current_user,
:new_mention_in_merge_request_email :new_mention_in_merge_request_email
...@@ -138,7 +135,7 @@ class NotificationService ...@@ -138,7 +135,7 @@ class NotificationService
# * users with custom level checked with "reassign merge request" # * users with custom level checked with "reassign merge request"
# #
def reassigned_merge_request(merge_request, current_user) def reassigned_merge_request(merge_request, current_user)
reassign_resource_email(merge_request, merge_request.target_project, current_user, :reassigned_merge_request_email) reassign_resource_email(merge_request, current_user, :reassigned_merge_request_email)
end end
# When we add labels to a merge request we should send an email to: # When we add labels to a merge request we should send an email to:
...@@ -146,21 +143,20 @@ class NotificationService ...@@ -146,21 +143,20 @@ class NotificationService
# * watchers of the mr's labels # * watchers of the mr's labels
# #
def relabeled_merge_request(merge_request, added_labels, current_user) def relabeled_merge_request(merge_request, added_labels, current_user)
relabeled_resource_email(merge_request, merge_request.target_project, added_labels, current_user, :relabeled_merge_request_email) relabeled_resource_email(merge_request, added_labels, current_user, :relabeled_merge_request_email)
end end
def close_mr(merge_request, current_user) def close_mr(merge_request, current_user)
close_resource_email(merge_request, merge_request.target_project, current_user, :closed_merge_request_email) close_resource_email(merge_request, current_user, :closed_merge_request_email)
end end
def reopen_issue(issue, current_user) def reopen_issue(issue, current_user)
reopen_resource_email(issue, issue.project, current_user, :issue_status_changed_email, 'reopened') reopen_resource_email(issue, current_user, :issue_status_changed_email, 'reopened')
end end
def merge_mr(merge_request, current_user) def merge_mr(merge_request, current_user)
close_resource_email( close_resource_email(
merge_request, merge_request,
merge_request.target_project,
current_user, current_user,
:merged_merge_request_email, :merged_merge_request_email,
skip_current_user: !merge_request.merge_when_pipeline_succeeds? skip_current_user: !merge_request.merge_when_pipeline_succeeds?
...@@ -170,7 +166,6 @@ class NotificationService ...@@ -170,7 +166,6 @@ class NotificationService
def reopen_mr(merge_request, current_user) def reopen_mr(merge_request, current_user)
reopen_resource_email( reopen_resource_email(
merge_request, merge_request,
merge_request.target_project,
current_user, current_user,
:merge_request_status_email, :merge_request_status_email,
'reopened' 'reopened'
...@@ -179,7 +174,6 @@ class NotificationService ...@@ -179,7 +174,6 @@ class NotificationService
def resolve_all_discussions(merge_request, current_user) def resolve_all_discussions(merge_request, current_user)
recipients = NotificationRecipientService.build_recipients( recipients = NotificationRecipientService.build_recipients(
merge_request.target_project,
merge_request, merge_request,
current_user, current_user,
action: "resolve_all_discussions") action: "resolve_all_discussions")
...@@ -204,7 +198,7 @@ class NotificationService ...@@ -204,7 +198,7 @@ class NotificationService
notify_method = "note_#{note.to_ability_name}_email".to_sym notify_method = "note_#{note.to_ability_name}_email".to_sym
recipients = NotificationRecipientService.build_new_note_recipients(note.project, note) recipients = NotificationRecipientService.build_new_note_recipients(note)
recipients.each do |recipient| recipients.each do |recipient|
mailer.send(notify_method, recipient.id, note.id).deliver_later mailer.send(notify_method, recipient.id, note.id).deliver_later
end end
...@@ -284,7 +278,7 @@ class NotificationService ...@@ -284,7 +278,7 @@ class NotificationService
end end
def issue_moved(issue, new_issue, current_user) def issue_moved(issue, new_issue, current_user)
recipients = NotificationRecipientService.build_recipients(issue.project, issue, current_user, action: 'moved') recipients = NotificationRecipientService.build_recipients(issue, current_user, action: 'moved')
recipients.map do |recipient| recipients.map do |recipient|
email = mailer.issue_moved_email(recipient, issue, new_issue, current_user) email = mailer.issue_moved_email(recipient, issue, new_issue, current_user)
...@@ -320,16 +314,16 @@ class NotificationService ...@@ -320,16 +314,16 @@ class NotificationService
protected protected
def new_resource_email(target, project, method) def new_resource_email(target, method)
recipients = NotificationRecipientService.build_recipients(project, target, target.author, action: "new") recipients = NotificationRecipientService.build_recipients(target, target.author, action: "new")
recipients.each do |recipient| recipients.each do |recipient|
mailer.send(method, recipient.id, target.id).deliver_later mailer.send(method, recipient.id, target.id).deliver_later
end end
end end
def new_mentions_in_resource_email(target, project, new_mentioned_users, current_user, method) def new_mentions_in_resource_email(target, new_mentioned_users, current_user, method)
recipients = NotificationRecipientService.build_recipients(project, target, current_user, action: "new") recipients = NotificationRecipientService.build_recipients(target, current_user, action: "new")
recipients = recipients & new_mentioned_users recipients = recipients & new_mentioned_users
recipients.each do |recipient| recipients.each do |recipient|
...@@ -337,11 +331,10 @@ class NotificationService ...@@ -337,11 +331,10 @@ class NotificationService
end end
end end
def close_resource_email(target, project, current_user, method, skip_current_user: true) def close_resource_email(target, current_user, method, skip_current_user: true)
action = method == :merged_merge_request_email ? "merge" : "close" action = method == :merged_merge_request_email ? "merge" : "close"
recipients = NotificationRecipientService.build_recipients( recipients = NotificationRecipientService.build_recipients(
project,
target, target,
current_user, current_user,
action: action, action: action,
...@@ -353,12 +346,11 @@ class NotificationService ...@@ -353,12 +346,11 @@ class NotificationService
end end
end end
def reassign_resource_email(target, project, current_user, method) def reassign_resource_email(target, current_user, method)
previous_assignee_id = previous_record(target, 'assignee_id') previous_assignee_id = previous_record(target, 'assignee_id')
previous_assignee = User.find_by(id: previous_assignee_id) if previous_assignee_id previous_assignee = User.find_by(id: previous_assignee_id) if previous_assignee_id
recipients = NotificationRecipientService.build_recipients( recipients = NotificationRecipientService.build_recipients(
project,
target, target,
current_user, current_user,
action: "reassign", action: "reassign",
...@@ -376,8 +368,8 @@ class NotificationService ...@@ -376,8 +368,8 @@ class NotificationService
end end
end end
def relabeled_resource_email(target, project, labels, current_user, method) def relabeled_resource_email(target, labels, current_user, method)
recipients = NotificationRecipientService.build_relabeled_recipients(project, target, current_user, labels: labels) recipients = NotificationRecipientService.build_relabeled_recipients(target, current_user, labels: labels)
label_names = labels.map(&:name) label_names = labels.map(&:name)
recipients.each do |recipient| recipients.each do |recipient|
...@@ -385,8 +377,8 @@ class NotificationService ...@@ -385,8 +377,8 @@ class NotificationService
end end
end end
def reopen_resource_email(target, project, current_user, method, status) def reopen_resource_email(target, current_user, method, status)
recipients = NotificationRecipientService.build_recipients(project, target, current_user, action: "reopen") recipients = NotificationRecipientService.build_recipients(target, current_user, action: "reopen")
recipients.each do |recipient| recipients.each do |recipient|
mailer.send(method, recipient.id, target.id, status, current_user.id).deliver_later mailer.send(method, recipient.id, target.id, status, current_user.id).deliver_later
......
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