summaryrefslogtreecommitdiffstats
path: root/services/mailer/mail_comment.go
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2019-09-24 13:02:49 +0800
committerGitHub <noreply@github.com>2019-09-24 13:02:49 +0800
commit5a438ee3c0303efcb9d1935ff521917fe8a109e8 (patch)
tree8f36452631fc8a6d077addbbf857da6d50024a0a /services/mailer/mail_comment.go
parent730065a3dc72683460b95ba1486dba8ec355a373 (diff)
downloadgitea-5a438ee3c0303efcb9d1935ff521917fe8a109e8.tar.gz
gitea-5a438ee3c0303efcb9d1935ff521917fe8a109e8.zip
Move all mail related codes from models to services/mailer (#7200)
* move all mail related codes from models to modules/mailer * fix lint * use DBContext instead Engine * use WithContext not WithEngine * Use DBContext instead of Engine * don't use defer when sess.Close() * move DBContext to context.go and add some methods * move mailer from modules/ to services * fix lint * fix tests * fix fmt * add gitea copyright * fix tests * don't expose db functions * make code clear * add DefaultDBContext * fix build * fix bug
Diffstat (limited to 'services/mailer/mail_comment.go')
-rw-r--r--services/mailer/mail_comment.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/services/mailer/mail_comment.go b/services/mailer/mail_comment.go
new file mode 100644
index 0000000000..cb477f887b
--- /dev/null
+++ b/services/mailer/mail_comment.go
@@ -0,0 +1,47 @@
+// Copyright 2019 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package mailer
+
+import (
+ "fmt"
+
+ "code.gitea.io/gitea/models"
+ "code.gitea.io/gitea/modules/log"
+ "code.gitea.io/gitea/modules/markup"
+)
+
+// MailParticipantsComment sends new comment emails to repository watchers
+// and mentioned people.
+func MailParticipantsComment(c *models.Comment, opType models.ActionType, issue *models.Issue) error {
+ return mailParticipantsComment(models.DefaultDBContext(), c, opType, issue)
+}
+
+func mailParticipantsComment(ctx models.DBContext, c *models.Comment, opType models.ActionType, issue *models.Issue) (err error) {
+ mentions := markup.FindAllMentions(c.Content)
+ if err = models.UpdateIssueMentions(ctx, c.IssueID, mentions); err != nil {
+ return fmt.Errorf("UpdateIssueMentions [%d]: %v", c.IssueID, err)
+ }
+
+ if len(c.Content) > 0 {
+ if err = mailIssueCommentToParticipants(issue, c.Poster, c.Content, c, mentions); err != nil {
+ log.Error("mailIssueCommentToParticipants: %v", err)
+ }
+ }
+
+ switch opType {
+ case models.ActionCloseIssue:
+ ct := fmt.Sprintf("Closed #%d.", issue.Index)
+ if err = mailIssueCommentToParticipants(issue, c.Poster, ct, c, mentions); err != nil {
+ log.Error("mailIssueCommentToParticipants: %v", err)
+ }
+ case models.ActionReopenIssue:
+ ct := fmt.Sprintf("Reopened #%d.", issue.Index)
+ if err = mailIssueCommentToParticipants(issue, c.Poster, ct, c, mentions); err != nil {
+ log.Error("mailIssueCommentToParticipants: %v", err)
+ }
+ }
+
+ return nil
+}