import {memo, useCallback} from 'react';
import {useReplayContext} from 'sentry/components/replays/replayContext';
import {relativeTimeInMs} from 'sentry/components/replays/utils';
import ChevronDividedList from 'sentry/components/replays/walker/chevronDividedList';
import splitCrumbs from 'sentry/components/replays/walker/splitCrumbs';
import {
BreadcrumbLevelType,
BreadcrumbType,
BreadcrumbTypeNavigation,
Crumb,
} from 'sentry/types/breadcrumbs';
import type {ReplayRecord} from 'sentry/views/replays/types';
type CrumbProps = {
crumbs: Crumb[];
replayRecord: ReplayRecord;
};
type StringProps = {
urls: string[];
};
export const CrumbWalker = memo(function CrumbWalker({crumbs, replayRecord}: CrumbProps) {
const {setCurrentTime} = useReplayContext();
const startTimestampMs = replayRecord.startedAt.getTime();
const handleClick = useCallback(
(crumb: Crumb) => {
crumb.timestamp !== undefined
? setCurrentTime(relativeTimeInMs(crumb.timestamp, startTimestampMs))
: null;
},
[setCurrentTime, startTimestampMs]
);
const navCrumbs = crumbs.filter(
crumb => crumb.type === BreadcrumbType.NAVIGATION
) as BreadcrumbTypeNavigation[];
return (
);
});
export const StringWalker = memo(function StringWalker({urls}: StringProps) {
return (
);
});
function urlToCrumb(url: string) {
return {
type: BreadcrumbType.NAVIGATION,
category: BreadcrumbType.NAVIGATION,
level: BreadcrumbLevelType.INFO,
description: 'Navigation',
id: 0,
color: 'green300',
timestamp: undefined,
data: {to: url},
} as BreadcrumbTypeNavigation;
}