import styled from '@emotion/styled';
import {Location} from 'history';
import ErrorBoundary from 'sentry/components/errorBoundary';
import ExternalLink from 'sentry/components/links/externalLink';
import QuickTrace from 'sentry/components/quickTrace';
import {
ErrorNodeContent,
EventNode,
QuickTraceContainer,
TraceConnector,
} from 'sentry/components/quickTrace/styles';
import {IconFire} from 'sentry/icons';
import {t, tct} from 'sentry/locale';
import {space} from 'sentry/styles/space';
import {Group, Organization} from 'sentry/types';
import {Event} from 'sentry/types/event';
import {defined} from 'sentry/utils';
import {QuickTraceQueryChildrenProps} from 'sentry/utils/performance/quickTrace/types';
import useRouteAnalyticsParams from 'sentry/utils/routeAnalytics/useRouteAnalyticsParams';
import {TraceLink} from 'sentry/views/issueDetails/quickTrace/traceLink';
type Props = {
event: Event;
group: Group;
location: Location;
organization: Organization;
quickTrace: undefined | QuickTraceQueryChildrenProps;
};
function TransactionMissingPlaceholder({
type,
event,
}: {
event: Event;
type?: QuickTraceQueryChildrenProps['type'];
}) {
useRouteAnalyticsParams({
trace_status: type === 'missing' ? 'transaction missing' : 'trace missing',
});
return (
),
}
)}
>
???
{t('This Event')}
);
}
function IssueQuickTrace({event, location, organization, quickTrace}: Props) {
const shouldShowPlaceholder =
!quickTrace ||
quickTrace.error ||
!defined(quickTrace.trace) ||
quickTrace.trace.length === 0;
useRouteAnalyticsParams(shouldShowPlaceholder ? {} : {trace_status: 'success'});
if (shouldShowPlaceholder) {
return ;
}
return (
);
}
const QuickTraceWrapper = styled('div')`
display: flex;
align-items: center;
flex-wrap: wrap;
margin-top: ${space(0.75)};
`;
export default IssueQuickTrace;