mirror of
https://github.com/wu736139669/hapi.git
synced 2026-08-05 06:24:37 +00:00
fix: reconcile stale queued messages (#1063)
Recover missed messages-consumed events from authoritative Hub state after session SSE reconnects.
This commit is contained in:
@@ -92,4 +92,27 @@ describe('ApiClient error mapping', () => {
|
||||
})
|
||||
expect(fetchMock.mock.calls[0]?.[0]).toBe('/api/sessions/session%20cursor/cursor-chat-store')
|
||||
})
|
||||
|
||||
it('loads the authoritative queued state for encoded session IDs', async () => {
|
||||
fetchMock.mockResolvedValueOnce(
|
||||
new Response(JSON.stringify({
|
||||
queuedLocalIds: ['local-2'],
|
||||
invokedLocalMessages: [{ localId: 'local-3', invokedAt: 1_000 }]
|
||||
}), { status: 200 })
|
||||
)
|
||||
|
||||
const api = new ApiClient('test-token')
|
||||
await expect(api.getQueuedState('session /?#', ['local-1', 'local-2'])).resolves.toEqual({
|
||||
queuedLocalIds: ['local-2'],
|
||||
invokedLocalMessages: [{ localId: 'local-3', invokedAt: 1_000 }]
|
||||
})
|
||||
|
||||
const [url, init] = fetchMock.mock.calls[0] ?? []
|
||||
expect(url).toBe('/api/sessions/session%20%2F%3F%23/messages/queued-state')
|
||||
expect(init).toMatchObject({
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ localIds: ['local-1', 'local-2'] })
|
||||
})
|
||||
expect(new Headers(init?.headers).get('content-type')).toBe('application/json')
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user