Fix show single review comments in the PR page (#9143)
This commit is contained in:
		
							parent
							
								
									8ab35eefc4
								
							
						
					
					
						commit
						d779deef6e
					
				
					 2 changed files with 34 additions and 3 deletions
				
			
		|  | @ -223,6 +223,11 @@ func getCurrentReview(e Engine, reviewer *User, issue *Issue) (*Review, error) { | |||
| 	return reviews[0], nil | ||||
| } | ||||
| 
 | ||||
| // ReviewExists returns whether a review exists for a particular line of code in the PR
 | ||||
| func ReviewExists(issue *Issue, treePath string, line int64) (bool, error) { | ||||
| 	return x.Cols("id").Exist(&Comment{IssueID: issue.ID, TreePath: treePath, Line: line, Type: CommentTypeCode}) | ||||
| } | ||||
| 
 | ||||
| // GetCurrentReview returns the current pending review of reviewer for given issue
 | ||||
| func GetCurrentReview(reviewer *User, issue *Issue) (*Review, error) { | ||||
| 	return getCurrentReview(x, reviewer, issue) | ||||
|  |  | |||
|  | @ -19,9 +19,28 @@ import ( | |||
| 
 | ||||
| // CreateCodeComment creates a comment on the code line
 | ||||
| func CreateCodeComment(doer *models.User, issue *models.Issue, line int64, content string, treePath string, isReview bool, replyReviewID int64) (*models.Comment, error) { | ||||
| 	// It's not a review, maybe a reply to a review comment or a single comment.
 | ||||
| 
 | ||||
| 	var ( | ||||
| 		existsReview bool | ||||
| 		err          error | ||||
| 	) | ||||
| 
 | ||||
| 	// CreateCodeComment() is used for:
 | ||||
| 	// - Single comments
 | ||||
| 	// - Comments that are part of a review
 | ||||
| 	// - Comments that reply to an existing review
 | ||||
| 
 | ||||
| 	if !isReview { | ||||
| 		if err := issue.LoadRepo(); err != nil { | ||||
| 		// It's not part of a review; maybe a reply to a review comment or a single comment.
 | ||||
| 		// Check if there are reviews for that line already; if there are, this is a reply
 | ||||
| 		if existsReview, err = models.ReviewExists(issue, treePath, line); err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	// Comments that are replies don't require a review header to show up in the issue view
 | ||||
| 	if !isReview && existsReview { | ||||
| 		if err = issue.LoadRepo(); err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 
 | ||||
|  | @ -72,7 +91,14 @@ func CreateCodeComment(doer *models.User, issue *models.Issue, line int64, conte | |||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// NOTICE: it's a pending review, so the notifications will not be fired until user submit review.
 | ||||
| 	if !isReview && !existsReview { | ||||
| 		// Submit the review we've just created so the comment shows up in the issue view
 | ||||
| 		if _, _, err = SubmitReview(doer, issue, models.ReviewTypeComment, ""); err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	// NOTICE: if it's a pending review the notifications will not be fired until user submit review.
 | ||||
| 
 | ||||
| 	return comment, nil | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue