Skip to content

Commit 4e43621

Browse files
committed
Fix current message
Signed-off-by: Lin Wang <[email protected]>
1 parent c55a63b commit 4e43621

File tree

2 files changed

+20
-11
lines changed

2 files changed

+20
-11
lines changed

src/plugins/chat/public/components/chat_messages.tsx

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,20 +54,21 @@ export const ChatMessages: React.FC<ChatMessagesProps> = ({
5454

5555
// Context is now handled by RFC hooks - no subscriptions needed
5656

57-
// Only show suggestion on llm outputs after last user input
58-
const showSuggestions = useMemo(() => {
57+
const lastAssistantMessageIndex = useMemo(
58+
() => timeline.findLastIndex((message) => message.role === 'assistant'),
59+
[timeline]
60+
);
61+
// Only enable suggestion on llm outputs after last user input
62+
const suggestionsEnabled = useMemo(() => {
5963
if (isStreaming) {
6064
return false;
6165
}
6266
if (timeline.length === 0) {
6367
return false;
6468
}
65-
const lastAssistantMessageIndex = timeline.findLastIndex(
66-
(message) => message.role === 'assistant'
67-
);
6869
const lastUserMessageIndex = timeline.findLastIndex((message) => message.role === 'user');
6970
return lastAssistantMessageIndex > lastUserMessageIndex;
70-
}, [timeline, isStreaming]);
71+
}, [timeline, isStreaming, lastAssistantMessageIndex]);
7172

7273
return (
7374
<>
@@ -87,7 +88,7 @@ export const ChatMessages: React.FC<ChatMessagesProps> = ({
8788
</div>
8889
)}
8990

90-
{timeline.map((message) => {
91+
{timeline.map((message, index) => {
9192
// Handle different message types
9293
if (message.role === 'user') {
9394
return <MessageRow key={message.id} message={message} onResend={onResendMessage} />;
@@ -117,7 +118,9 @@ export const ChatMessages: React.FC<ChatMessagesProps> = ({
117118
<MessageRow message={assistantMsg} />
118119
)}
119120

120-
{showSuggestions && <ChatSuggestions messages={timeline} />}
121+
{suggestionsEnabled && lastAssistantMessageIndex === index && (
122+
<ChatSuggestions messages={timeline} currentMessage={message} />
123+
)}
121124

122125
{/* Tool calls below the message */}
123126
{assistantMsg.toolCalls?.map((toolCall) => {

src/plugins/chat/public/components/chat_suggestions.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,13 @@ const SuggestionBubble: React.FC<SuggestionBubbleProps> = ({
7878
);
7979
};
8080

81-
export const ChatSuggestions = ({ messages }: { messages: Message[] }) => {
81+
export const ChatSuggestions = ({
82+
messages,
83+
currentMessage,
84+
}: {
85+
messages: Message[];
86+
currentMessage: Message;
87+
}) => {
8288
const { suggestedActionsService, chatService } = useChatContext();
8389

8490
const [customSuggestions, setCustomSuggestions] = useState<SuggestedActions[]>([]);
@@ -93,7 +99,7 @@ export const ChatSuggestions = ({ messages }: { messages: Message[] }) => {
9399
// Create ChatContext object from current chat state
94100
const context: ChatContext = {
95101
conversationId: chatService.getThreadId(),
96-
currentMessage: messages[messages.length - 1],
102+
currentMessage,
97103
messageHistory: messages,
98104
};
99105

@@ -109,7 +115,7 @@ export const ChatSuggestions = ({ messages }: { messages: Message[] }) => {
109115
};
110116

111117
loadCustomSuggestions();
112-
}, [suggestedActionsService, chatService, messages]);
118+
}, [suggestedActionsService, chatService, messages, currentMessage]);
113119

114120
if (isLoadingCustomSuggestions || customSuggestions.length === 0) {
115121
return null;

0 commit comments

Comments
 (0)