fix(frontend): wait for async chat submit before clearing (#2940)

* fix(frontend): wait for async chat submit before clearing

* test(frontend): cover pending attachment uploads

* fix(frontend): preserve sync submit semantics
This commit is contained in:
Admire
2026-05-15 22:27:10 +08:00
committed by GitHub
parent 7a2670eaea
commit 7c42ab3e16
5 changed files with 120 additions and 17 deletions
@@ -66,6 +66,7 @@ export default function AgentChatPage() {
thread,
pendingUsageMessages,
sendMessage,
isUploading,
isHistoryLoading,
hasMoreHistory,
loadMoreHistory,
@@ -106,7 +107,11 @@ export default function AgentChatPage() {
const handleSubmit = useCallback(
(message: PromptInputMessage) => {
void sendMessage(threadId, message, { agent_name });
const sendPromise = sendMessage(threadId, message, { agent_name });
if (message.files.length > 0) {
return sendPromise;
}
void sendPromise;
},
[sendMessage, threadId, agent_name],
);
@@ -243,7 +248,10 @@ export default function AgentChatPage() {
<AgentWelcome agent={agent} agentName={agent_name} />
)
}
disabled={env.NEXT_PUBLIC_STATIC_WEBSITE_ONLY === "true"}
disabled={
env.NEXT_PUBLIC_STATIC_WEBSITE_ONLY === "true" ||
isUploading
}
onContextChange={(context) => setSettings("context", context)}
onSubmit={handleSubmit}
onStop={handleStop}
@@ -109,7 +109,11 @@ export default function ChatPage() {
const handleSubmit = useCallback(
(message: PromptInputMessage) => {
void sendMessage(threadId, message);
const sendPromise = sendMessage(threadId, message);
if (message.files.length > 0) {
return sendPromise;
}
void sendPromise;
},
[sendMessage, threadId],
);