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) {
if err = issue.loadRepo(e); err != nil {
return
}
}
- if issue.Assignee == nil && issue.AssigneeID > 0 {
- issue.Assignee, err = getUserByID(e, issue.AssigneeID)
- if err != nil {
- return fmt.Errorf("getUserByID.(assignee) [%d]: %v", issue.AssigneeID, err)
- }
+ if err = issue.loadAssignee(e); err != nil {
+ return
}
if issue.IsPull && issue.PullRequest == nil {
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.
names := make([]string, 0, len(watchers))
for i := range watchers {