Skip to content

Commit 65db8bb

Browse files
authored
fix: hide code block when streaming (#2875)
1 parent 6c61898 commit 65db8bb

File tree

5 files changed

+21
-33
lines changed

5 files changed

+21
-33
lines changed

apps/web/client/src/app/project/[id]/_components/right-panel/chat-tab/chat-messages/assistant-message.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import type { ChatMessage } from '@onlook/models';
22
import { MessageContent } from './message-content';
33

4-
export const AssistantMessage = ({ message }: { message: ChatMessage }) => {
4+
export const AssistantMessage = ({ message, isStreaming }: { message: ChatMessage, isStreaming: boolean }) => {
55
return (
66
<div className="px-4 py-2 text-small content-start flex flex-col text-wrap gap-2">
77
<MessageContent
88
messageId={message.id}
99
parts={message.parts}
1010
applied={false}
11-
isStream={false}
11+
isStream={isStreaming}
1212
/>
1313
</div>
1414
);

apps/web/client/src/app/project/[id]/_components/right-panel/chat-tab/chat-messages/index.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export const ChatMessages = observer(({
5151
let messageNode;
5252
switch (message.role) {
5353
case 'assistant':
54-
messageNode = <AssistantMessage key={message.id} message={message} />;
54+
messageNode = <AssistantMessage key={message.id} message={message} isStreaming={isStreaming} />;
5555
break;
5656
case 'user':
5757
messageNode = (
@@ -93,6 +93,10 @@ export const ChatMessages = observer(({
9393
{messages.map((message, index) => renderMessage(message, index))}
9494
{streamedMessage && <StreamMessage message={streamedMessage} />}
9595
{error && <ErrorMessage error={error} />}
96+
{isStreaming && <div className="flex w-full h-full flex-row items-center gap-2 px-4 my-2 text-small content-start text-foreground-secondary">
97+
<Icons.LoadingSpinner className="animate-spin" />
98+
<p>Thinking ...</p>
99+
</div>}
96100
</ChatMessageList>
97101
);
98102
},

apps/web/client/src/app/project/[id]/_components/right-panel/chat-tab/chat-messages/message-content/tool-call-display.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export const ToolCallDisplay = ({
3939
const toolName = toolPart.type.split('-')[1];
4040
const loading = isStream && isLastPart;
4141

42-
if (isStream && toolPart.state !== 'output-available' && toolPart.state !== 'input-available') {
42+
if (isStream || (toolPart.state !== 'output-available' && toolPart.state !== 'input-available')) {
4343
return (
4444
<ToolCallSimple
4545
toolPart={toolPart}
Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,15 @@
11
import { type ChatMessage } from '@onlook/models';
2-
import { Icons } from '@onlook/ui/icons';
3-
import { useMemo } from 'react';
42
import { MessageContent } from './message-content';
53

64
export const StreamMessage = ({ message }: { message: ChatMessage }) => {
7-
const isAssistantStreamMessage = useMemo(() => message?.role === 'assistant', [message?.role]);
8-
95
return (
10-
<>
11-
{message && isAssistantStreamMessage && (
12-
<div className="px-4 pt-2 text-small content-start flex flex-col text-wrap gap-2">
13-
<MessageContent
14-
messageId={message.id}
15-
parts={message.parts}
16-
applied={false}
17-
isStream={true}
18-
/>
19-
</div>
20-
)}
21-
<div className="flex w-full h-full flex-row items-center gap-2 px-4 my-2 text-small content-start text-foreground-secondary">
22-
<Icons.LoadingSpinner className="animate-spin" />
23-
<p>Thinking ...</p>
24-
</div>
25-
</>
6+
<div className="px-4 pt-2 text-small content-start flex flex-col text-wrap gap-2">
7+
<MessageContent
8+
messageId={message.id}
9+
parts={message.parts}
10+
applied={false}
11+
isStream={true}
12+
/>
13+
</div>
2614
);
2715
};

apps/web/client/src/app/project/[id]/_components/right-panel/chat-tab/code-display/collapsible-code-block.tsx

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { api } from '@/trpc/react';
21
import { useEditorEngine } from '@/components/store/editor';
2+
import { api } from '@/trpc/react';
33
import { Button } from '@onlook/ui/button';
44
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@onlook/ui/collapsible';
55
import { Icons } from '@onlook/ui/icons';
@@ -49,7 +49,6 @@ export const CollapsibleCodeBlock = observer(({
4949

5050
return (
5151
<div className="group relative">
52-
5352
<Collapsible open={isOpen} onOpenChange={setIsOpen}>
5453
<div
5554
className={cn(
@@ -83,16 +82,13 @@ export const CollapsibleCodeBlock = observer(({
8382
>
8483
<span className="truncate flex-1 min-w-0">{getTruncatedFileName(path)}</span>
8584
{(() => {
86-
const branch = branchId
85+
const branch = branchId
8786
? editorEngine.branches.allBranches.find(b => b.id === branchId)
8887
: editorEngine.branches.activeBranch;
8988
return branch && (
90-
<>
91-
92-
<span className="text-foreground-tertiary group-hover:text-foreground-secondary text-mini ml-0.5 flex-shrink-0 truncate max-w-24">
93-
{' • '}{branch.name}
94-
</span>
95-
</>
89+
<span className="text-foreground-tertiary group-hover:text-foreground-secondary text-mini ml-0.5 flex-shrink-0 truncate max-w-24">
90+
{' • '}{branch.name}
91+
</span>
9692
);
9793
})()}
9894
</div>

0 commit comments

Comments
 (0)