-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathsession-status-panel.tsx
More file actions
38 lines (35 loc) · 1.43 KB
/
Copy pathsession-status-panel.tsx
File metadata and controls
38 lines (35 loc) · 1.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import { createMemo, type Accessor } from "solid-js"
import { useParams } from "@solidjs/router"
import type { Part } from "@opencode-ai/sdk/v2"
import { useGlobalSync } from "@/context/global-sync"
import { useSync } from "@/context/sync"
import { SessionStatusSummary } from "./session-status-summary"
import { SessionStatusConnections } from "./session-status-connections"
export function SessionStatusPanel(props: { shown: Accessor<boolean> }) {
const params = useParams()
const globalSync = useGlobalSync()
const sync = useSync()
const parts = createMemo<Part[]>(() => {
if (!params.id) return []
const messages = sync.data.message[params.id] ?? []
return messages.flatMap((message) => sync.data.part[message.id] ?? [])
})
const canonical = createMemo(() => (params.id ? globalSync.data.session_todo[params.id] : undefined))
const isAuthoritativelyInvalidated = createMemo(() =>
params.id ? globalSync.todoHydrate.isAuthoritativelyInvalidated(params.id) : false,
)
const isPending = createMemo(() =>
params.id && sync.directory ? globalSync.todoHydrate.isPending(sync.directory, params.id) : false,
)
return (
<div class="h-full min-h-0 overflow-y-auto">
<SessionStatusSummary
canonical={canonical}
isAuthoritativelyInvalidated={isAuthoritativelyInvalidated}
isPending={isPending}
parts={parts}
/>
<SessionStatusConnections shown={props.shown} />
</div>
)
}