Enable assignee e-mail notification (#2003)

* Enable assignee e-mail notification

* Check assignee and doer to avoid self made comment notifications.

* Assignee not always defined

* New method to avoid error when assignee deleted

* Assignee empty check
release/v1.15
Győrvári Gábor 2017-06-23 15:43:37 +02:00 committed by Lunny Xiao
parent 09cb999145
commit f2afed3098
2 changed files with 23 additions and 5 deletions

View File

@ -131,6 +131,22 @@ func (issue *Issue) loadPoster(e Engine) (err error) {
return return
} }
func (issue *Issue) loadAssignee(e Engine) (err error) {
if issue.Assignee == nil {
issue.Assignee, err = getUserByID(e, issue.AssigneeID)
if err != nil {
issue.AssigneeID = -1
issue.Assignee = NewGhostUser()
if !IsErrUserNotExist(err) {
return fmt.Errorf("getUserByID.(assignee) [%d]: %v", issue.AssigneeID, err)
}
err = nil
return
}
}
return
}
func (issue *Issue) loadAttributes(e Engine) (err error) { func (issue *Issue) loadAttributes(e Engine) (err error) {
if err = issue.loadRepo(e); err != nil { if err = issue.loadRepo(e); err != nil {
return return
@ -151,11 +167,8 @@ func (issue *Issue) loadAttributes(e Engine) (err error) {
} }
} }
if issue.Assignee == nil && issue.AssigneeID > 0 { if err = issue.loadAssignee(e); err != nil {
issue.Assignee, err = getUserByID(e, issue.AssigneeID) return
if err != nil {
return fmt.Errorf("getUserByID.(assignee) [%d]: %v", issue.AssigneeID, err)
}
} }
if issue.IsPull && issue.PullRequest == nil { if issue.IsPull && issue.PullRequest == nil {

View File

@ -42,6 +42,11 @@ func mailIssueCommentToParticipants(issue *Issue, doer *User, comment *Comment,
participants = append(participants, issue.Poster) participants = append(participants, issue.Poster)
} }
// Assignee must receive any communications
if issue.Assignee != nil && issue.AssigneeID > 0 && issue.AssigneeID != doer.ID {
participants = append(participants, issue.Assignee)
}
tos := make([]string, 0, len(watchers)) // List of email addresses. tos := make([]string, 0, len(watchers)) // List of email addresses.
names := make([]string, 0, len(watchers)) names := make([]string, 0, len(watchers))
for i := range watchers { for i := range watchers {