fix: isolate attachment submission state

This commit is contained in:
2026-08-24 01:50:04 +08:00
parent bec93d0918
commit 1ca0249e69
8 changed files with 320 additions and 21 deletions

View File

@@ -702,10 +702,12 @@ export function createCodingConversationStore(
};
});
let attachmentsPrepared = !input.prepareAttachments;
try {
if (input.prepareAttachments) {
submittedDraft.attachments = (await input.prepareAttachments())
.map((attachment) => ({ ...attachment }));
attachmentsPrepared = true;
set((state) => {
const currentEntry = state.entriesByConversationId[input.conversationId] ?? emptyEntry();
const requests = state.requestsByConversationId[input.conversationId] ?? {};
@@ -765,6 +767,7 @@ export function createCodingConversationStore(
} catch (error) {
const failure = errorDetails(error);
const uncertain = failure.code === 'CODING_REQUEST_UNCERTAIN';
const preSubmitFailure = !attachmentsPrepared;
set((state) => {
const currentEntry = state.entriesByConversationId[input.conversationId] ?? emptyEntry();
const requests = state.requestsByConversationId[input.conversationId] ?? {};
@@ -776,7 +779,11 @@ export function createCodingConversationStore(
const reducer = uncertain
? currentEntry.reducer
: withRejectedNode(currentEntry.reducer, nodeId);
const nextEntry = { ...currentEntry, reducer, error: failure.message };
const nextEntry = {
...currentEntry,
reducer,
error: preSubmitFailure ? currentEntry.error : failure.message,
};
return {
entriesByConversationId: {
...state.entriesByConversationId,