@@ -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