Просмотр исходного кода

fix: no loading state in message nav

Adam 2 месяцев назад
Родитель
Сommit
7d55aeee0a

+ 0 - 1
packages/desktop/src/pages/session.tsx

@@ -415,7 +415,6 @@ export default function Page() {
                           messages={session.messages.user()}
                           current={session.messages.active()}
                           onMessageSelect={session.messages.setActive}
-                          working={session.working()}
                           wide={wide()}
                         />
                         <SessionTurn

+ 3 - 16
packages/ui/src/components/message-nav.tsx

@@ -1,7 +1,6 @@
 import { UserMessage } from "@opencode-ai/sdk/v2"
-import { ComponentProps, createMemo, For, Match, Show, splitProps, Switch } from "solid-js"
+import { ComponentProps, For, Match, Show, splitProps, Switch } from "solid-js"
 import { DiffChanges } from "./diff-changes"
-import { Spinner } from "./spinner"
 import { Tooltip } from "@kobalte/core/tooltip"
 
 export function MessageNav(
@@ -9,20 +8,15 @@ export function MessageNav(
     messages: UserMessage[]
     current?: UserMessage
     size: "normal" | "compact"
-    working?: boolean
     onMessageSelect: (message: UserMessage) => void
   },
 ) {
-  const [local, others] = splitProps(props, ["messages", "current", "size", "working", "onMessageSelect"])
-  const lastUserMessage = createMemo(() => {
-    return local.messages?.at(-1)
-  })
+  const [local, others] = splitProps(props, ["messages", "current", "size", "onMessageSelect"])
 
   const content = () => (
     <ul role="list" data-component="message-nav" data-size={local.size} {...others}>
       <For each={local.messages}>
         {(message) => {
-          const messageWorking = createMemo(() => message.id === lastUserMessage()?.id && local.working)
           const handleClick = () => local.onMessageSelect(message)
 
           return (
@@ -35,14 +29,7 @@ export function MessageNav(
                 </Match>
                 <Match when={local.size === "normal"}>
                   <button data-slot="message-nav-message-button" onClick={handleClick}>
-                    <Switch>
-                      <Match when={messageWorking()}>
-                        <Spinner />
-                      </Match>
-                      <Match when={true}>
-                        <DiffChanges changes={message.summary?.diffs ?? []} variant="bars" />
-                      </Match>
-                    </Switch>
+                    <DiffChanges changes={message.summary?.diffs ?? []} variant="bars" />
                     <div
                       data-slot="message-nav-title-preview"
                       data-active={message.id === local.current?.id || undefined}

+ 1 - 12
packages/ui/src/components/session-message-rail.tsx

@@ -6,21 +6,12 @@ import "./session-message-rail.css"
 export interface SessionMessageRailProps extends ComponentProps<"div"> {
   messages: UserMessage[]
   current?: UserMessage
-  working?: boolean
   wide?: boolean
   onMessageSelect: (message: UserMessage) => void
 }
 
 export function SessionMessageRail(props: SessionMessageRailProps) {
-  const [local, others] = splitProps(props, [
-    "messages",
-    "current",
-    "working",
-    "wide",
-    "onMessageSelect",
-    "class",
-    "classList",
-  ])
+  const [local, others] = splitProps(props, ["messages", "current", "wide", "onMessageSelect", "class", "classList"])
 
   return (
     <Show when={(local.messages?.length ?? 0) > 1}>
@@ -39,7 +30,6 @@ export function SessionMessageRail(props: SessionMessageRailProps) {
             current={local.current}
             onMessageSelect={local.onMessageSelect}
             size="compact"
-            working={local.working}
           />
         </div>
         <div data-slot="session-message-rail-full">
@@ -48,7 +38,6 @@ export function SessionMessageRail(props: SessionMessageRailProps) {
             current={local.current}
             onMessageSelect={local.onMessageSelect}
             size={local.wide ? "normal" : "compact"}
-            working={local.working}
           />
         </div>
       </div>