import {useEffect} from 'react'; 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 {Tooltip} from 'sentry/components/tooltip'; import {IconFire} from 'sentry/icons'; import {t, tct} from 'sentry/locale'; import {space} from 'sentry/styles/space'; import {Group, IssueCategory, Organization} from 'sentry/types'; import {Event} from 'sentry/types/event'; import {defined} from 'sentry/utils'; import trackAdvancedAnalyticsEvent from 'sentry/utils/analytics/trackAdvancedAnalyticsEvent'; import {QuickTraceQueryChildrenProps} from 'sentry/utils/performance/quickTrace/types'; import useOrganization from 'sentry/utils/useOrganization'; type Props = { event: Event; group: Group; location: Location; organization: Organization; quickTrace: undefined | QuickTraceQueryChildrenProps; }; function TransactionMissingPlaceholder({ type, group, }: { group: Group; type?: QuickTraceQueryChildrenProps['type']; }) { const organization = useOrganization(); useEffect(() => { trackAdvancedAnalyticsEvent('issue.quick_trace_status', { organization, status: type === 'missing' ? 'transaction missing' : 'trace missing', is_performance_issue: group.issueCategory === IssueCategory.PERFORMANCE, }); }); return ( ), } )} > ??? {t('This Event')} ); } function IssueQuickTrace({group, event, location, organization, quickTrace}: Props) { if ( !quickTrace || quickTrace.error || !defined(quickTrace.trace) || quickTrace.trace.length === 0 ) { return ; } trackAdvancedAnalyticsEvent('issue.quick_trace_status', { organization, status: 'success', is_performance_issue: group.issueCategory === IssueCategory.PERFORMANCE, }); return ( ); } const QuickTraceWrapper = styled('div')` margin-top: ${space(0.5)}; `; export default IssueQuickTrace;