summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsilverwind <me@silverwind.io>2019-06-11 21:27:38 +0200
committerzeripath <art27@cantab.net>2019-06-11 20:27:38 +0100
commit499a8a1cdd815cc25554371598140f5fb01e216f (patch)
tree8ad6b181036488f3054cb4326aed84c93a0d5d37
parent74690f64514424ac643a8007828de1a785705793 (diff)
downloadgitea-499a8a1cdd815cc25554371598140f5fb01e216f.tar.gz
gitea-499a8a1cdd815cc25554371598140f5fb01e216f.zip
Various fixes for issue mail notifications (#7165)
- Send individual mails for actions and comments - Send mail for new issues/prs without a comment - Use correct sender for reopen/close actions - Hopefully fixed all bugs related to missing mails Fixes: https://github.com/go-gitea/gitea/issues/7124 Fixes: https://github.com/go-gitea/gitea/issues/5977
-rw-r--r--models/issue_comment.go19
-rw-r--r--models/issue_mail.go35
-rw-r--r--modules/notification/mail/mail.go6
3 files changed, 41 insertions, 19 deletions
diff --git a/models/issue_comment.go b/models/issue_comment.go
index 60fb5b0420..0d2e917f85 100644
--- a/models/issue_comment.go
+++ b/models/issue_comment.go
@@ -403,16 +403,23 @@ func (c *Comment) mailParticipants(e Engine, opType ActionType, issue *Issue) (e
return fmt.Errorf("UpdateIssueMentions [%d]: %v", c.IssueID, err)
}
- content := c.Content
+ if len(c.Content) > 0 {
+ if err = mailIssueCommentToParticipants(e, issue, c.Poster, c.Content, c, mentions); err != nil {
+ log.Error("mailIssueCommentToParticipants: %v", err)
+ }
+ }
switch opType {
case ActionCloseIssue:
- content = fmt.Sprintf("Closed #%d", issue.Index)
+ ct := fmt.Sprintf("Closed #%d.", issue.Index)
+ if err = mailIssueCommentToParticipants(e, issue, c.Poster, ct, c, mentions); err != nil {
+ log.Error("mailIssueCommentToParticipants: %v", err)
+ }
case ActionReopenIssue:
- content = fmt.Sprintf("Reopened #%d", issue.Index)
- }
- if err = mailIssueCommentToParticipants(e, issue, c.Poster, content, c, mentions); err != nil {
- log.Error("mailIssueCommentToParticipants: %v", err)
+ ct := fmt.Sprintf("Reopened #%d.", issue.Index)
+ if err = mailIssueCommentToParticipants(e, issue, c.Poster, ct, c, mentions); err != nil {
+ log.Error("mailIssueCommentToParticipants: %v", err)
+ }
}
return nil
diff --git a/models/issue_mail.go b/models/issue_mail.go
index 16f85ba378..01a12b16d2 100644
--- a/models/issue_mail.go
+++ b/models/issue_mail.go
@@ -118,26 +118,41 @@ func mailIssueCommentToParticipants(e Engine, issue *Issue, doer *User, content
// MailParticipants sends new issue thread created emails to repository watchers
// and mentioned people.
-func (issue *Issue) MailParticipants(opType ActionType) (err error) {
- return issue.mailParticipants(x, opType)
+func (issue *Issue) MailParticipants(doer *User, opType ActionType) (err error) {
+ return issue.mailParticipants(x, doer, opType)
}
-func (issue *Issue) mailParticipants(e Engine, opType ActionType) (err error) {
+func (issue *Issue) mailParticipants(e Engine, doer *User, opType ActionType) (err error) {
mentions := markup.FindAllMentions(issue.Content)
+
if err = UpdateIssueMentions(e, issue.ID, mentions); err != nil {
return fmt.Errorf("UpdateIssueMentions [%d]: %v", issue.ID, err)
}
- var content = issue.Content
+ if len(issue.Content) > 0 {
+ if err = mailIssueCommentToParticipants(e, issue, doer, issue.Content, nil, mentions); err != nil {
+ log.Error("mailIssueCommentToParticipants: %v", err)
+ }
+ }
+
switch opType {
+ case ActionCreateIssue, ActionCreatePullRequest:
+ if len(issue.Content) == 0 {
+ ct := fmt.Sprintf("Created #%d.", issue.Index)
+ if err = mailIssueCommentToParticipants(e, issue, doer, ct, nil, mentions); err != nil {
+ log.Error("mailIssueCommentToParticipants: %v", err)
+ }
+ }
case ActionCloseIssue, ActionClosePullRequest:
- content = fmt.Sprintf("Closed #%d", issue.Index)
+ ct := fmt.Sprintf("Closed #%d.", issue.Index)
+ if err = mailIssueCommentToParticipants(e, issue, doer, ct, nil, mentions); err != nil {
+ log.Error("mailIssueCommentToParticipants: %v", err)
+ }
case ActionReopenIssue, ActionReopenPullRequest:
- content = fmt.Sprintf("Reopened #%d", issue.Index)
- }
-
- if err = mailIssueCommentToParticipants(e, issue, issue.Poster, content, nil, mentions); err != nil {
- log.Error("mailIssueCommentToParticipants: %v", err)
+ ct := fmt.Sprintf("Reopened #%d.", issue.Index)
+ if err = mailIssueCommentToParticipants(e, issue, doer, ct, nil, mentions); err != nil {
+ log.Error("mailIssueCommentToParticipants: %v", err)
+ }
}
return nil
diff --git a/modules/notification/mail/mail.go b/modules/notification/mail/mail.go
index 9689f4d4ab..9d0db4f415 100644
--- a/modules/notification/mail/mail.go
+++ b/modules/notification/mail/mail.go
@@ -42,7 +42,7 @@ func (m *mailNotifier) NotifyCreateIssueComment(doer *models.User, repo *models.
}
func (m *mailNotifier) NotifyNewIssue(issue *models.Issue) {
- if err := issue.MailParticipants(models.ActionCreateIssue); err != nil {
+ if err := issue.MailParticipants(issue.Poster, models.ActionCreateIssue); err != nil {
log.Error("MailParticipants: %v", err)
}
}
@@ -63,13 +63,13 @@ func (m *mailNotifier) NotifyIssueChangeStatus(doer *models.User, issue *models.
}
}
- if err := issue.MailParticipants(actionType); err != nil {
+ if err := issue.MailParticipants(doer, actionType); err != nil {
log.Error("MailParticipants: %v", err)
}
}
func (m *mailNotifier) NotifyNewPullRequest(pr *models.PullRequest) {
- if err := pr.Issue.MailParticipants(models.ActionCreatePullRequest); err != nil {
+ if err := pr.Issue.MailParticipants(pr.Issue.Poster, models.ActionCreatePullRequest); err != nil {
log.Error("MailParticipants: %v", err)
}
}