mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 05:18:25 +00:00 
			
		
		
		
	Don't send trigger for a pending review's comment create/update/delete (#34928)
Fix #18846 Fix #34924 --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		@@ -715,7 +715,8 @@ func (c *Comment) LoadReactions(ctx context.Context, repo *repo_model.Repository
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *Comment) loadReview(ctx context.Context) (err error) {
 | 
					// LoadReview loads the associated review
 | 
				
			||||||
 | 
					func (c *Comment) LoadReview(ctx context.Context) (err error) {
 | 
				
			||||||
	if c.ReviewID == 0 {
 | 
						if c.ReviewID == 0 {
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -732,11 +733,6 @@ func (c *Comment) loadReview(ctx context.Context) (err error) {
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// LoadReview loads the associated review
 | 
					 | 
				
			||||||
func (c *Comment) LoadReview(ctx context.Context) error {
 | 
					 | 
				
			||||||
	return c.loadReview(ctx)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// DiffSide returns "previous" if Comment.Line is a LOC of the previous changes and "proposed" if it is a LOC of the proposed changes.
 | 
					// DiffSide returns "previous" if Comment.Line is a LOC of the previous changes and "proposed" if it is a LOC of the proposed changes.
 | 
				
			||||||
func (c *Comment) DiffSide() string {
 | 
					func (c *Comment) DiffSide() string {
 | 
				
			||||||
	if c.Line < 0 {
 | 
						if c.Line < 0 {
 | 
				
			||||||
@@ -856,7 +852,7 @@ func updateCommentInfos(ctx context.Context, opts *CreateCommentOptions, comment
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		if comment.ReviewID != 0 {
 | 
							if comment.ReviewID != 0 {
 | 
				
			||||||
			if comment.Review == nil {
 | 
								if comment.Review == nil {
 | 
				
			||||||
				if err := comment.loadReview(ctx); err != nil {
 | 
									if err := comment.LoadReview(ctx); err != nil {
 | 
				
			||||||
					return err
 | 
										return err
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,10 +46,25 @@ func DeleteWikiPage(ctx context.Context, doer *user_model.User, repo *repo_model
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func shouldSendCommentChangeNotification(ctx context.Context, comment *issues_model.Comment) bool {
 | 
				
			||||||
 | 
						if err := comment.LoadReview(ctx); err != nil {
 | 
				
			||||||
 | 
							log.Error("LoadReview: %v", err)
 | 
				
			||||||
 | 
							return false
 | 
				
			||||||
 | 
						} else if comment.Review != nil && comment.Review.Type == issues_model.ReviewTypePending {
 | 
				
			||||||
 | 
							// Pending review comments updating should not triggered
 | 
				
			||||||
 | 
							return false
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return true
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CreateIssueComment notifies issue comment related message to notifiers
 | 
					// CreateIssueComment notifies issue comment related message to notifiers
 | 
				
			||||||
func CreateIssueComment(ctx context.Context, doer *user_model.User, repo *repo_model.Repository,
 | 
					func CreateIssueComment(ctx context.Context, doer *user_model.User, repo *repo_model.Repository,
 | 
				
			||||||
	issue *issues_model.Issue, comment *issues_model.Comment, mentions []*user_model.User,
 | 
						issue *issues_model.Issue, comment *issues_model.Comment, mentions []*user_model.User,
 | 
				
			||||||
) {
 | 
					) {
 | 
				
			||||||
 | 
						if !shouldSendCommentChangeNotification(ctx, comment) {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, notifier := range notifiers {
 | 
						for _, notifier := range notifiers {
 | 
				
			||||||
		notifier.CreateIssueComment(ctx, doer, repo, issue, comment, mentions)
 | 
							notifier.CreateIssueComment(ctx, doer, repo, issue, comment, mentions)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -156,6 +171,10 @@ func PullReviewDismiss(ctx context.Context, doer *user_model.User, review *issue
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// UpdateComment notifies update comment to notifiers
 | 
					// UpdateComment notifies update comment to notifiers
 | 
				
			||||||
func UpdateComment(ctx context.Context, doer *user_model.User, c *issues_model.Comment, oldContent string) {
 | 
					func UpdateComment(ctx context.Context, doer *user_model.User, c *issues_model.Comment, oldContent string) {
 | 
				
			||||||
 | 
						if !shouldSendCommentChangeNotification(ctx, c) {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, notifier := range notifiers {
 | 
						for _, notifier := range notifiers {
 | 
				
			||||||
		notifier.UpdateComment(ctx, doer, c, oldContent)
 | 
							notifier.UpdateComment(ctx, doer, c, oldContent)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -163,6 +182,10 @@ func UpdateComment(ctx context.Context, doer *user_model.User, c *issues_model.C
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// DeleteComment notifies delete comment to notifiers
 | 
					// DeleteComment notifies delete comment to notifiers
 | 
				
			||||||
func DeleteComment(ctx context.Context, doer *user_model.User, c *issues_model.Comment) {
 | 
					func DeleteComment(ctx context.Context, doer *user_model.User, c *issues_model.Comment) {
 | 
				
			||||||
 | 
						if !shouldSendCommentChangeNotification(ctx, c) {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, notifier := range notifiers {
 | 
						for _, notifier := range notifiers {
 | 
				
			||||||
		notifier.DeleteComment(ctx, doer, c)
 | 
							notifier.DeleteComment(ctx, doer, c)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user