mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 11:27:40 -04:00 
			
		
		
		
	Fix review webhooks (#8570)
Signed-off-by: jolheiser <john.olheiser@gmail.com>
This commit is contained in:
		
				
					committed by
					
						 Lunny Xiao
						Lunny Xiao
					
				
			
			
				
	
			
			
			
						parent
						
							d44053eeda
						
					
				
				
					commit
					7c4c01c0fd
				
			| @@ -413,7 +413,17 @@ func getDiscordPullRequestApprovalPayload(p *api.PullRequestPayload, meta *Disco | ||||
|  | ||||
| 		title = fmt.Sprintf("[%s] Pull request review %s: #%d %s", p.Repository.FullName, action, p.Index, p.PullRequest.Title) | ||||
| 		text = p.PullRequest.Body | ||||
| 		color = warnColor | ||||
|  | ||||
| 		switch event { | ||||
| 		case HookEventPullRequestApproved: | ||||
| 			color = successColor | ||||
| 		case HookEventPullRequestRejected: | ||||
| 			color = failedColor | ||||
| 		case HookEventPullRequestComment: | ||||
| 			fallthrough | ||||
| 		default: | ||||
| 			color = warnColor | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return &DiscordPayload{ | ||||
|   | ||||
| @@ -157,7 +157,7 @@ func SubmitReview(ctx *context.Context, form auth.SubmitReviewForm) { | ||||
| 			return | ||||
| 		} | ||||
| 		// No current review. Create a new one! | ||||
| 		if review, err = models.CreateReview(models.CreateReviewOptions{ | ||||
| 		if review, err = pull_service.CreateReview(models.CreateReviewOptions{ | ||||
| 			Type:     reviewType, | ||||
| 			Issue:    issue, | ||||
| 			Reviewer: ctx.User, | ||||
| @@ -169,7 +169,7 @@ func SubmitReview(ctx *context.Context, form auth.SubmitReviewForm) { | ||||
| 	} else { | ||||
| 		review.Content = form.Content | ||||
| 		review.Type = reviewType | ||||
| 		if err = models.UpdateReview(review); err != nil { | ||||
| 		if err = pull_service.UpdateReview(review); err != nil { | ||||
| 			ctx.ServerError("UpdateReview", err) | ||||
| 			return | ||||
| 		} | ||||
|   | ||||
| @@ -17,9 +17,23 @@ func CreateReview(opts models.CreateReviewOptions) (*models.Review, error) { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	return review, reviewHook(review) | ||||
| } | ||||
|  | ||||
| // UpdateReview updates a review | ||||
| func UpdateReview(review *models.Review) error { | ||||
| 	err := models.UpdateReview(review) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	return reviewHook(review) | ||||
| } | ||||
|  | ||||
| func reviewHook(review *models.Review) error { | ||||
| 	var reviewHookType models.HookEventType | ||||
|  | ||||
| 	switch opts.Type { | ||||
| 	switch review.Type { | ||||
| 	case models.ReviewTypeApprove: | ||||
| 		reviewHookType = models.HookEventPullRequestApproved | ||||
| 	case models.ReviewTypeComment: | ||||
| @@ -28,30 +42,30 @@ func CreateReview(opts models.CreateReviewOptions) (*models.Review, error) { | ||||
| 		reviewHookType = models.HookEventPullRequestRejected | ||||
| 	default: | ||||
| 		// unsupported review webhook type here | ||||
| 		return review, nil | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 	pr := opts.Issue.PullRequest | ||||
| 	pr := review.Issue.PullRequest | ||||
|  | ||||
| 	if err := pr.LoadIssue(); err != nil { | ||||
| 		return nil, err | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	mode, err := models.AccessLevel(opts.Issue.Poster, opts.Issue.Repo) | ||||
| 	mode, err := models.AccessLevel(review.Issue.Poster, review.Issue.Repo) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	if err := models.PrepareWebhooks(opts.Issue.Repo, reviewHookType, &api.PullRequestPayload{ | ||||
| 	if err := models.PrepareWebhooks(review.Issue.Repo, reviewHookType, &api.PullRequestPayload{ | ||||
| 		Action:      api.HookIssueSynchronized, | ||||
| 		Index:       opts.Issue.Index, | ||||
| 		Index:       review.Issue.Index, | ||||
| 		PullRequest: pr.APIFormat(), | ||||
| 		Repository:  opts.Issue.Repo.APIFormat(mode), | ||||
| 		Sender:      opts.Reviewer.APIFormat(), | ||||
| 		Repository:  review.Issue.Repo.APIFormat(mode), | ||||
| 		Sender:      review.Reviewer.APIFormat(), | ||||
| 	}); err != nil { | ||||
| 		return nil, err | ||||
| 		return err | ||||
| 	} | ||||
| 	go models.HookQueue.Add(opts.Issue.Repo.ID) | ||||
| 	go models.HookQueue.Add(review.Issue.Repo.ID) | ||||
|  | ||||
| 	return review, nil | ||||
| 	return nil | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user