fix: refresh pull request merge box when the commit status is pending (#38410) (#38411)

Backport #38410

Before: the merge box is only refreshed when the PR is being
conflict-checked.

After: also refresh the merge box when the commit status is pending
(e.g.: Action task is running)

By the way, slightly increase the refresh interval to 5s

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
Giteabot
2026-07-11 16:15:25 -07:00
committed by GitHub
parent 8ba4d4ebec
commit 6815d1646c
2 changed files with 6 additions and 3 deletions

View File

@@ -418,7 +418,7 @@ func ViewIssue(ctx *context.Context) {
return user_service.CanBlockUser(ctx, ctx.Doer, blocker, blockee)
}
if !setting.IsProd && issue.PullRequest != nil && !issue.PullRequest.IsChecking() && prViewInfo.MergeBoxData != nil {
if !setting.IsProd && issue.PullRequest != nil && prViewInfo.MergeBoxData != nil && prViewInfo.MergeBoxData.ReloadingInterval == 0 {
prViewInfo.MergeBoxData.ReloadingInterval = 1 // in dev env, force using the reloading logic to make sure it won't break
}
@@ -919,7 +919,6 @@ func (prInfo *pullRequestViewInfo) prepareMergeBox(ctx *context.Context, issue *
}
}
data.ReloadingInterval = util.Iif(pull.IsChecking(), 2000, 0)
data.ShowMergeInstructions = canWriteToHeadRepo
data.ShowPullCommands = pull.HeadRepo != nil && !pull.HasMerged && !issue.IsClosed
@@ -941,6 +940,10 @@ func (prInfo *pullRequestViewInfo) prepareMergeBox(ctx *context.Context, issue *
prConfig := issue.Repo.MustGetUnit(ctx, unit.TypePullRequests).PullRequestsConfig()
data.AutodetectManualMerge = prConfig.AutodetectManualMerge
needRefreshMergeBox := pull.IsChecking()
needRefreshMergeBox = needRefreshMergeBox || (data.StatusCheckData != nil && data.StatusCheckData.pullCommitStatusState.IsPending())
data.ReloadingInterval = util.Iif(needRefreshMergeBox, 5000, 0)
// Only show the merge box if the PR is not merged, or the branch is deletable.
// Otherwise, there is nothing to do, because the PR view page already contains enough information.
data.ShowMergeBox = !pull.HasMerged || data.IsPullBranchDeletable

View File

@@ -210,7 +210,7 @@ func TestPullStatusDelayCheck(t *testing.T) {
})
assert.Equal(t, issues.PullRequestStatusChecking, issue3.PullRequest.Status)
assert.Zero(t, checkedPrID)
assertReloadingInterval(t, "2000") // the PR status is "checking", so try to reload the merge box
assertReloadingInterval(t, "5000") // the PR status is "checking", so try to reload the merge box
// view a PR with status=checking, it starts the real check
issue3, checkedPrID = run(t, func(t *testing.T) {