Fix duplicate gem icon during AI streaming response

Skip rendering the empty placeholder assistant message while isLoading
is true — the GeminiTypingIndicator already shows the gem icon with
bouncing dots. Once tokens arrive and content is non-empty, the message
renders normally via GeminiMessage.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
gongzhiyong
2026-04-08 16:35:57 +08:00
co-authored by Claude Sonnet 4.6
parent 60acbac464
commit 117a8ddb58
+8 -2
View File
@@ -352,13 +352,19 @@ export function GeminiChat() {
<div className="max-w-3xl mx-auto px-4 pt-8 pb-4"> <div className="max-w-3xl mx-auto px-4 pt-8 pb-4">
{/* 对话中也显示工单摘要 */} {/* 对话中也显示工单摘要 */}
{ticketSystemConnected && <TicketSummary tickets={tickets} />} {ticketSystemConnected && <TicketSummary tickets={tickets} />}
{messages.map((msg) => ( {messages.map((msg) => {
// Hide empty assistant message while streaming — the typing indicator covers it
if (msg.role === "assistant" && msg.content === "" && isLoading) {
return null;
}
return (
<GeminiMessage <GeminiMessage
key={msg.id} key={msg.id}
message={msg} message={msg}
onRegenerate={msg.role === "assistant" ? handleRegenerate : undefined} onRegenerate={msg.role === "assistant" ? handleRegenerate : undefined}
/> />
))} );
})}
{isLoading && <GeminiTypingIndicator />} {isLoading && <GeminiTypingIndicator />}
<div ref={messagesEndRef} /> <div ref={messagesEndRef} />
</div> </div>