Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
0487009d
Commit
0487009d
authored
Aug 01, 2017
by
http://jneen.net/
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
deparameterize `project`
since 99% of the time it's `target.project` anyways.
parent
246951bb
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
37 additions
and
41 deletions
+37
-41
app/services/notification_recipient_service.rb
app/services/notification_recipient_service.rb
+17
-13
app/services/notification_service.rb
app/services/notification_service.rb
+20
-28
No files found.
app/services/notification_recipient_service.rb
View file @
0487009d
...
@@ -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
...
...
app/services/notification_service.rb
View file @
0487009d
...
@@ -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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment