Prefill messages in main process and ensure loading state is always shown (incl. new chat) (#35)

This commit is contained in:
Will Chen
2025-04-28 16:47:02 -07:00
committed by GitHub
parent 9fb5439ecf
commit 813f170c68
2 changed files with 54 additions and 58 deletions

View File

@@ -62,44 +62,18 @@ export function useStreamChat({
}
setError(null);
setMessages((currentMessages: Message[]) => {
if (redo) {
let remainingMessages = currentMessages.slice();
if (
currentMessages[currentMessages.length - 1].role === "assistant"
) {
remainingMessages = currentMessages.slice(0, -1);
}
return [
...remainingMessages,
{
id: getRandomNumberId(),
role: "assistant",
content: "",
},
];
}
return [
...currentMessages,
{
id: getRandomNumberId(),
role: "user",
content: prompt,
},
{
id: getRandomNumberId(),
role: "assistant",
content: "",
},
];
});
setIsStreaming(true);
setStreamCount((streamCount) => streamCount + 1);
let hasIncrementedStreamCount = false;
try {
IpcClient.getInstance().streamMessage(prompt, {
chatId,
redo,
onUpdate: (updatedMessages: Message[]) => {
if (!hasIncrementedStreamCount) {
setStreamCount((streamCount) => streamCount + 1);
hasIncrementedStreamCount = true;
}
setMessages(updatedMessages);
},
onEnd: (response: ChatResponseEnd) => {