summaryrefslogtreecommitdiffhomepage
path: root/packages/app
diff options
context:
space:
mode:
Diffstat (limited to 'packages/app')
-rw-r--r--packages/app/src/context/global-sync.tsx11
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)