Skip to content

Commit 7c4c01c

Browse files
jolheiserlunny
authored andcommitted
Fix review webhooks (#8570)
Signed-off-by: jolheiser <[email protected]>
1 parent d44053e commit 7c4c01c

File tree

3 files changed

+40
-16
lines changed

3 files changed

+40
-16
lines changed

models/webhook_discord.go

+11-1
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,17 @@ func getDiscordPullRequestApprovalPayload(p *api.PullRequestPayload, meta *Disco
413413

414414
title = fmt.Sprintf("[%s] Pull request review %s: #%d %s", p.Repository.FullName, action, p.Index, p.PullRequest.Title)
415415
text = p.PullRequest.Body
416-
color = warnColor
416+
417+
switch event {
418+
case HookEventPullRequestApproved:
419+
color = successColor
420+
case HookEventPullRequestRejected:
421+
color = failedColor
422+
case HookEventPullRequestComment:
423+
fallthrough
424+
default:
425+
color = warnColor
426+
}
417427
}
418428

419429
return &DiscordPayload{

routers/repo/pull_review.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ func SubmitReview(ctx *context.Context, form auth.SubmitReviewForm) {
157157
return
158158
}
159159
// No current review. Create a new one!
160-
if review, err = models.CreateReview(models.CreateReviewOptions{
160+
if review, err = pull_service.CreateReview(models.CreateReviewOptions{
161161
Type: reviewType,
162162
Issue: issue,
163163
Reviewer: ctx.User,
@@ -169,7 +169,7 @@ func SubmitReview(ctx *context.Context, form auth.SubmitReviewForm) {
169169
} else {
170170
review.Content = form.Content
171171
review.Type = reviewType
172-
if err = models.UpdateReview(review); err != nil {
172+
if err = pull_service.UpdateReview(review); err != nil {
173173
ctx.ServerError("UpdateReview", err)
174174
return
175175
}

services/pull/review.go

+27-13
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,23 @@ func CreateReview(opts models.CreateReviewOptions) (*models.Review, error) {
1717
return nil, err
1818
}
1919

20+
return review, reviewHook(review)
21+
}
22+
23+
// UpdateReview updates a review
24+
func UpdateReview(review *models.Review) error {
25+
err := models.UpdateReview(review)
26+
if err != nil {
27+
return err
28+
}
29+
30+
return reviewHook(review)
31+
}
32+
33+
func reviewHook(review *models.Review) error {
2034
var reviewHookType models.HookEventType
2135

22-
switch opts.Type {
36+
switch review.Type {
2337
case models.ReviewTypeApprove:
2438
reviewHookType = models.HookEventPullRequestApproved
2539
case models.ReviewTypeComment:
@@ -28,30 +42,30 @@ func CreateReview(opts models.CreateReviewOptions) (*models.Review, error) {
2842
reviewHookType = models.HookEventPullRequestRejected
2943
default:
3044
// unsupported review webhook type here
31-
return review, nil
45+
return nil
3246
}
3347

34-
pr := opts.Issue.PullRequest
48+
pr := review.Issue.PullRequest
3549

3650
if err := pr.LoadIssue(); err != nil {
37-
return nil, err
51+
return err
3852
}
3953

40-
mode, err := models.AccessLevel(opts.Issue.Poster, opts.Issue.Repo)
54+
mode, err := models.AccessLevel(review.Issue.Poster, review.Issue.Repo)
4155
if err != nil {
42-
return nil, err
56+
return err
4357
}
4458

45-
if err := models.PrepareWebhooks(opts.Issue.Repo, reviewHookType, &api.PullRequestPayload{
59+
if err := models.PrepareWebhooks(review.Issue.Repo, reviewHookType, &api.PullRequestPayload{
4660
Action: api.HookIssueSynchronized,
47-
Index: opts.Issue.Index,
61+
Index: review.Issue.Index,
4862
PullRequest: pr.APIFormat(),
49-
Repository: opts.Issue.Repo.APIFormat(mode),
50-
Sender: opts.Reviewer.APIFormat(),
63+
Repository: review.Issue.Repo.APIFormat(mode),
64+
Sender: review.Reviewer.APIFormat(),
5165
}); err != nil {
52-
return nil, err
66+
return err
5367
}
54-
go models.HookQueue.Add(opts.Issue.Repo.ID)
68+
go models.HookQueue.Add(review.Issue.Repo.ID)
5569

56-
return review, nil
70+
return nil
5771
}

0 commit comments

Comments
 (0)