mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Restore previous official review when an official review is deleted (#22449)
Fix #22406 Co-authored-by: Lauris BH <lauris@nix.lv>
This commit is contained in:
		@@ -733,17 +733,9 @@ func RemoveReviewRequest(issue *Issue, reviewer, doer *user_model.User) (*Commen
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	} else if official {
 | 
			
		||||
		// recalculate the latest official review for reviewer
 | 
			
		||||
		review, err := GetReviewByIssueIDAndUserID(ctx, issue.ID, reviewer.ID)
 | 
			
		||||
		if err != nil && !IsErrReviewNotExist(err) {
 | 
			
		||||
		if err := restoreLatestOfficialReview(ctx, issue.ID, reviewer.ID); err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if review != nil {
 | 
			
		||||
			if _, err := db.Exec(ctx, "UPDATE `review` SET official=? WHERE id=?", true, review.ID); err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	comment, err := CreateComment(ctx, &CreateCommentOptions{
 | 
			
		||||
@@ -761,6 +753,22 @@ func RemoveReviewRequest(issue *Issue, reviewer, doer *user_model.User) (*Commen
 | 
			
		||||
	return comment, committer.Commit()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Recalculate the latest official review for reviewer
 | 
			
		||||
func restoreLatestOfficialReview(ctx context.Context, issueID, reviewerID int64) error {
 | 
			
		||||
	review, err := GetReviewByIssueIDAndUserID(ctx, issueID, reviewerID)
 | 
			
		||||
	if err != nil && !IsErrReviewNotExist(err) {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if review != nil {
 | 
			
		||||
		if _, err := db.Exec(ctx, "UPDATE `review` SET official=? WHERE id=?", true, review.ID); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// AddTeamReviewRequest add a review request from one team
 | 
			
		||||
func AddTeamReviewRequest(issue *Issue, reviewer *organization.Team, doer *user_model.User) (*Comment, error) {
 | 
			
		||||
	ctx, committer, err := db.TxContext(db.DefaultContext)
 | 
			
		||||
@@ -979,6 +987,12 @@ func DeleteReview(r *Review) error {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if r.Official {
 | 
			
		||||
		if err := restoreLatestOfficialReview(ctx, r.IssueID, r.ReviewerID); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return committer.Commit()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user