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
raise 'abstract'
end
def project
target.project
end
def recipients
@recipients ||= []
end
......@@ -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_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_scope.where(id: user_ids_with_project_setting.concat(user_ids_with_group_setting).uniq)
......@@ -163,7 +167,7 @@ module NotificationRecipientService
end
# 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)
# If project setting is global, add to watch list if global setting is watch
......@@ -230,14 +234,12 @@ module NotificationRecipientService
end
class Default < Base
attr_reader :project
attr_reader :target
attr_reader :current_user
attr_reader :action
attr_reader :previous_assignee
attr_reader :skip_current_user
def initialize(project, target, current_user, action:, previous_assignee: nil, skip_current_user: true)
@project = project
def initialize(target, current_user, action:, previous_assignee: nil, skip_current_user: true)
@target = target
@current_user = current_user
@action = action
......@@ -280,12 +282,10 @@ module NotificationRecipientService
end
class Relabeled < Base
attr_reader :project
attr_reader :target
attr_reader :current_user
attr_reader :labels
def initialize(project, target, current_user, labels:)
@project = project
def initialize(target, current_user, labels:)
@target = target
@current_user = current_user
@labels = labels
......@@ -297,13 +297,17 @@ module NotificationRecipientService
end
class NewNote < Base
attr_reader :project
attr_reader :note
attr_reader :target
def initialize(project, note)
@project = project
def initialize(note)
@note = note
@target = note.noteable
end
def target
note.noteable
end
def project
note.project
end
def read_ability
......
......@@ -42,7 +42,7 @@ class NotificationService
# * users with custom level checked with "new issue"
#
def new_issue(issue, current_user)
new_resource_email(issue, issue.project, :new_issue_email)
new_resource_email(issue, :new_issue_email)
end
# When issue text is updated, we should send an email to:
......@@ -52,7 +52,6 @@ class NotificationService
def new_mentions_in_issue(issue, new_mentioned_users, current_user)
new_mentions_in_resource_email(
issue,
issue.project,
new_mentioned_users,
current_user,
:new_mention_in_issue_email
......@@ -67,7 +66,7 @@ class NotificationService
# * users with custom level checked with "close issue"
#
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
# When we reassign an issue we should send an email to:
......@@ -78,7 +77,6 @@ class NotificationService
#
def reassigned_issue(issue, current_user, previous_assignees = [])
recipients = NotificationRecipientService.build_recipients(
issue.project,
issue,
current_user,
action: "reassign",
......@@ -103,7 +101,7 @@ class NotificationService
# * watchers of the issue's labels
#
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
# When create a merge request we should send an email to:
......@@ -114,7 +112,7 @@ class NotificationService
# * users with custom level checked with "new merge request"
#
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
# When merge request text is updated, we should send an email to:
......@@ -124,7 +122,6 @@ class NotificationService
def new_mentions_in_merge_request(merge_request, new_mentioned_users, current_user)
new_mentions_in_resource_email(
merge_request,
merge_request.target_project,
new_mentioned_users,
current_user,
:new_mention_in_merge_request_email
......@@ -138,7 +135,7 @@ class NotificationService
# * users with custom level checked with "reassign merge request"
#
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
# When we add labels to a merge request we should send an email to:
......@@ -146,21 +143,20 @@ class NotificationService
# * watchers of the mr's labels
#
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
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
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
def merge_mr(merge_request, current_user)
close_resource_email(
merge_request,
merge_request.target_project,
current_user,
:merged_merge_request_email,
skip_current_user: !merge_request.merge_when_pipeline_succeeds?
......@@ -170,7 +166,6 @@ class NotificationService
def reopen_mr(merge_request, current_user)
reopen_resource_email(
merge_request,
merge_request.target_project,
current_user,
:merge_request_status_email,
'reopened'
......@@ -179,7 +174,6 @@ class NotificationService
def resolve_all_discussions(merge_request, current_user)
recipients = NotificationRecipientService.build_recipients(
merge_request.target_project,
merge_request,
current_user,
action: "resolve_all_discussions")
......@@ -204,7 +198,7 @@ class NotificationService
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|
mailer.send(notify_method, recipient.id, note.id).deliver_later
end
......@@ -284,7 +278,7 @@ class NotificationService
end
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|
email = mailer.issue_moved_email(recipient, issue, new_issue, current_user)
......@@ -320,16 +314,16 @@ class NotificationService
protected
def new_resource_email(target, project, method)
recipients = NotificationRecipientService.build_recipients(project, target, target.author, action: "new")
def new_resource_email(target, method)
recipients = NotificationRecipientService.build_recipients(target, target.author, action: "new")
recipients.each do |recipient|
mailer.send(method, recipient.id, target.id).deliver_later
end
end
def new_mentions_in_resource_email(target, project, new_mentioned_users, current_user, method)
recipients = NotificationRecipientService.build_recipients(project, target, current_user, action: "new")
def new_mentions_in_resource_email(target, new_mentioned_users, current_user, method)
recipients = NotificationRecipientService.build_recipients(target, current_user, action: "new")
recipients = recipients & new_mentioned_users
recipients.each do |recipient|
......@@ -337,11 +331,10 @@ class NotificationService
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"
recipients = NotificationRecipientService.build_recipients(
project,
target,
current_user,
action: action,
......@@ -353,12 +346,11 @@ class NotificationService
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 = User.find_by(id: previous_assignee_id) if previous_assignee_id
recipients = NotificationRecipientService.build_recipients(
project,
target,
current_user,
action: "reassign",
......@@ -376,8 +368,8 @@ class NotificationService
end
end
def relabeled_resource_email(target, project, labels, current_user, method)
recipients = NotificationRecipientService.build_relabeled_recipients(project, target, current_user, labels: labels)
def relabeled_resource_email(target, labels, current_user, method)
recipients = NotificationRecipientService.build_relabeled_recipients(target, current_user, labels: labels)
label_names = labels.map(&:name)
recipients.each do |recipient|
......@@ -385,8 +377,8 @@ class NotificationService
end
end
def reopen_resource_email(target, project, current_user, method, status)
recipients = NotificationRecipientService.build_recipients(project, target, current_user, action: "reopen")
def reopen_resource_email(target, current_user, method, status)
recipients = NotificationRecipientService.build_recipients(target, current_user, action: "reopen")
recipients.each do |recipient|
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