@@ -312,6 +312,14 @@ 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+ RequireApproval bool
319+ CanApprove bool
320+ ApproveActionLink string
321+ }
322+
315323// prepareViewPullInfo show meta information for a pull request preview page
316324func prepareViewPullInfo (ctx * context.Context , issue * issues_model.Issue ) * pull_service.CompareInfo {
317325 ctx .Data ["PullRequestWorkInProgressPrefixes" ] = setting .Repository .PullRequest .WorkInProgressPrefixes
@@ -456,7 +464,11 @@ func prepareViewPullInfo(ctx *context.Context, issue *issues_model.Issue) *pull_
456464 ctx .ServerError (fmt .Sprintf ("GetRefCommitID(%s)" , pull .GetGitHeadRefName ()), err )
457465 return nil
458466 }
459- ctx .Data ["SHA" ] = sha
467+
468+ statusCheckData := & pullCommitStatusCheckData {
469+ ApproveActionLink : fmt .Sprintf ("%s/actions/approve-all-checks?sha=%s&redirect=%s" , repo .Link (), sha , issue .Link ()),
470+ }
471+ ctx .Data ["StatusCheckData" ] = statusCheckData
460472
461473 commitStatuses , err := git_model .GetLatestCommitStatus (ctx , repo .ID , sha , db .ListOptionsAll )
462474 if err != nil {
@@ -474,11 +486,12 @@ func prepareViewPullInfo(ctx *context.Context, issue *issues_model.Issue) *pull_
474486 }
475487 for _ , run := range runs {
476488 if run .NeedApproval {
477- ctx .Data ["RequireApproval" ] = true
489+ statusCheckData .RequireApproval = true
490+ break
478491 }
479492 }
480- if ctx . Data [ " RequireApproval" ] == true {
481- ctx . Data [ " CanApprove" ] = ctx .Repo .CanWrite (unit .TypeActions )
493+ if statusCheckData . RequireApproval {
494+ statusCheckData . CanApprove = ctx .Repo .CanWrite (unit .TypeActions )
482495 }
483496
484497 if len (commitStatuses ) > 0 {
@@ -502,9 +515,9 @@ func prepareViewPullInfo(ctx *context.Context, issue *issues_model.Issue) *pull_
502515 missingRequiredChecks = append (missingRequiredChecks , requiredContext )
503516 }
504517 }
505- ctx . Data [ " MissingRequiredChecks" ] = missingRequiredChecks
518+ statusCheckData . MissingRequiredChecks = missingRequiredChecks
506519
507- ctx . Data [ "is_context_required" ] = func (context string ) bool {
520+ statusCheckData . IsContextRequired = func (context string ) bool {
508521 for _ , c := range pb .StatusCheckContexts {
509522 if c == context {
510523 return true
0 commit comments