diff options
Diffstat (limited to 'packages/app/src/components')
| -rw-r--r-- | packages/app/src/components/prompt-input.tsx | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/packages/app/src/components/prompt-input.tsx b/packages/app/src/components/prompt-input.tsx index e4a5a5150..5c64b87cc 100644 --- a/packages/app/src/components/prompt-input.tsx +++ b/packages/app/src/components/prompt-input.tsx @@ -1388,10 +1388,27 @@ export const PromptInput: Component<PromptInputProps> = (props) => { model, } - const setSyncStore = sessionDirectory === projectDirectory ? sync.set : globalSync.child(sessionDirectory)[1] - const addOptimisticMessage = () => { - setSyncStore( + if (sessionDirectory === projectDirectory) { + sync.set( + produce((draft) => { + const messages = draft.message[session.id] + if (!messages) { + draft.message[session.id] = [optimisticMessage] + } else { + const result = Binary.search(messages, messageID, (m) => m.id) + messages.splice(result.index, 0, optimisticMessage) + } + draft.part[messageID] = optimisticParts + .filter((p) => !!p?.id) + .slice() + .sort((a, b) => a.id.localeCompare(b.id)) + }), + ) + return + } + + globalSync.child(sessionDirectory)[1]( produce((draft) => { const messages = draft.message[session.id] if (!messages) { @@ -1409,7 +1426,21 @@ export const PromptInput: Component<PromptInputProps> = (props) => { } const removeOptimisticMessage = () => { - setSyncStore( + if (sessionDirectory === projectDirectory) { + sync.set( + produce((draft) => { + const messages = draft.message[session.id] + if (messages) { + const result = Binary.search(messages, messageID, (m) => m.id) + if (result.found) messages.splice(result.index, 1) + } + delete draft.part[messageID] + }), + ) + return + } + + globalSync.child(sessionDirectory)[1]( produce((draft) => { const messages = draft.message[session.id] if (messages) { |
