feat(tui): support session deletion
This commit is contained in:
parent
96717c1a8c
commit
c0ea1a43f9
18 changed files with 563 additions and 273 deletions
|
|
@ -213,11 +213,35 @@ export const { use: useData, provider: DataProvider } = createSimpleContext({
|
|||
)
|
||||
}
|
||||
|
||||
function removeSession(sessionID: string) {
|
||||
messageIndex.delete(sessionID)
|
||||
setStore(
|
||||
"session",
|
||||
produce((draft) => {
|
||||
delete draft.info[sessionID]
|
||||
delete draft.status[sessionID]
|
||||
delete draft.compaction[sessionID]
|
||||
delete draft.message[sessionID]
|
||||
delete draft.input[sessionID]
|
||||
delete draft.permission[sessionID]
|
||||
delete draft.form[sessionID]
|
||||
for (const [rootID, family] of Object.entries(draft.family)) {
|
||||
const next = family.filter((id) => id !== sessionID)
|
||||
if (next.length === 0) delete draft.family[rootID]
|
||||
else draft.family[rootID] = next
|
||||
}
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
||||
function handleEvent(event: V2Event) {
|
||||
switch (event.type) {
|
||||
case "session.created":
|
||||
void result.session.refresh(event.data.sessionID)
|
||||
break
|
||||
case "session.deleted":
|
||||
removeSession(event.data.sessionID)
|
||||
break
|
||||
case "catalog.updated":
|
||||
void Promise.all([
|
||||
result.location.model.refresh(event.location),
|
||||
|
|
|
|||
|
|
@ -470,7 +470,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
|
|||
}
|
||||
|
||||
event.on("session.deleted", (evt) => {
|
||||
prune(evt.data.info.id)
|
||||
prune(evt.data.sessionID)
|
||||
})
|
||||
|
||||
return {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue