@@ -312,6 +312,15 @@ func prepareMergedViewPullInfo(ctx *context.Context, issue *issues_model.Issue)
312312 return compareInfo
313313}
314314
315+ type pullCommitStatusCheckData struct {
316+ MissingRequiredChecks []string
317+ IsContextRequired func (string ) bool
318+ SHA string
319+ RequireApproval bool
320+ CanApprove bool
321+ ApproveActionLink string
322+ }
323+
315324// prepareViewPullInfo show meta information for a pull request preview page
316325func prepareViewPullInfo (ctx * context.Context , issue * issues_model.Issue ) * pull_service.CompareInfo {
317326 ctx .Data ["PullRequestWorkInProgressPrefixes" ] = setting .Repository .PullRequest .WorkInProgressPrefixes
@@ -437,6 +446,11 @@ func prepareViewPullInfo(ctx *context.Context, issue *issues_model.Issue) *pull_
437446 ctx .Data ["GetCommitMessages" ] = ""
438447 }
439448
449+ statusCheckData := & pullCommitStatusCheckData {
450+ ApproveActionLink : fmt .Sprintf ("%s/actions/approve-all-checks?redirect=%s" , repo .Link (), issue .Link ()),
451+ }
452+ ctx .Data ["StatusCheckData" ] = statusCheckData
453+
440454 sha , err := baseGitRepo .GetRefCommitID (pull .GetGitHeadRefName ())
441455 if err != nil {
442456 if git .IsErrNotExist (err ) {
@@ -456,7 +470,7 @@ func prepareViewPullInfo(ctx *context.Context, issue *issues_model.Issue) *pull_
456470 ctx .ServerError (fmt .Sprintf ("GetRefCommitID(%s)" , pull .GetGitHeadRefName ()), err )
457471 return nil
458472 }
459- ctx . Data [ " SHA" ] = sha
473+ statusCheckData . SHA = sha
460474
461475 commitStatuses , err := git_model .GetLatestCommitStatus (ctx , repo .ID , sha , db .ListOptionsAll )
462476 if err != nil {
@@ -474,11 +488,12 @@ func prepareViewPullInfo(ctx *context.Context, issue *issues_model.Issue) *pull_
474488 }
475489 for _ , run := range runs {
476490 if run .NeedApproval {
477- ctx .Data ["RequireApproval" ] = true
491+ statusCheckData .RequireApproval = true
492+ break
478493 }
479494 }
480- if ctx . Data [ " RequireApproval" ] == true {
481- ctx . Data [ " CanApprove" ] = ctx .Repo .CanWrite (unit .TypeActions )
495+ if statusCheckData . RequireApproval {
496+ statusCheckData . CanApprove = ctx .Repo .CanWrite (unit .TypeActions )
482497 }
483498
484499 if len (commitStatuses ) > 0 {
@@ -502,9 +517,9 @@ func prepareViewPullInfo(ctx *context.Context, issue *issues_model.Issue) *pull_
502517 missingRequiredChecks = append (missingRequiredChecks , requiredContext )
503518 }
504519 }
505- ctx . Data [ " MissingRequiredChecks" ] = missingRequiredChecks
520+ statusCheckData . MissingRequiredChecks = missingRequiredChecks
506521
507- ctx . Data [ "is_context_required" ] = func (context string ) bool {
522+ statusCheckData . IsContextRequired = func (context string ) bool {
508523 for _ , c := range pb .StatusCheckContexts {
509524 if c == context {
510525 return true
0 commit comments