fix: improve syncing when switching conversations

This commit is contained in:
Danny Avila 2025-12-12 01:10:08 -05:00
parent 8018762f11
commit 1b2d3f30ef
No known key found for this signature in database
GPG key ID: BF31EEB2C5CA0956
14 changed files with 314 additions and 176 deletions

View file

@ -51,12 +51,9 @@ type AllContentTypes =
| ContentTypes.IMAGE_URL
| ContentTypes.ERROR;
const noop = () => {};
export default function useStepHandler({
setMessages,
getMessages,
setIsSubmitting = noop,
announcePolite,
lastAnnouncementTimeRef,
}: TUseStepHandler) {
@ -468,7 +465,7 @@ export default function useStepHandler({
stepMap.current.clear();
};
},
[getMessages, setIsSubmitting, lastAnnouncementTimeRef, announcePolite, setMessages],
[getMessages, lastAnnouncementTimeRef, announcePolite, setMessages],
);
const clearStepMaps = useCallback(() => {
@ -476,5 +473,17 @@ export default function useStepHandler({
messageMap.current.clear();
stepMap.current.clear();
}, []);
return { stepHandler, clearStepMaps };
/**
* Sync a message into the step handler's messageMap.
* Call this after receiving sync event to ensure subsequent deltas
* build on the synced content, not stale content.
*/
const syncStepMessage = useCallback((message: TMessage) => {
if (message?.messageId) {
messageMap.current.set(message.messageId, { ...message });
}
}, []);
return { stepHandler, clearStepMaps, syncStepMessage };
}