diff options
| author | Adam <[email protected]> | 2025-11-05 16:32:05 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-11-05 16:32:08 -0600 |
| commit | e006e3355cff3de25e023edcee0b59985e7db66b (patch) | |
| tree | 97d54c28fe10801fadfdb28adce18d1c68c4c0ea /packages/desktop/src/context | |
| parent | d7e31f76c480be81985590dfabcca353be8442bc (diff) | |
| download | opencode-e006e3355cff3de25e023edcee0b59985e7db66b.tar.gz opencode-e006e3355cff3de25e023edcee0b59985e7db66b.zip | |
feat(desktop): incrementally load sessions in side nav
Diffstat (limited to 'packages/desktop/src/context')
| -rw-r--r-- | packages/desktop/src/context/sync.tsx | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/packages/desktop/src/context/sync.tsx b/packages/desktop/src/context/sync.tsx index c60206b0b..1e960397b 100644 --- a/packages/desktop/src/context/sync.tsx +++ b/packages/desktop/src/context/sync.tsx @@ -16,6 +16,8 @@ export const { use: useSync, provider: SyncProvider } = createSimpleContext({ config: Config path: Path session: Session[] + limit: number + more: boolean message: { [sessionID: string]: Message[] } @@ -32,6 +34,8 @@ export const { use: useSync, provider: SyncProvider } = createSimpleContext({ agent: [], provider: [], session: [], + limit: 10, + more: false, message: {}, part: {}, node: [], @@ -106,12 +110,14 @@ export const { use: useSync, provider: SyncProvider } = createSimpleContext({ path: () => sdk.client.path.get().then((x) => setStore("path", x.data!)), agent: () => sdk.client.app.agents().then((x) => setStore("agent", x.data ?? [])), session: () => - sdk.client.session.list().then((x) => - setStore( - "session", - (x.data ?? []).slice().sort((a, b) => a.id.localeCompare(b.id)), - ), - ), + sdk.client.session.list().then((x) => { + const sessions = (x.data ?? []) + .slice() + .sort((a, b) => a.id.localeCompare(b.id)) + .slice(0, store.limit) + setStore("session", sessions) + setStore("more", sessions.length === store.limit) + }), config: () => sdk.client.config.get().then((x) => setStore("config", x.data!)), changes: () => sdk.client.file.status().then((x) => setStore("changes", x.data!)), node: () => sdk.client.file.list({ query: { path: "/" } }).then((x) => setStore("node", x.data!)), @@ -184,6 +190,10 @@ export const { use: useSync, provider: SyncProvider } = createSimpleContext({ }), ) }, + fetch: async (count = 10) => { + setStore("limit", (x) => x + count) + await load.session() + }, }, load, absolute, |
