fix: reset cursor when history changes
This commit is contained in:
parent
9995b680f7
commit
acb16bcb27
@ -50,4 +50,17 @@ describe("getNewMessages", () => {
|
|||||||
// #then
|
// #then
|
||||||
expect(next).toEqual(shorter)
|
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)
|
const lastIndex = keys.lastIndexOf(cursor.lastKey)
|
||||||
if (lastIndex >= 0) {
|
if (lastIndex >= 0) {
|
||||||
startIndex = lastIndex + 1
|
startIndex = lastIndex + 1
|
||||||
} else if (cursor.lastCount <= messages.length) {
|
} else {
|
||||||
startIndex = cursor.lastCount
|
// History changed without a shrink; reset to avoid skipping messages.
|
||||||
|
startIndex = 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user