summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop/src/context
diff options
context:
space:
mode:
Diffstat (limited to 'packages/desktop/src/context')
-rw-r--r--packages/desktop/src/context/global-sync.tsx62
1 files changed, 34 insertions, 28 deletions
diff --git a/packages/desktop/src/context/global-sync.tsx b/packages/desktop/src/context/global-sync.tsx
index 4c461a4e9..8151a2c6f 100644
--- a/packages/desktop/src/context/global-sync.tsx
+++ b/packages/desktop/src/context/global-sync.tsx
@@ -69,6 +69,32 @@ export const { use: useGlobalSync, provider: GlobalSyncProvider } = createSimple
children: {},
})
+ const children: Record<string, ReturnType<typeof createStore<State>>> = {}
+ function child(directory: string) {
+ if (!children[directory]) {
+ setGlobalStore("children", directory, {
+ project: "",
+ provider: { all: [], connected: [], default: {} },
+ config: {},
+ path: { state: "", config: "", worktree: "", directory: "", home: "" },
+ ready: false,
+ agent: [],
+ session: [],
+ session_status: {},
+ session_diff: {},
+ todo: {},
+ limit: 5,
+ message: {},
+ part: {},
+ node: [],
+ changes: [],
+ })
+ children[directory] = createStore(globalStore.children[directory])
+ bootstrapInstance(directory)
+ }
+ return children[directory]
+ }
+
async function loadSessions(directory: string) {
globalSDK.client.session.list({ directory }).then((x) => {
const sessions = (x.data ?? [])
@@ -76,7 +102,8 @@ export const { use: useGlobalSync, provider: GlobalSyncProvider } = createSimple
.filter((s) => !s.time.archived)
.sort((a, b) => a.id.localeCompare(b.id))
.slice(0, 5)
- setGlobalStore("children", directory, "session", sessions)
+ const [, setStore] = child(directory)
+ setStore("session", sessions)
})
}
@@ -100,32 +127,6 @@ export const { use: useGlobalSync, provider: GlobalSyncProvider } = createSimple
await Promise.all(Object.values(load).map((p) => p())).then(() => setStore("ready", true))
}
- const children: Record<string, ReturnType<typeof createStore<State>>> = {}
- function child(directory: string) {
- if (!children[directory]) {
- setGlobalStore("children", directory, {
- project: "",
- provider: { all: [], connected: [], default: {} },
- config: {},
- path: { state: "", config: "", worktree: "", directory: "", home: "" },
- ready: false,
- agent: [],
- session: [],
- session_status: {},
- session_diff: {},
- todo: {},
- limit: 5,
- message: {},
- part: {},
- node: [],
- changes: [],
- })
- children[directory] = createStore(globalStore.children[directory])
- bootstrapInstance(directory)
- }
- return children[directory]
- }
-
globalSDK.event.listen((e) => {
const directory = e.name
const event = e.details
@@ -164,7 +165,12 @@ export const { use: useGlobalSync, provider: GlobalSyncProvider } = createSimple
const result = Binary.search(store.session, event.properties.info.id, (s) => s.id)
if (event.properties.info.time.archived) {
if (result.found) {
- setStore("session", (s) => s.filter((x) => x.id !== event.properties.info.id))
+ setStore(
+ "session",
+ produce((draft) => {
+ draft.splice(result.index, 1)
+ }),
+ )
}
break
}