summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src/components/session-turn.tsx
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-29 10:42:08 -0600
committerAdam <[email protected]>2025-12-29 10:42:48 -0600
commit5f074edc3a2ca80db4fd51360304bc070279a218 (patch)
tree135342ae17241e33bc4d40e625b876fb8d3ad54c /packages/ui/src/components/session-turn.tsx
parent56b5cdf88316af25a58215de899f90eea23db9b9 (diff)
downloadopencode-5f074edc3a2ca80db4fd51360304bc070279a218.tar.gz
opencode-5f074edc3a2ca80db4fd51360304bc070279a218.zip
fix(desktop): performance/jankiness
Diffstat (limited to 'packages/ui/src/components/session-turn.tsx')
-rw-r--r--packages/ui/src/components/session-turn.tsx35
1 files changed, 14 insertions, 21 deletions
diff --git a/packages/ui/src/components/session-turn.tsx b/packages/ui/src/components/session-turn.tsx
index a3ac5b0b4..4a6b8b612 100644
--- a/packages/ui/src/components/session-turn.tsx
+++ b/packages/ui/src/components/session-turn.tsx
@@ -111,13 +111,23 @@ export function SessionTurn(
const allMessages = createMemo(() => data.store.message[props.sessionID] ?? [])
- const message = createMemo(() => {
+ const messageIndex = createMemo(() => {
const messages = allMessages()
const result = Binary.search(messages, props.messageID, (m) => m.id)
- if (!result.found) return undefined
+ if (!result.found) return -1
const msg = messages[result.index]
- if (msg.role !== "user") return undefined
+ if (msg.role !== "user") return -1
+
+ return result.index
+ })
+
+ const message = createMemo(() => {
+ const index = messageIndex()
+ if (index < 0) return undefined
+
+ const msg = allMessages()[index]
+ if (!msg || msg.role !== "user") return undefined
return msg
})
@@ -141,13 +151,6 @@ export function SessionTurn(
return data.store.part[msg.id] ?? []
})
- const messageIndex = createMemo(() => {
- const messages = allMessages()
- const result = Binary.search(messages, props.messageID, (m) => m.id)
- if (!result.found) return -1
- return result.index
- })
-
const assistantMessages = createMemo(() => {
const msg = message()
if (!msg) return [] as AssistantMessage[]
@@ -195,17 +198,7 @@ export function SessionTurn(
const permissions = createMemo(() => data.store.permission?.[props.sessionID] ?? [])
const permissionCount = createMemo(() => permissions().length)
- const nextPermission = createMemo(() => {
- const items = permissions()
- return items.reduce(
- (result, perm) => {
- if (!result) return perm
- if (perm.id < result.id) return perm
- return result
- },
- undefined as ReturnType<typeof permissions>[number] | undefined,
- )
- })
+ const nextPermission = createMemo(() => permissions()[0])
const permissionParts = createMemo(() => {
if (props.stepsExpanded) return [] as { part: ToolPart; message: AssistantMessage }[]