fix(app): reject stale timeline range indexes (#33488)
This commit is contained in:
parent
3f3f120825
commit
f0849a697c
4 changed files with 35 additions and 4 deletions
|
|
@ -73,6 +73,7 @@ import { makeTimer } from "@solid-primitives/timer"
|
|||
import { scheduleConnectedMeasure } from "./measure"
|
||||
import { createTimelineProjection } from "./projection"
|
||||
import { MessageComment, SummaryDiff, TimelineRow, TimelineRowMap } from "./rows"
|
||||
import { filterVirtualIndexes } from "./virtual-items"
|
||||
|
||||
const emptyMessages: MessageType[] = []
|
||||
const emptyParts: PartType[] = []
|
||||
|
|
@ -452,7 +453,10 @@ export function MessageTimeline(props: {
|
|||
const id = activeMessageID()
|
||||
const active = id ? (messageLastRowIndex().get(id) ?? -1) : -1
|
||||
const indexes = defaultRangeExtractor({ ...range, overscan: renderOverscan() })
|
||||
return [...new Set([...resizePinnedIndexes, ...indexes, ...(active < 0 ? [] : [active])])].sort((a, b) => a - b)
|
||||
return filterVirtualIndexes(
|
||||
[...new Set([...resizePinnedIndexes, ...indexes, ...(active < 0 ? [] : [active])])].sort((a, b) => a - b),
|
||||
range.count,
|
||||
)
|
||||
},
|
||||
})
|
||||
const resizeItem = virtualizer.resizeItem
|
||||
|
|
|
|||
3
packages/app/src/pages/session/timeline/virtual-items.ts
Normal file
3
packages/app/src/pages/session/timeline/virtual-items.ts
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
export function filterVirtualIndexes(indexes: number[], count: number) {
|
||||
return indexes.filter((index) => index >= 0 && index < count)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue