aboutsummaryrefslogtreecommitdiffstats
path: root/modules/notification
diff options
context:
space:
mode:
author赵智超 <1012112796@qq.com>2020-05-20 20:47:24 +0800
committerGitHub <noreply@github.com>2020-05-20 09:47:24 -0300
commit0903b1ac8c7b64bb571d02cdd69fa671cc1c18c1 (patch)
treeeaa680114a5a0d736ff7b71baf526fe2bb1f2966 /modules/notification
parent9e0e2a9fcfae4336958dc3e93d4beacfc7a2f642 (diff)
downloadgitea-0903b1ac8c7b64bb571d02cdd69fa671cc1c18c1.tar.gz
gitea-0903b1ac8c7b64bb571d02cdd69fa671cc1c18c1.zip
Add push commits history comment on PR time-line (#11167)
* Add push commits history comment on PR time-line * Add notify by email and ui of this comment type also Signed-off-by: a1012112796 <1012112796@qq.com> * Add migrations for IsForcePush * fix wrong force-push judgement * Apply suggestions from code review * Remove commit number check * add own notify fun * fix some typo Co-authored-by: guillep2k <18600385+guillep2k@users.noreply.github.com> * fix lint * fix style again, I forgot something before * Change email notify way * fix api * add number check if It's force-push * Add repo commit link fuction remove unnecessary check skip show push commits comment which not have commits alive * Update issue_comment.go * Apply suggestions from code review Co-authored-by: mrsdizzie <info@mrsdizzie.com> * Apply suggestions from code review * fix ui view Co-authored-by: silverwind <me@silverwind.io> * fix height * remove unnecessary style define * simplify GetBranchName * Apply suggestions from code review * save commit ids and isForce push by json * simplify GetBranchName * fix bug Co-authored-by: guillep2k <18600385+guillep2k@users.noreply.github.com> Co-authored-by: mrsdizzie <info@mrsdizzie.com> Co-authored-by: Lauris BH <lauris@nix.lv> Co-authored-by: silverwind <me@silverwind.io>
Diffstat (limited to 'modules/notification')
-rw-r--r--modules/notification/base/notifier.go1
-rw-r--r--modules/notification/base/null.go4
-rw-r--r--modules/notification/mail/mail.go28
-rw-r--r--modules/notification/notification.go7
-rw-r--r--modules/notification/ui/ui.go9
5 files changed, 49 insertions, 0 deletions
diff --git a/modules/notification/base/notifier.go b/modules/notification/base/notifier.go
index 0b3e1173b3..428f9a9544 100644
--- a/modules/notification/base/notifier.go
+++ b/modules/notification/base/notifier.go
@@ -36,6 +36,7 @@ type Notifier interface {
NotifyPullRequestSynchronized(doer *models.User, pr *models.PullRequest)
NotifyPullRequestReview(*models.PullRequest, *models.Review, *models.Comment)
NotifyPullRequestChangeTargetBranch(doer *models.User, pr *models.PullRequest, oldBranch string)
+ NotifyPullRequestPushCommits(doer *models.User, pr *models.PullRequest, comment *models.Comment)
NotifyCreateIssueComment(*models.User, *models.Repository,
*models.Issue, *models.Comment)
diff --git a/modules/notification/base/null.go b/modules/notification/base/null.go
index d2fd51d713..b2ce0742b6 100644
--- a/modules/notification/base/null.go
+++ b/modules/notification/base/null.go
@@ -54,6 +54,10 @@ func (*NullNotifier) NotifyPullRequestSynchronized(doer *models.User, pr *models
func (*NullNotifier) NotifyPullRequestChangeTargetBranch(doer *models.User, pr *models.PullRequest, oldBranch string) {
}
+// NotifyPullRequestPushCommits notifies when push commits to pull request's head branch
+func (*NullNotifier) NotifyPullRequestPushCommits(doer *models.User, pr *models.PullRequest, comment *models.Comment) {
+}
+
// NotifyUpdateComment places a place holder function
func (*NullNotifier) NotifyUpdateComment(doer *models.User, c *models.Comment, oldContent string) {
}
diff --git a/modules/notification/mail/mail.go b/modules/notification/mail/mail.go
index b980db7e4b..795c8af2c8 100644
--- a/modules/notification/mail/mail.go
+++ b/modules/notification/mail/mail.go
@@ -37,6 +37,8 @@ func (m *mailNotifier) NotifyCreateIssueComment(doer *models.User, repo *models.
act = models.ActionCommentIssue
} else if comment.Type == models.CommentTypeCode {
act = models.ActionCommentIssue
+ } else if comment.Type == models.CommentTypePullPush {
+ act = 0
}
if err := mailer.MailParticipantsComment(comment, act, issue); err != nil {
@@ -117,3 +119,29 @@ func (m *mailNotifier) NotifyMergePullRequest(pr *models.PullRequest, doer *mode
log.Error("MailParticipants: %v", err)
}
}
+
+func (m *mailNotifier) NotifyPullRequestPushCommits(doer *models.User, pr *models.PullRequest, comment *models.Comment) {
+ var err error
+ if err = comment.LoadIssue(); err != nil {
+ log.Error("comment.LoadIssue: %v", err)
+ return
+ }
+ if err = comment.Issue.LoadRepo(); err != nil {
+ log.Error("comment.Issue.LoadRepo: %v", err)
+ return
+ }
+ if err = comment.Issue.LoadPullRequest(); err != nil {
+ log.Error("comment.Issue.LoadPullRequest: %v", err)
+ return
+ }
+ if err = comment.Issue.PullRequest.LoadBaseRepo(); err != nil {
+ log.Error("comment.Issue.PullRequest.LoadBaseRepo: %v", err)
+ return
+ }
+ if err := comment.LoadPushCommits(); err != nil {
+ log.Error("comment.LoadPushCommits: %v", err)
+ }
+ comment.Content = ""
+
+ m.NotifyCreateIssueComment(doer, comment.Issue.Repo, comment.Issue, comment)
+}
diff --git a/modules/notification/notification.go b/modules/notification/notification.go
index d120246634..d17b13b9e5 100644
--- a/modules/notification/notification.go
+++ b/modules/notification/notification.go
@@ -94,6 +94,13 @@ func NotifyPullRequestChangeTargetBranch(doer *models.User, pr *models.PullReque
}
}
+// NotifyPullRequestPushCommits notifies when push commits to pull request's head branch
+func NotifyPullRequestPushCommits(doer *models.User, pr *models.PullRequest, comment *models.Comment) {
+ for _, notifier := range notifiers {
+ notifier.NotifyPullRequestPushCommits(doer, pr, comment)
+ }
+}
+
// NotifyUpdateComment notifies update comment to notifiers
func NotifyUpdateComment(doer *models.User, c *models.Comment, oldContent string) {
for _, notifier := range notifiers {
diff --git a/modules/notification/ui/ui.go b/modules/notification/ui/ui.go
index 7f7de10bed..cadc9720d5 100644
--- a/modules/notification/ui/ui.go
+++ b/modules/notification/ui/ui.go
@@ -105,6 +105,15 @@ func (ns *notificationService) NotifyPullRequestReview(pr *models.PullRequest, r
_ = ns.issueQueue.Push(opts)
}
+func (ns *notificationService) NotifyPullRequestPushCommits(doer *models.User, pr *models.PullRequest, comment *models.Comment) {
+ var opts = issueNotificationOpts{
+ IssueID: pr.IssueID,
+ NotificationAuthorID: doer.ID,
+ CommentID: comment.ID,
+ }
+ _ = ns.issueQueue.Push(opts)
+}
+
func (ns *notificationService) NotifyIssueChangeAssignee(doer *models.User, issue *models.Issue, assignee *models.User, removed bool, comment *models.Comment) {
if !removed {
var opts = issueNotificationOpts{