From 1df701fd1abbcee93dfcd3cdb114a0f35cb6be45 Mon Sep 17 00:00:00 2001
From: mrsdizzie
Date: Sun, 22 Dec 2019 03:29:26 -0500
Subject: [PATCH] Add ActionCommentPull action (#9456)
* Add ActionCommentPull action
Adds ActionCommentPull action to distinguish between a comment on an
issue and on a pull request
* Update modules/notification/action/action.go
Co-authored-by: Lunny Xiao
---
models/action.go | 1 +
models/repo_watch.go | 2 +-
modules/notification/action/action.go | 10 +++++++---
modules/notification/mail/mail.go | 2 +-
modules/templates/helper.go | 2 +-
options/locale/locale_en-US.ini | 1 +
services/mailer/mail.go | 2 +-
services/mailer/mail_test.go | 2 +-
templates/user/dashboard/feeds.tmpl | 5 ++++-
9 files changed, 18 insertions(+), 9 deletions(-)
diff --git a/models/action.go b/models/action.go
index bd7ceb4b369d..dd642c6c1f99 100644
--- a/models/action.go
+++ b/models/action.go
@@ -50,6 +50,7 @@ const (
ActionMirrorSyncDelete // 20
ActionApprovePullRequest // 21
ActionRejectPullRequest // 22
+ ActionCommentPull // 23
)
// Action represents user operation type and other information to
diff --git a/models/repo_watch.go b/models/repo_watch.go
index 2279dcb1156e..7d421081a405 100644
--- a/models/repo_watch.go
+++ b/models/repo_watch.go
@@ -210,7 +210,7 @@ func notifyWatchers(e Engine, act *Action) error {
if !act.Repo.checkUnitUser(e, act.UserID, false, UnitTypeIssues) {
continue
}
- case ActionCreatePullRequest, ActionMergePullRequest, ActionClosePullRequest, ActionReopenPullRequest:
+ case ActionCreatePullRequest, ActionCommentPull, ActionMergePullRequest, ActionClosePullRequest, ActionReopenPullRequest:
if !act.Repo.checkUnitUser(e, act.UserID, false, UnitTypePullRequests) {
continue
}
diff --git a/modules/notification/action/action.go b/modules/notification/action/action.go
index 7441de638a9a..00f049d43207 100644
--- a/modules/notification/action/action.go
+++ b/modules/notification/action/action.go
@@ -90,7 +90,6 @@ func (a *actionNotifier) NotifyIssueChangeStatus(doer *models.User, issue *model
func (a *actionNotifier) NotifyCreateIssueComment(doer *models.User, repo *models.Repository,
issue *models.Issue, comment *models.Comment) {
act := &models.Action{
- OpType: models.ActionCommentIssue,
ActUserID: doer.ID,
ActUser: doer,
Content: fmt.Sprintf("%d|%s", issue.Index, comment.Content),
@@ -100,6 +99,11 @@ func (a *actionNotifier) NotifyCreateIssueComment(doer *models.User, repo *model
CommentID: comment.ID,
IsPrivate: issue.Repo.IsPrivate,
}
+ if issue.IsPull {
+ act.OpType = models.ActionCommentPull
+ } else {
+ act.OpType = models.ActionCommentIssue
+ }
// Notify watchers for whatever action comes in, ignore if no action type.
if err := models.NotifyWatchers(act); err != nil {
@@ -208,7 +212,7 @@ func (a *actionNotifier) NotifyPullRequestReview(pr *models.PullRequest, review
ActUserID: review.Reviewer.ID,
ActUser: review.Reviewer,
Content: fmt.Sprintf("%d|%s", review.Issue.Index, strings.Split(comm.Content, "\n")[0]),
- OpType: models.ActionCommentIssue,
+ OpType: models.ActionCommentPull,
RepoID: review.Issue.RepoID,
Repo: review.Issue.Repo,
IsPrivate: review.Issue.Repo.IsPrivate,
@@ -237,7 +241,7 @@ func (a *actionNotifier) NotifyPullRequestReview(pr *models.PullRequest, review
case models.ReviewTypeReject:
action.OpType = models.ActionRejectPullRequest
default:
- action.OpType = models.ActionCommentIssue
+ action.OpType = models.ActionCommentPull
}
actions = append(actions, action)
diff --git a/modules/notification/mail/mail.go b/modules/notification/mail/mail.go
index e9a6ad7af202..5148434dca23 100644
--- a/modules/notification/mail/mail.go
+++ b/modules/notification/mail/mail.go
@@ -85,7 +85,7 @@ func (m *mailNotifier) NotifyPullRequestReview(pr *models.PullRequest, r *models
} else if comment.Type == models.CommentTypeReopen {
act = models.ActionReopenIssue
} else if comment.Type == models.CommentTypeComment {
- act = models.ActionCommentIssue
+ act = models.ActionCommentPull
}
if err := mailer.MailParticipantsComment(comment, act, pr.Issue); err != nil {
log.Error("MailParticipantsComment: %v", err)
diff --git a/modules/templates/helper.go b/modules/templates/helper.go
index 8b5497a1c9ac..e0cdcbf60a6f 100644
--- a/modules/templates/helper.go
+++ b/modules/templates/helper.go
@@ -548,7 +548,7 @@ func ActionIcon(opType models.ActionType) string {
return "issue-opened"
case models.ActionCreatePullRequest:
return "git-pull-request"
- case models.ActionCommentIssue:
+ case models.ActionCommentIssue, models.ActionCommentPull:
return "comment-discussion"
case models.ActionMergePullRequest:
return "git-merge"
diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index 97596451bcdf..c9416e727a2b 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -2047,6 +2047,7 @@ create_pull_request = `created pull request %s#%[2]s`
close_pull_request = `closed pull request %s#%[2]s`
reopen_pull_request = `reopened pull request %s#%[2]s`
comment_issue = `commented on issue %s#%[2]s`
+comment_pull = `commented on pull request %s#%[2]s`
merge_pull_request = `merged pull request %s#%[2]s`
transfer_repo = transferred repository %s
to %s
push_tag = pushed tag %[2]s to %[3]s
diff --git a/services/mailer/mail.go b/services/mailer/mail.go
index 7d26487a0712..a8768de6cdbd 100644
--- a/services/mailer/mail.go
+++ b/services/mailer/mail.go
@@ -291,7 +291,7 @@ func actionToTemplate(issue *models.Issue, actionType models.ActionType,
switch actionType {
case models.ActionCreateIssue, models.ActionCreatePullRequest:
name = "new"
- case models.ActionCommentIssue:
+ case models.ActionCommentIssue, models.ActionCommentPull:
name = "comment"
case models.ActionCloseIssue, models.ActionClosePullRequest:
name = "close"
diff --git a/services/mailer/mail_test.go b/services/mailer/mail_test.go
index fd87a157b27b..43e99c635e78 100644
--- a/services/mailer/mail_test.go
+++ b/services/mailer/mail_test.go
@@ -153,7 +153,7 @@ func TestTemplateSelection(t *testing.T) {
pull := models.AssertExistsAndLoadBean(t, &models.Issue{ID: 2, Repo: repo, Poster: doer}).(*models.Issue)
comment = models.AssertExistsAndLoadBean(t, &models.Comment{ID: 4, Issue: pull}).(*models.Comment)
- msg = testComposeIssueCommentMessage(t, &mailCommentContext{Issue: pull, Doer: doer, ActionType: models.ActionCommentIssue,
+ msg = testComposeIssueCommentMessage(t, &mailCommentContext{Issue: pull, Doer: doer, ActionType: models.ActionCommentPull,
Content: "test body", Comment: comment}, tos, false, "TestTemplateSelection")
expect(t, msg, "pull/comment/subject", "pull/comment/body")
diff --git a/templates/user/dashboard/feeds.tmpl b/templates/user/dashboard/feeds.tmpl
index 48cdb49c15de..7c4b1da0c789 100644
--- a/templates/user/dashboard/feeds.tmpl
+++ b/templates/user/dashboard/feeds.tmpl
@@ -67,6 +67,9 @@
{{else if eq .GetOpType 22}}
{{ $index := index .GetIssueInfos 0}}
{{$.i18n.Tr "action.reject_pull_request" .GetRepoLink $index .ShortRepoPath | Str2html}}
+ {{else if eq .GetOpType 23}}
+ {{ $index := index .GetIssueInfos 0}}
+ {{$.i18n.Tr "action.comment_pull" .GetRepoLink $index .ShortRepoPath | Str2html}}
{{end}}
{{if or (eq .GetOpType 5) (eq .GetOpType 18)}}
@@ -86,7 +89,7 @@
{{index .GetIssueInfos 1}}
{{else if eq .GetOpType 7}}
{{index .GetIssueInfos 1}}
- {{else if or (eq .GetOpType 10) (eq .GetOpType 21) (eq .GetOpType 22)}}
+ {{else if or (eq .GetOpType 10) (eq .GetOpType 21) (eq .GetOpType 22) (eq .GetOpType 23)}}
{{.GetIssueTitle}}
{{index .GetIssueInfos 1}}
{{else if eq .GetOpType 11}}