diff options
| author | Adam <[email protected]> | 2026-01-20 11:25:53 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2026-01-20 11:25:58 -0600 |
| commit | 7170983ef218321263fbb3d42f943a51b43075be (patch) | |
| tree | 3e2ce82856a4655e510e74fa65de4901b39ae4de /packages/app/src/context | |
| parent | b05d88a73012e2f2eeeae1ac92e0be4a9f0864fc (diff) | |
| download | opencode-7170983ef218321263fbb3d42f943a51b43075be.tar.gz opencode-7170983ef218321263fbb3d42f943a51b43075be.zip | |
fix(app): duplicate session loads
Diffstat (limited to 'packages/app/src/context')
| -rw-r--r-- | packages/app/src/context/global-sync.tsx | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/packages/app/src/context/global-sync.tsx b/packages/app/src/context/global-sync.tsx index 878357cef..14dc6e054 100644 --- a/packages/app/src/context/global-sync.tsx +++ b/packages/app/src/context/global-sync.tsx @@ -133,6 +133,7 @@ function createGlobalSync() { const children: Record<string, [Store<State>, SetStoreFunction<State>]> = {} const booting = new Map<string, Promise<void>>() const sessionLoads = new Map<string, Promise<void>>() + const sessionMeta = new Map<string, { limit: number }>() function ensureChild(directory: string) { if (!directory) console.error("No directory provided") @@ -192,7 +193,8 @@ function createGlobalSync() { if (pending) return pending const [store, setStore] = child(directory, { bootstrap: false }) - const limit = store.limit + const meta = sessionMeta.get(directory) + if (meta && meta.limit >= store.limit) return const promise = globalSDK.client.session .list({ directory, roots: true }) @@ -203,9 +205,15 @@ function createGlobalSync() { .slice() .sort((a, b) => a.id.localeCompare(b.id)) + // Read the current limit at resolve-time so callers that bump the limit while + // a request is in-flight still get the expanded result. + const limit = store.limit + const sandboxWorkspace = globalStore.project.some((p) => (p.sandboxes ?? []).includes(directory)) if (sandboxWorkspace) { + setStore("sessionTotal", nonArchived.length) setStore("session", reconcile(nonArchived, { key: "id" })) + sessionMeta.set(directory, { limit }) return } @@ -219,6 +227,7 @@ function createGlobalSync() { // Store total session count (used for "load more" pagination) setStore("sessionTotal", nonArchived.length) setStore("session", reconcile(sessions, { key: "id" })) + sessionMeta.set(directory, { limit }) }) .catch((err) => { console.error("Failed to load sessions", err) |
