fix & finish

This commit is contained in:
6543 2024-03-02 08:35:37 +01:00 committed by Lunny Xiao
parent f51af184fb
commit d145c269cd
2 changed files with 35 additions and 2 deletions

View File

@ -17,6 +17,7 @@ import (
api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/routers/api/v1/utils"
"code.gitea.io/gitea/services/automerge"
"code.gitea.io/gitea/services/context"
"code.gitea.io/gitea/services/convert"
issue_service "code.gitea.io/gitea/services/issue"
@ -381,6 +382,11 @@ func CreatePullReview(ctx *context.APIContext) {
return
}
// as a missing / blocking reviews could have blocked a pending automerge let's recheck
if reviewType == issues_model.ReviewTypeApprove {
automerge.MergeScheduledPullRequest(pr)
}
// convert response
apiReview, err := convert.ToPullReview(ctx, review, ctx.Doer)
if err != nil {
@ -473,6 +479,11 @@ func SubmitPullReview(ctx *context.APIContext) {
return
}
// as a missing / blocking reviews could have blocked a pending automerge let's recheck
if review.Type == issues_model.ReviewTypeApprove {
automerge.MergeScheduledPullRequest(pr)
}
// convert response
apiReview, err := convert.ToPullReview(ctx, review, ctx.Doer)
if err != nil {
@ -888,7 +899,7 @@ func dismissReview(ctx *context.APIContext, msg string, isDismiss, dismissPriors
ctx.Error(http.StatusForbidden, "", "Must be repo admin")
return
}
review, _, isWrong := prepareSingleReview(ctx)
review, pr, isWrong := prepareSingleReview(ctx)
if isWrong {
return
}
@ -898,7 +909,12 @@ func dismissReview(ctx *context.APIContext, msg string, isDismiss, dismissPriors
return
}
_, err := pull_service.DismissReview(ctx, review.ID, ctx.Repo.Repository.ID, msg, ctx.Doer, isDismiss, dismissPriors)
if pr.Issue.IsClosed {
ctx.Error(http.StatusForbidden, "", "not need to dismiss this review because this pr is closed")
return
}
comm, err := pull_service.DismissReview(ctx, review.ID, ctx.Repo.Repository.ID, msg, ctx.Doer, isDismiss, dismissPriors)
if err != nil {
if pull_service.IsErrDismissRequestOnClosedPR(err) {
ctx.Error(http.StatusForbidden, "", err)
@ -908,6 +924,9 @@ func dismissReview(ctx *context.APIContext, msg string, isDismiss, dismissPriors
return
}
// as reviews could have blocked a pending automerge let's recheck
automerge.MergeScheduledPullRequest(comm.Issue.PullRequest)
if review, err = issues_model.GetReviewByID(ctx, review.ID); err != nil {
ctx.Error(http.StatusInternalServerError, "GetReviewByID", err)
return

View File

@ -16,6 +16,7 @@ import (
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/services/automerge"
"code.gitea.io/gitea/services/context"
"code.gitea.io/gitea/services/context/upload"
"code.gitea.io/gitea/services/forms"
@ -271,6 +272,16 @@ func SubmitReview(ctx *context.Context) {
}
return
}
// as a missing / blocking reviews could have blocked a pending automerge let's recheck
if reviewType == issues_model.ReviewTypeApprove {
if err := issue.LoadPullRequest(ctx); err != nil {
ctx.ServerError("GetPullRequest", err)
return
}
automerge.MergeScheduledPullRequest(issue.PullRequest)
}
ctx.JSONRedirect(fmt.Sprintf("%s/pulls/%d#%s", ctx.Repo.RepoLink, issue.Index, comm.HashTag()))
}
@ -287,6 +298,9 @@ func DismissReview(ctx *context.Context) {
return
}
// as reviews could have blocked a pending automerge let's recheck
automerge.MergeScheduledPullRequest(comm.Issue.PullRequest)
ctx.Redirect(fmt.Sprintf("%s/pulls/%d#%s", ctx.Repo.RepoLink, comm.Issue.Index, comm.HashTag()))
}