Compare commits

...

1 Commits

Author SHA1 Message Date
Dax Raad 1aa2777ca4 Fix TUI session switch flicker 2026-05-10 00:14:53 -04:00
@@ -528,21 +528,22 @@ export const { use: useSync, provider: SyncProvider } = createSimpleContext({
sdk.client.session.todo({ sessionID }), sdk.client.session.todo({ sessionID }),
sdk.client.session.diff({ sessionID }), sdk.client.session.diff({ sessionID }),
]) ])
setStore( const sessionMessages = messages.data ?? []
produce((draft) => { batch(() => {
const match = Binary.search(draft.session, sessionID, (s) => s.id) setStore(
if (match.found) draft.session[match.index] = session.data! produce((draft) => {
if (!match.found) draft.session.splice(match.index, 0, session.data!) const match = Binary.search(draft.session, sessionID, (s) => s.id)
draft.todo[sessionID] = todo.data ?? [] if (match.found) draft.session[match.index] = session.data!
const infos: (typeof draft.message)[string] = [] if (!match.found) draft.session.splice(match.index, 0, session.data!)
for (const message of messages.data ?? []) { }),
infos.push(message.info) )
draft.part[message.info.id] = message.parts setStore("todo", sessionID, todo.data ?? [])
} setStore("message", sessionID, reconcile(sessionMessages.map((message) => message.info), { key: "id" }))
draft.message[sessionID] = infos sessionMessages.forEach((message) => {
draft.session_diff[sessionID] = diff.data ?? [] setStore("part", message.info.id, reconcile(message.parts, { key: "id" }))
}), })
) setStore("session_diff", sessionID, diff.data ?? [])
})
fullSyncedSessions.add(sessionID) fullSyncedSessions.add(sessionID)
}, },
}, },