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

This commit is contained in:
wxiaoguang
2026-07-12 01:36:10 +08:00
committed by GitHub
parent d3d57dd9b4
commit bd5f881c51
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) {