From 65e288bb712e9221d28c2a10f2e97a80deb7b0eb Mon Sep 17 00:00:00 2001 From: Isaac Sanchez-Hawkins <266845420+isanchez404@users.noreply.github.com> Date: Tue, 19 May 2026 10:39:37 -0400 Subject: [PATCH] fix: respect session prefetch page size (#1332) Co-authored-by: Isaac Sanchez --- .../__tests__/session-prefetch-cache.test.ts | 23 +++++++++++++++++++ .../ui/src/sync/session-prefetch-cache.ts | 1 + 2 files changed, 24 insertions(+) create mode 100644 packages/ui/src/sync/__tests__/session-prefetch-cache.test.ts diff --git a/packages/ui/src/sync/__tests__/session-prefetch-cache.test.ts b/packages/ui/src/sync/__tests__/session-prefetch-cache.test.ts new file mode 100644 index 00000000..225d1d4a --- /dev/null +++ b/packages/ui/src/sync/__tests__/session-prefetch-cache.test.ts @@ -0,0 +1,23 @@ +import { describe, expect, test } from "bun:test" + +import { shouldSkipSessionPrefetch } from "../session-prefetch-cache" + +describe("shouldSkipSessionPrefetch", () => { + test("does not skip a larger fetch when only a smaller partial prefetch is cached", () => { + expect(shouldSkipSessionPrefetch({ + hasMessages: true, + info: { limit: 50, complete: false, at: 1_000 }, + pageSize: 200, + now: 1_001, + })).toBe(false) + }) + + test("still skips a recent partial prefetch when cached coverage matches the request", () => { + expect(shouldSkipSessionPrefetch({ + hasMessages: true, + info: { limit: 200, complete: false, at: 1_000 }, + pageSize: 200, + now: 1_001, + })).toBe(true) + }) +}) diff --git a/packages/ui/src/sync/session-prefetch-cache.ts b/packages/ui/src/sync/session-prefetch-cache.ts index 3ec66d86..16e70122 100644 --- a/packages/ui/src/sync/session-prefetch-cache.ts +++ b/packages/ui/src/sync/session-prefetch-cache.ts @@ -35,6 +35,7 @@ export function shouldSkipSessionPrefetch(input: { if (!input.info) return true if (input.info.complete) return true if (input.info.limit > input.pageSize) return true + if (input.info.limit < input.pageSize) return false } else { if (!input.info) return false }