diff options
| author | Adam <[email protected]> | 2025-12-29 10:42:08 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-12-29 10:42:48 -0600 |
| commit | 5f074edc3a2ca80db4fd51360304bc070279a218 (patch) | |
| tree | 135342ae17241e33bc4d40e625b876fb8d3ad54c /packages/ui/src/components/session-turn.tsx | |
| parent | 56b5cdf88316af25a58215de899f90eea23db9b9 (diff) | |
| download | opencode-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.tsx | 35 |
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 }[] |
