From beab2df1227f9b7e556aa5716d94feb3a3e2088e Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sun, 13 Jan 2019 22:42:55 +0800 Subject: Refactor mail notification (#5110) * mail notification implement interface * fix file comment year * use NullNotifier as parent struct of notifiers --- modules/notification/mail/mail.go | 74 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 modules/notification/mail/mail.go (limited to 'modules/notification/mail/mail.go') 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) + } +} -- cgit v1.2.3