diff --git a/services/web/frontend/js/features/review-panel-new/components/review-panel-current-file.tsx b/services/web/frontend/js/features/review-panel-new/components/review-panel-current-file.tsx index 9ab29e389f..8a8cfdef2e 100644 --- a/services/web/frontend/js/features/review-panel-new/components/review-panel-current-file.tsx +++ b/services/web/frontend/js/features/review-panel-new/components/review-panel-current-file.tsx @@ -45,20 +45,26 @@ const ReviewPanelCurrentFile: FC = () => { const [aggregatedRanges, setAggregatedRanges] = useState() const containerRef = useRef(null) - const previousFocusedItem = useRef(0) + const previousFocusedItem = useRef(new Map()) const updatePositions = useCallback(() => { - if (containerRef.current) { - const extents = positionItems( + const docId = ranges?.docId + + if (containerRef.current && docId) { + const positioningRes = positionItems( containerRef.current, - previousFocusedItem.current + previousFocusedItem.current.get(docId) || 0, + docId ) - if (extents) { - previousFocusedItem.current = extents.activeItemIndex + if (positioningRes) { + previousFocusedItem.current.set( + positioningRes.docId, + positioningRes.activeItemIndex + ) } } - }, []) + }, [ranges?.docId]) useEffect(() => { const timer = window.setTimeout(() => { diff --git a/services/web/frontend/js/features/review-panel-new/utils/position-items.ts b/services/web/frontend/js/features/review-panel-new/utils/position-items.ts index eb624aa8f5..26eda378a3 100644 --- a/services/web/frontend/js/features/review-panel-new/utils/position-items.ts +++ b/services/web/frontend/js/features/review-panel-new/utils/position-items.ts @@ -4,7 +4,11 @@ const COLLAPSED_HEADER_HEIGHT = 75 const OFFSET_FOR_ENTRIES_ABOVE = 70 export const positionItems = debounce( - (element: HTMLDivElement, previousFocusedItemIndex: number) => { + ( + element: HTMLDivElement, + previousFocusedItemIndex: number, + docId: string + ) => { const items = Array.from( element.querySelectorAll('.review-panel-entry') ) @@ -80,9 +84,8 @@ export const positionItems = debounce( } return { + docId, activeItemIndex, - min: topLimit, - max: bottomLimit, } }, 100,