From 28ec99010032f0a39be5c5d40a2efc4db9991a41 Mon Sep 17 00:00:00 2001 From: one Date: Wed, 30 Apr 2025 20:15:13 +0800 Subject: [PATCH] fix: prevent overriding block status on aborting (#5547) --- src/renderer/src/store/thunk/messageThunk.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/renderer/src/store/thunk/messageThunk.ts b/src/renderer/src/store/thunk/messageThunk.ts index b3b07c77ae..f56ccec41a 100644 --- a/src/renderer/src/store/thunk/messageThunk.ts +++ b/src/renderer/src/store/thunk/messageThunk.ts @@ -119,7 +119,11 @@ const throttledBlockUpdate = throttle((id, blockUpdate) => { const state = store.getState() const block = state.messageBlocks.entities[id] // throttle是异步函数,可能会在complete事件触发后才执行 - if (blockUpdate.status === MessageBlockStatus.STREAMING && block?.status === MessageBlockStatus.SUCCESS) return + if ( + blockUpdate.status === MessageBlockStatus.STREAMING && + (block?.status === MessageBlockStatus.SUCCESS || block?.status === MessageBlockStatus.ERROR) + ) + return store.dispatch(updateOneBlock({ id, changes: blockUpdate })) }, 150) @@ -135,7 +139,11 @@ export const throttledBlockDbUpdate = throttle( const state = store.getState() const block = state.messageBlocks.entities[blockId] // throttle是异步函数,可能会在complete事件触发后才执行 - if (blockChanges.status === MessageBlockStatus.STREAMING && block?.status === MessageBlockStatus.SUCCESS) return + if ( + blockChanges.status === MessageBlockStatus.STREAMING && + (block?.status === MessageBlockStatus.SUCCESS || block?.status === MessageBlockStatus.ERROR) + ) + return console.log(`[DB Throttle Block Update] Updating block ${blockId} with changes:`, blockChanges) try { await db.message_blocks.update(blockId, blockChanges)