fix: reset cursor when history changes
This commit is contained in:
@@ -50,4 +50,17 @@ describe("getNewMessages", () => {
|
||||
// #then
|
||||
expect(next).toEqual(shorter)
|
||||
})
|
||||
|
||||
it("returns all messages when last key is missing", () => {
|
||||
// #given
|
||||
const messages = [buildMessage("m1", 1), buildMessage("m2", 2)]
|
||||
getNewMessages(sessionID, messages)
|
||||
const replaced = [buildMessage("n1", 1), buildMessage("n2", 2)]
|
||||
|
||||
// #when
|
||||
const next = getNewMessages(sessionID, replaced)
|
||||
|
||||
// #then
|
||||
expect(next).toEqual(replaced)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -57,8 +57,9 @@ export function getNewMessages<T extends CursorMessage>(
|
||||
const lastIndex = keys.lastIndexOf(cursor.lastKey)
|
||||
if (lastIndex >= 0) {
|
||||
startIndex = lastIndex + 1
|
||||
} else if (cursor.lastCount <= messages.length) {
|
||||
startIndex = cursor.lastCount
|
||||
} else {
|
||||
// History changed without a shrink; reset to avoid skipping messages.
|
||||
startIndex = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user