fix(chat): hide actions while streaming
Build Push and Deploy / deploy-fallback-log (push) Has been cancelled
Build Push and Deploy / docker-image (push) Has been cancelled

This commit is contained in:
2026-06-08 20:16:58 +08:00
parent 968d798a2a
commit ed9828befe
2 changed files with 9 additions and 1 deletions
+3 -1
View File
@@ -39,6 +39,7 @@ import StopRounded from "@mui/icons-material/StopRounded";
type AgentTurnProps = { type AgentTurnProps = {
message: Message; message: Message;
isStreaming: boolean;
messageSpeechState: SpeechState; messageSpeechState: SpeechState;
onSpeak: (messageId: string, text: string) => void; onSpeak: (messageId: string, text: string) => void;
onPause: () => void; onPause: () => void;
@@ -54,6 +55,7 @@ type AgentTurnProps = {
export const AgentTurn = React.memo( export const AgentTurn = React.memo(
({ ({
message, message,
isStreaming,
messageSpeechState, messageSpeechState,
onSpeak, onSpeak,
onPause, onPause,
@@ -277,7 +279,7 @@ export const AgentTurn = React.memo(
</Stack> </Stack>
<AnimatePresence> <AnimatePresence>
{isHovered && ( {isHovered && !isStreaming && (
<motion.div <motion.div
initial={{ opacity: 0, scale: 0.9, y: 5 }} initial={{ opacity: 0, scale: 0.9, y: 5 }}
animate={{ opacity: 1, scale: 1, y: 0 }} animate={{ opacity: 1, scale: 1, y: 0 }}
+6
View File
@@ -36,6 +36,7 @@ type AgentWorkspaceProps = {
type TurnListProps = { type TurnListProps = {
messages: Message[]; messages: Message[];
isStreaming: boolean;
speakingMessageId: string | null; speakingMessageId: string | null;
speechState: SpeechState; speechState: SpeechState;
onSpeak: (messageId: string, text: string) => void; onSpeak: (messageId: string, text: string) => void;
@@ -55,6 +56,7 @@ const sameMessages = (left: Message[], right: Message[]) =>
const TurnListInner = ({ const TurnListInner = ({
messages, messages,
isStreaming,
speakingMessageId, speakingMessageId,
speechState, speechState,
onSpeak, onSpeak,
@@ -73,6 +75,7 @@ const TurnListInner = ({
<AgentTurn <AgentTurn
key={message.id} key={message.id}
message={message} message={message}
isStreaming={isStreaming}
messageSpeechState={speakingMessageId === message.id ? speechState : "idle"} messageSpeechState={speakingMessageId === message.id ? speechState : "idle"}
onSpeak={onSpeak} onSpeak={onSpeak}
onPause={onPauseSpeech} onPause={onPauseSpeech}
@@ -93,6 +96,7 @@ const TurnList = React.memo(
TurnListInner, TurnListInner,
(prevProps, nextProps) => (prevProps, nextProps) =>
sameMessages(prevProps.messages, nextProps.messages) && sameMessages(prevProps.messages, nextProps.messages) &&
prevProps.isStreaming === nextProps.isStreaming &&
prevProps.speakingMessageId === nextProps.speakingMessageId && prevProps.speakingMessageId === nextProps.speakingMessageId &&
prevProps.speechState === nextProps.speechState && prevProps.speechState === nextProps.speechState &&
prevProps.onSpeak === nextProps.onSpeak && prevProps.onSpeak === nextProps.onSpeak &&
@@ -274,6 +278,7 @@ export const AgentWorkspace = ({
<Box sx={{ display: "flex", flexDirection: "column", gap: 2 }}> <Box sx={{ display: "flex", flexDirection: "column", gap: 2 }}>
<TurnList <TurnList
messages={historyMessages} messages={historyMessages}
isStreaming={isStreaming}
speakingMessageId={speakingMessageId} speakingMessageId={speakingMessageId}
speechState={speechState} speechState={speechState}
onSpeak={onSpeak} onSpeak={onSpeak}
@@ -290,6 +295,7 @@ export const AgentWorkspace = ({
{streamingMessage ? ( {streamingMessage ? (
<TurnList <TurnList
messages={[streamingMessage]} messages={[streamingMessage]}
isStreaming={isStreaming}
speakingMessageId={speakingMessageId} speakingMessageId={speakingMessageId}
speechState={speechState} speechState={speechState}
onSpeak={onSpeak} onSpeak={onSpeak}