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 18572b8d14..2b90305bc1 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 @@ -32,6 +32,7 @@ import { reviewTooltipStateField } from '@/features/source-editor/extensions/rev import ReviewPanelMoreCommentsButton from './review-panel-more-comments-button' import useMoreCommments from '../hooks/use-more-comments' import { Decoration } from '@codemirror/view' +import { debounce } from 'lodash' type AggregatedRanges = { changes: Change[] @@ -116,6 +117,19 @@ const ReviewPanelCurrentFile: FC = () => { false )?.addCommentRanges + const setUpdatedPositions = useMemo( + () => + debounce(() => { + setPositions(new Map(positionsRef.current)) + window.setTimeout(() => { + containerRef.current?.dispatchEvent( + new Event('review-panel:position') + ) + }) + }, 50), + [] + ) + const positionsMeasureRequest = useCallback(() => { if (aggregatedRanges) { view.requestMeasure({ @@ -166,16 +180,11 @@ const ReviewPanelCurrentFile: FC = () => { } }, write() { - setPositions(new Map(positionsRef.current)) - window.setTimeout(() => { - containerRef.current?.dispatchEvent( - new Event('review-panel:position') - ) - }) + setUpdatedPositions() }, }) } - }, [view, aggregatedRanges, addCommentRanges]) + }, [view, aggregatedRanges, addCommentRanges, setUpdatedPositions]) useEffect(positionsMeasureRequest, [positionsMeasureRequest]) useEventListener('editor:geometry-change', positionsMeasureRequest)