fix(frontend): smooth realtime dashboard refreshes

This commit is contained in:
2026-08-07 06:12:43 +00:00
parent e198f70756
commit ebc54198d7
8 changed files with 381 additions and 28 deletions
@@ -0,0 +1,30 @@
import assert from 'node:assert/strict';
import test from 'node:test';
import { createLatestRefreshQueue } from '../src/utils/latestRefreshQueue.ts';
void test('coalesces an event burst into one final refresh without losing it', async () => {
const releases: Array<() => void> = [];
let runs = 0;
const queue = createLatestRefreshQueue(async () => {
runs += 1;
await new Promise<void>((resolve) => releases.push(resolve));
});
const first = queue.request();
assert.equal(queue.isRunning(), true);
const second = queue.request();
const third = queue.request();
assert.equal(second, first);
assert.equal(third, first);
assert.equal(runs, 1);
releases.shift()?.();
await new Promise<void>((resolve) => setImmediate(resolve));
assert.equal(runs, 2);
releases.shift()?.();
await first;
assert.equal(queue.isRunning(), false);
assert.equal(runs, 2);
});