mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-10-30 14:49:14 +00:00
34 lines
1005 B
TypeScript
34 lines
1005 B
TypeScript
import type {RefObject} from 'react';
|
|
import {useEffect, useMemo} from 'react';
|
|
import type {List as ReactVirtualizedList} from 'react-virtualized';
|
|
|
|
import {useReplayContext} from 'sentry/components/replays/replayContext';
|
|
import {getPrevReplayFrame} from 'sentry/utils/replays/getReplayEvent';
|
|
import type {ReplayFrame} from 'sentry/utils/replays/types';
|
|
|
|
interface Opts {
|
|
frames: undefined | ReplayFrame[];
|
|
ref: RefObject<ReactVirtualizedList>;
|
|
}
|
|
|
|
function useScrollToCurrentItem({frames, ref}: Opts) {
|
|
const {currentTime} = useReplayContext();
|
|
const currentItem = useMemo(
|
|
() =>
|
|
getPrevReplayFrame({
|
|
frames: frames || [],
|
|
targetOffsetMs: currentTime,
|
|
}),
|
|
[frames, currentTime]
|
|
);
|
|
|
|
useEffect(() => {
|
|
if (ref.current && currentItem) {
|
|
const index = frames?.findIndex(frame => frame === currentItem);
|
|
ref.current?.scrollToRow(index ? index + 1 : undefined);
|
|
}
|
|
}, [frames, currentItem, ref]);
|
|
}
|
|
|
|
export default useScrollToCurrentItem;
|