diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2019-01-13 22:42:55 +0800 |
---|---|---|
committer | Lauris BH <lauris@nix.lv> | 2019-01-13 16:42:55 +0200 |
commit | beab2df1227f9b7e556aa5716d94feb3a3e2088e (patch) | |
tree | ef72c59cc4e3ab7ccaa29ffc5de4d3a4278e348e /modules/notification/mail/mail.go | |
parent | e5228b8369f7162026b6fa6c1a8a0f07b92d85c7 (diff) | |
download | gitea-beab2df1227f9b7e556aa5716d94feb3a3e2088e.tar.gz gitea-beab2df1227f9b7e556aa5716d94feb3a3e2088e.zip |
Refactor mail notification (#5110)
* mail notification implement interface
* fix file comment year
* use NullNotifier as parent struct of notifiers
Diffstat (limited to 'modules/notification/mail/mail.go')
-rw-r--r-- | modules/notification/mail/mail.go | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/modules/notification/mail/mail.go b/modules/notification/mail/mail.go new file mode 100644 index 0000000000..8bb4173449 --- /dev/null +++ b/modules/notification/mail/mail.go @@ -0,0 +1,74 @@ +// 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 mail + +import ( + "code.gitea.io/gitea/models" + "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/notification/base" +) + +type mailNotifier struct { + base.NullNotifier +} + +var ( + _ base.Notifier = &mailNotifier{} +) + +// NewNotifier create a new mailNotifier notifier +func NewNotifier() base.Notifier { + return &mailNotifier{} +} + +func (m *mailNotifier) NotifyCreateIssueComment(doer *models.User, repo *models.Repository, + issue *models.Issue, comment *models.Comment) { + var act models.ActionType + if comment.Type == models.CommentTypeClose { + act = models.ActionCloseIssue + } else if comment.Type == models.CommentTypeReopen { + act = models.ActionReopenIssue + } else if comment.Type == models.CommentTypeComment { + act = models.ActionCommentIssue + } else if comment.Type == models.CommentTypeCode { + act = models.ActionCommentIssue + } + + if err := comment.MailParticipants(act, issue); err != nil { + log.Error(4, "MailParticipants: %v", err) + } +} + +func (m *mailNotifier) NotifyNewIssue(issue *models.Issue) { + if err := issue.MailParticipants(); err != nil { + log.Error(4, "MailParticipants: %v", err) + } +} + +func (m *mailNotifier) NotifyIssueChangeStatus(doer *models.User, issue *models.Issue, isClosed bool) { + if err := issue.MailParticipants(); err != nil { + log.Error(4, "MailParticipants: %v", err) + } +} + +func (m *mailNotifier) NotifyNewPullRequest(pr *models.PullRequest) { + if err := pr.Issue.MailParticipants(); err != nil { + log.Error(4, "MailParticipants: %v", err) + } +} + +func (m *mailNotifier) NotifyPullRequestReview(pr *models.PullRequest, r *models.Review, comment *models.Comment) { + var act models.ActionType + if comment.Type == models.CommentTypeClose { + act = models.ActionCloseIssue + } else if comment.Type == models.CommentTypeReopen { + act = models.ActionReopenIssue + } else if comment.Type == models.CommentTypeComment { + act = models.ActionCommentIssue + } + if err := comment.MailParticipants(act, pr.Issue); err != nil { + log.Error(4, "MailParticipants: %v", err) + } +} |