fix(control-ui): guard stale overview usage refresh · openclaw/openclaw@42ba297
Marvinthebor
·
2026-05-26
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -330,6 +330,23 @@ describe("refreshActiveTab", () => {
|
330 | 330 | expect(mocks.loadUsageMock).toHaveBeenCalled(); |
331 | 331 | }); |
332 | 332 | |
| 333 | +it("skips overview usage refresh if the user leaves while primary loaders run", async () => { |
| 334 | +const host = createHost(); |
| 335 | +host.tab = "overview"; |
| 336 | +const channels = createDeferred(); |
| 337 | +mocks.loadChannelsMock.mockReturnValueOnce(channels.promise); |
| 338 | + |
| 339 | +const refresh = refreshActiveTab(host as never); |
| 340 | +await Promise.resolve(); |
| 341 | +host.tab = "sessions"; |
| 342 | +channels.resolve(); |
| 343 | + |
| 344 | +await refresh; |
| 345 | + |
| 346 | +expect(mocks.loadUsageMock).not.toHaveBeenCalled(); |
| 347 | +expect(mocks.loadSkillsMock).toHaveBeenCalledOnce(); |
| 348 | +}); |
| 349 | + |
333 | 350 | it("does not wait for config schema before resolving config tab refresh", async () => { |
334 | 351 | const host = createHost(); |
335 | 352 | host.tab = "config"; |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -741,7 +741,9 @@ export async function loadOverview(host: SettingsHost, opts?: { refresh?: boolea
|
741 | 741 | void Promise.allSettled([ |
742 | 742 | loadDebug(app), |
743 | 743 | loadSkills(app), |
744 | | -loadUsage(app), |
| 744 | +// The primary overview loaders can finish after the user has navigated away. |
| 745 | +// Avoid starting the expensive usage RPC for stale overview refreshes. |
| 746 | +isCurrentOverviewRefresh() ? loadUsage(app) : Promise.resolve(), |
745 | 747 | loadOverviewLogs(app), |
746 | 748 | // `refresh: true` bypasses the gateway's 60s auth-status cache so a |
747 | 749 | // user-initiated refresh surfaces post-re-auth state immediately. |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。