fix(chat): keep messages chronological across ID rollover

This commit is contained in:
Bohdan Triapitsyn
2026-08-14 16:53:05 +03:00
parent 7cf869d5eb
commit fe1f6130d6
23 changed files with 405 additions and 132 deletions
+4 -2
View File
@@ -1490,7 +1490,8 @@ export const useSessionUIStore = create<SessionUIState>()((set, get) => ({
const revertToId = currentSession?.revert?.messageID
let targetMessage: typeof messages[number] | undefined
if (revertToId) {
targetMessage = [...userMessages].reverse().find((m) => m.id < revertToId)
const revertIndex = userMessages.findIndex((message) => message.id === revertToId)
targetMessage = revertIndex > 0 ? userMessages[revertIndex - 1] : undefined
} else {
targetMessage = userMessages[userMessages.length - 1]
}
@@ -1537,7 +1538,8 @@ export const useSessionUIStore = create<SessionUIState>()((set, get) => ({
await refetchSessionMessages(sessionId)
const messages = getSyncMessages(sessionId)
const userMessages = messages.filter((m) => m.role === "user")
const targetMessage = userMessages.find((m) => m.id > revertToId)
const revertIndex = userMessages.findIndex((message) => message.id === revertToId)
const targetMessage = revertIndex >= 0 ? userMessages[revertIndex + 1] : undefined
if (targetMessage) {
await get().revertToMessage(sessionId, targetMessage.id, { skipRedoPush: true })