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 <xiaolunwen@gmail.com>
This commit is contained in:
parent
875d6b2f8e
commit
1df701fd1a
9 changed files with 18 additions and 9 deletions
|
@ -50,6 +50,7 @@ const (
|
||||||
ActionMirrorSyncDelete // 20
|
ActionMirrorSyncDelete // 20
|
||||||
ActionApprovePullRequest // 21
|
ActionApprovePullRequest // 21
|
||||||
ActionRejectPullRequest // 22
|
ActionRejectPullRequest // 22
|
||||||
|
ActionCommentPull // 23
|
||||||
)
|
)
|
||||||
|
|
||||||
// Action represents user operation type and other information to
|
// Action represents user operation type and other information to
|
||||||
|
|
|
@ -210,7 +210,7 @@ func notifyWatchers(e Engine, act *Action) error {
|
||||||
if !act.Repo.checkUnitUser(e, act.UserID, false, UnitTypeIssues) {
|
if !act.Repo.checkUnitUser(e, act.UserID, false, UnitTypeIssues) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
case ActionCreatePullRequest, ActionMergePullRequest, ActionClosePullRequest, ActionReopenPullRequest:
|
case ActionCreatePullRequest, ActionCommentPull, ActionMergePullRequest, ActionClosePullRequest, ActionReopenPullRequest:
|
||||||
if !act.Repo.checkUnitUser(e, act.UserID, false, UnitTypePullRequests) {
|
if !act.Repo.checkUnitUser(e, act.UserID, false, UnitTypePullRequests) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,7 +90,6 @@ func (a *actionNotifier) NotifyIssueChangeStatus(doer *models.User, issue *model
|
||||||
func (a *actionNotifier) NotifyCreateIssueComment(doer *models.User, repo *models.Repository,
|
func (a *actionNotifier) NotifyCreateIssueComment(doer *models.User, repo *models.Repository,
|
||||||
issue *models.Issue, comment *models.Comment) {
|
issue *models.Issue, comment *models.Comment) {
|
||||||
act := &models.Action{
|
act := &models.Action{
|
||||||
OpType: models.ActionCommentIssue,
|
|
||||||
ActUserID: doer.ID,
|
ActUserID: doer.ID,
|
||||||
ActUser: doer,
|
ActUser: doer,
|
||||||
Content: fmt.Sprintf("%d|%s", issue.Index, comment.Content),
|
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,
|
CommentID: comment.ID,
|
||||||
IsPrivate: issue.Repo.IsPrivate,
|
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.
|
// Notify watchers for whatever action comes in, ignore if no action type.
|
||||||
if err := models.NotifyWatchers(act); err != nil {
|
if err := models.NotifyWatchers(act); err != nil {
|
||||||
|
@ -208,7 +212,7 @@ func (a *actionNotifier) NotifyPullRequestReview(pr *models.PullRequest, review
|
||||||
ActUserID: review.Reviewer.ID,
|
ActUserID: review.Reviewer.ID,
|
||||||
ActUser: review.Reviewer,
|
ActUser: review.Reviewer,
|
||||||
Content: fmt.Sprintf("%d|%s", review.Issue.Index, strings.Split(comm.Content, "\n")[0]),
|
Content: fmt.Sprintf("%d|%s", review.Issue.Index, strings.Split(comm.Content, "\n")[0]),
|
||||||
OpType: models.ActionCommentIssue,
|
OpType: models.ActionCommentPull,
|
||||||
RepoID: review.Issue.RepoID,
|
RepoID: review.Issue.RepoID,
|
||||||
Repo: review.Issue.Repo,
|
Repo: review.Issue.Repo,
|
||||||
IsPrivate: review.Issue.Repo.IsPrivate,
|
IsPrivate: review.Issue.Repo.IsPrivate,
|
||||||
|
@ -237,7 +241,7 @@ func (a *actionNotifier) NotifyPullRequestReview(pr *models.PullRequest, review
|
||||||
case models.ReviewTypeReject:
|
case models.ReviewTypeReject:
|
||||||
action.OpType = models.ActionRejectPullRequest
|
action.OpType = models.ActionRejectPullRequest
|
||||||
default:
|
default:
|
||||||
action.OpType = models.ActionCommentIssue
|
action.OpType = models.ActionCommentPull
|
||||||
}
|
}
|
||||||
|
|
||||||
actions = append(actions, action)
|
actions = append(actions, action)
|
||||||
|
|
|
@ -85,7 +85,7 @@ func (m *mailNotifier) NotifyPullRequestReview(pr *models.PullRequest, r *models
|
||||||
} else if comment.Type == models.CommentTypeReopen {
|
} else if comment.Type == models.CommentTypeReopen {
|
||||||
act = models.ActionReopenIssue
|
act = models.ActionReopenIssue
|
||||||
} else if comment.Type == models.CommentTypeComment {
|
} else if comment.Type == models.CommentTypeComment {
|
||||||
act = models.ActionCommentIssue
|
act = models.ActionCommentPull
|
||||||
}
|
}
|
||||||
if err := mailer.MailParticipantsComment(comment, act, pr.Issue); err != nil {
|
if err := mailer.MailParticipantsComment(comment, act, pr.Issue); err != nil {
|
||||||
log.Error("MailParticipantsComment: %v", err)
|
log.Error("MailParticipantsComment: %v", err)
|
||||||
|
|
|
@ -548,7 +548,7 @@ func ActionIcon(opType models.ActionType) string {
|
||||||
return "issue-opened"
|
return "issue-opened"
|
||||||
case models.ActionCreatePullRequest:
|
case models.ActionCreatePullRequest:
|
||||||
return "git-pull-request"
|
return "git-pull-request"
|
||||||
case models.ActionCommentIssue:
|
case models.ActionCommentIssue, models.ActionCommentPull:
|
||||||
return "comment-discussion"
|
return "comment-discussion"
|
||||||
case models.ActionMergePullRequest:
|
case models.ActionMergePullRequest:
|
||||||
return "git-merge"
|
return "git-merge"
|
||||||
|
|
|
@ -2047,6 +2047,7 @@ create_pull_request = `created pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||||
close_pull_request = `closed pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
close_pull_request = `closed pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||||
reopen_pull_request = `reopened pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
reopen_pull_request = `reopened pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||||
comment_issue = `commented on issue <a href="%s/issues/%s">%s#%[2]s</a>`
|
comment_issue = `commented on issue <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||||
|
comment_pull = `commented on pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||||
merge_pull_request = `merged pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
merge_pull_request = `merged pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||||
transfer_repo = transferred repository <code>%s</code> to <a href="%s">%s</a>
|
transfer_repo = transferred repository <code>%s</code> to <a href="%s">%s</a>
|
||||||
push_tag = pushed tag <a href="%s/src/tag/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a>
|
push_tag = pushed tag <a href="%s/src/tag/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a>
|
||||||
|
|
|
@ -291,7 +291,7 @@ func actionToTemplate(issue *models.Issue, actionType models.ActionType,
|
||||||
switch actionType {
|
switch actionType {
|
||||||
case models.ActionCreateIssue, models.ActionCreatePullRequest:
|
case models.ActionCreateIssue, models.ActionCreatePullRequest:
|
||||||
name = "new"
|
name = "new"
|
||||||
case models.ActionCommentIssue:
|
case models.ActionCommentIssue, models.ActionCommentPull:
|
||||||
name = "comment"
|
name = "comment"
|
||||||
case models.ActionCloseIssue, models.ActionClosePullRequest:
|
case models.ActionCloseIssue, models.ActionClosePullRequest:
|
||||||
name = "close"
|
name = "close"
|
||||||
|
|
|
@ -153,7 +153,7 @@ func TestTemplateSelection(t *testing.T) {
|
||||||
|
|
||||||
pull := models.AssertExistsAndLoadBean(t, &models.Issue{ID: 2, Repo: repo, Poster: doer}).(*models.Issue)
|
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)
|
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")
|
Content: "test body", Comment: comment}, tos, false, "TestTemplateSelection")
|
||||||
expect(t, msg, "pull/comment/subject", "pull/comment/body")
|
expect(t, msg, "pull/comment/subject", "pull/comment/body")
|
||||||
|
|
||||||
|
|
|
@ -67,6 +67,9 @@
|
||||||
{{else if eq .GetOpType 22}}
|
{{else if eq .GetOpType 22}}
|
||||||
{{ $index := index .GetIssueInfos 0}}
|
{{ $index := index .GetIssueInfos 0}}
|
||||||
{{$.i18n.Tr "action.reject_pull_request" .GetRepoLink $index .ShortRepoPath | Str2html}}
|
{{$.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}}
|
{{end}}
|
||||||
</p>
|
</p>
|
||||||
{{if or (eq .GetOpType 5) (eq .GetOpType 18)}}
|
{{if or (eq .GetOpType 5) (eq .GetOpType 18)}}
|
||||||
|
@ -86,7 +89,7 @@
|
||||||
<span class="text truncate issue title has-emoji">{{index .GetIssueInfos 1}}</span>
|
<span class="text truncate issue title has-emoji">{{index .GetIssueInfos 1}}</span>
|
||||||
{{else if eq .GetOpType 7}}
|
{{else if eq .GetOpType 7}}
|
||||||
<span class="text truncate issue title has-emoji">{{index .GetIssueInfos 1}}</span>
|
<span class="text truncate issue title has-emoji">{{index .GetIssueInfos 1}}</span>
|
||||||
{{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)}}
|
||||||
<a href="{{.GetCommentLink}}" class="text truncate issue title has-emoji">{{.GetIssueTitle}}</a>
|
<a href="{{.GetCommentLink}}" class="text truncate issue title has-emoji">{{.GetIssueTitle}}</a>
|
||||||
<p class="text light grey has-emoji">{{index .GetIssueInfos 1}}</p>
|
<p class="text light grey has-emoji">{{index .GetIssueInfos 1}}</p>
|
||||||
{{else if eq .GetOpType 11}}
|
{{else if eq .GetOpType 11}}
|
||||||
|
|
Reference in a new issue