1
1
mirror of https://github.com/go-gitea/gitea synced 2024-06-17 08:45:48 +00:00

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" api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/web" "code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/routers/api/v1/utils" "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/context"
"code.gitea.io/gitea/services/convert" "code.gitea.io/gitea/services/convert"
issue_service "code.gitea.io/gitea/services/issue" issue_service "code.gitea.io/gitea/services/issue"
@ -381,6 +382,11 @@ func CreatePullReview(ctx *context.APIContext) {
return 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 // convert response
apiReview, err := convert.ToPullReview(ctx, review, ctx.Doer) apiReview, err := convert.ToPullReview(ctx, review, ctx.Doer)
if err != nil { if err != nil {
@ -473,6 +479,11 @@ func SubmitPullReview(ctx *context.APIContext) {
return 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 // convert response
apiReview, err := convert.ToPullReview(ctx, review, ctx.Doer) apiReview, err := convert.ToPullReview(ctx, review, ctx.Doer)
if err != nil { if err != nil {
@ -888,7 +899,7 @@ func dismissReview(ctx *context.APIContext, msg string, isDismiss, dismissPriors
ctx.Error(http.StatusForbidden, "", "Must be repo admin") ctx.Error(http.StatusForbidden, "", "Must be repo admin")
return return
} }
review, _, isWrong := prepareSingleReview(ctx) review, pr, isWrong := prepareSingleReview(ctx)
if isWrong { if isWrong {
return return
} }
@ -898,7 +909,12 @@ func dismissReview(ctx *context.APIContext, msg string, isDismiss, dismissPriors
return 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 err != nil {
if pull_service.IsErrDismissRequestOnClosedPR(err) { if pull_service.IsErrDismissRequestOnClosedPR(err) {
ctx.Error(http.StatusForbidden, "", err) ctx.Error(http.StatusForbidden, "", err)
@ -908,6 +924,9 @@ func dismissReview(ctx *context.APIContext, msg string, isDismiss, dismissPriors
return 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 { if review, err = issues_model.GetReviewByID(ctx, review.ID); err != nil {
ctx.Error(http.StatusInternalServerError, "GetReviewByID", err) ctx.Error(http.StatusInternalServerError, "GetReviewByID", err)
return return

View File

@ -16,6 +16,7 @@ import (
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/web" "code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/services/automerge"
"code.gitea.io/gitea/services/context" "code.gitea.io/gitea/services/context"
"code.gitea.io/gitea/services/context/upload" "code.gitea.io/gitea/services/context/upload"
"code.gitea.io/gitea/services/forms" "code.gitea.io/gitea/services/forms"
@ -271,6 +272,16 @@ func SubmitReview(ctx *context.Context) {
} }
return 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())) 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 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())) ctx.Redirect(fmt.Sprintf("%s/pulls/%d#%s", ctx.Repo.RepoLink, comm.Issue.Index, comm.HashTag()))
} }