diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/convert/pull_review.go | 1 | ||||
-rw-r--r-- | modules/forms/repo_form.go | 6 | ||||
-rw-r--r-- | modules/notification/action/action.go | 20 | ||||
-rw-r--r-- | modules/notification/base/notifier.go | 1 | ||||
-rw-r--r-- | modules/notification/base/null.go | 4 | ||||
-rw-r--r-- | modules/notification/mail/mail.go | 6 | ||||
-rw-r--r-- | modules/notification/notification.go | 7 | ||||
-rw-r--r-- | modules/notification/ui/ui.go | 9 | ||||
-rw-r--r-- | modules/structs/pull_review.go | 6 | ||||
-rw-r--r-- | modules/templates/helper.go | 2 |
10 files changed, 62 insertions, 0 deletions
diff --git a/modules/convert/pull_review.go b/modules/convert/pull_review.go index 0ef1fec39c..d1d6e767d4 100644 --- a/modules/convert/pull_review.go +++ b/modules/convert/pull_review.go @@ -34,6 +34,7 @@ func ToPullReview(r *models.Review, doer *models.User) (*api.PullReview, error) CommitID: r.CommitID, Stale: r.Stale, Official: r.Official, + Dismissed: r.Dismissed, CodeCommentsCount: r.GetCodeCommentsCount(), Submitted: r.CreatedUnix.AsTime(), HTMLURL: r.HTMLURL(), diff --git a/modules/forms/repo_form.go b/modules/forms/repo_form.go index f177b21f05..48af3450f3 100644 --- a/modules/forms/repo_form.go +++ b/modules/forms/repo_form.go @@ -622,6 +622,12 @@ func (f SubmitReviewForm) HasEmptyContent() bool { len(strings.TrimSpace(f.Content)) == 0 } +// DismissReviewForm for dismissing stale review by repo admin +type DismissReviewForm struct { + ReviewID int64 `binding:"Required"` + Message string +} + // __________ .__ // \______ \ ____ | | ____ _____ ______ ____ // | _// __ \| | _/ __ \\__ \ / ___// __ \ diff --git a/modules/notification/action/action.go b/modules/notification/action/action.go index 360906f076..836cb51b3e 100644 --- a/modules/notification/action/action.go +++ b/modules/notification/action/action.go @@ -275,6 +275,26 @@ func (*actionNotifier) NotifyMergePullRequest(pr *models.PullRequest, doer *mode } } +func (*actionNotifier) NotifyPullRevieweDismiss(doer *models.User, review *models.Review, comment *models.Comment) { + reviewerName := review.Reviewer.Name + if len(review.OriginalAuthor) > 0 { + reviewerName = review.OriginalAuthor + } + if err := models.NotifyWatchers(&models.Action{ + ActUserID: doer.ID, + ActUser: doer, + OpType: models.ActionPullReviewDismissed, + Content: fmt.Sprintf("%d|%s|%s", review.Issue.Index, reviewerName, comment.Content), + RepoID: review.Issue.Repo.ID, + Repo: review.Issue.Repo, + IsPrivate: review.Issue.Repo.IsPrivate, + CommentID: comment.ID, + Comment: comment, + }); err != nil { + log.Error("NotifyWatchers [%d]: %v", review.Issue.ID, err) + } +} + func (a *actionNotifier) NotifyPushCommits(pusher *models.User, repo *models.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) { data, err := json.Marshal(commits) if err != nil { diff --git a/modules/notification/base/notifier.go b/modules/notification/base/notifier.go index b01026dfc5..5bb833d275 100644 --- a/modules/notification/base/notifier.go +++ b/modules/notification/base/notifier.go @@ -39,6 +39,7 @@ type Notifier interface { NotifyPullRequestCodeComment(pr *models.PullRequest, comment *models.Comment, mentions []*models.User) NotifyPullRequestChangeTargetBranch(doer *models.User, pr *models.PullRequest, oldBranch string) NotifyPullRequestPushCommits(doer *models.User, pr *models.PullRequest, comment *models.Comment) + NotifyPullRevieweDismiss(doer *models.User, review *models.Review, comment *models.Comment) NotifyCreateIssueComment(doer *models.User, repo *models.Repository, issue *models.Issue, comment *models.Comment, mentions []*models.User) diff --git a/modules/notification/base/null.go b/modules/notification/base/null.go index d80ba859f3..2386f925ce 100644 --- a/modules/notification/base/null.go +++ b/modules/notification/base/null.go @@ -62,6 +62,10 @@ func (*NullNotifier) NotifyPullRequestChangeTargetBranch(doer *models.User, pr * func (*NullNotifier) NotifyPullRequestPushCommits(doer *models.User, pr *models.PullRequest, comment *models.Comment) { } +// NotifyPullRevieweDismiss notifies when a review was dismissed by repo admin +func (*NullNotifier) NotifyPullRevieweDismiss(doer *models.User, review *models.Review, 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 ee8a0c436c..f984ea7661 100644 --- a/modules/notification/mail/mail.go +++ b/modules/notification/mail/mail.go @@ -152,6 +152,12 @@ func (m *mailNotifier) NotifyPullRequestPushCommits(doer *models.User, pr *model m.NotifyCreateIssueComment(doer, comment.Issue.Repo, comment.Issue, comment, nil) } +func (m *mailNotifier) NotifyPullRevieweDismiss(doer *models.User, review *models.Review, comment *models.Comment) { + if err := mailer.MailParticipantsComment(comment, models.ActionPullReviewDismissed, review.Issue, []*models.User{}); err != nil { + log.Error("MailParticipantsComment: %v", err) + } +} + func (m *mailNotifier) NotifyNewRelease(rel *models.Release) { if err := rel.LoadAttributes(); err != nil { log.Error("NotifyNewRelease: %v", err) diff --git a/modules/notification/notification.go b/modules/notification/notification.go index 7ced57ce2d..d22d157bec 100644 --- a/modules/notification/notification.go +++ b/modules/notification/notification.go @@ -108,6 +108,13 @@ func NotifyPullRequestPushCommits(doer *models.User, pr *models.PullRequest, com } } +// NotifyPullRevieweDismiss notifies when a review was dismissed by repo admin +func NotifyPullRevieweDismiss(doer *models.User, review *models.Review, comment *models.Comment) { + for _, notifier := range notifiers { + notifier.NotifyPullRevieweDismiss(doer, review, 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 8e510e9cd4..25ea4d91c6 100644 --- a/modules/notification/ui/ui.go +++ b/modules/notification/ui/ui.go @@ -161,6 +161,15 @@ func (ns *notificationService) NotifyPullRequestPushCommits(doer *models.User, p _ = ns.issueQueue.Push(opts) } +func (ns *notificationService) NotifyPullRevieweDismiss(doer *models.User, review *models.Review, comment *models.Comment) { + var opts = issueNotificationOpts{ + IssueID: review.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{ diff --git a/modules/structs/pull_review.go b/modules/structs/pull_review.go index 07fa968d28..261d00fde8 100644 --- a/modules/structs/pull_review.go +++ b/modules/structs/pull_review.go @@ -36,6 +36,7 @@ type PullReview struct { CommitID string `json:"commit_id"` Stale bool `json:"stale"` Official bool `json:"official"` + Dismissed bool `json:"dismissed"` CodeCommentsCount int `json:"comments_count"` // swagger:strfmt date-time Submitted time.Time `json:"submitted_at"` @@ -92,6 +93,11 @@ type SubmitPullReviewOptions struct { Body string `json:"body"` } +// DismissPullReviewOptions are options to dismiss a pull review +type DismissPullReviewOptions struct { + Message string `json:"message"` +} + // PullReviewRequestOptions are options to add or remove pull review requests type PullReviewRequestOptions struct { Reviewers []string `json:"reviewers"` diff --git a/modules/templates/helper.go b/modules/templates/helper.go index 987a6ad983..b8e4f5d505 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -798,6 +798,8 @@ func ActionIcon(opType models.ActionType) string { return "diff" case models.ActionPublishRelease: return "tag" + case models.ActionPullReviewDismissed: + return "x" default: return "question" } |