import styled from '@emotion/styled'; import {Location} from 'history'; import {Alert} from 'sentry/components/alert'; import {Button} from 'sentry/components/button'; import ErrorBoundary from 'sentry/components/errorBoundary'; import ExternalLink from 'sentry/components/links/externalLink'; import QuickTrace from 'sentry/components/quickTrace'; import {IconClose} from 'sentry/icons'; import {t, tct} from 'sentry/locale'; import {space} from 'sentry/styles/space'; import {Organization} from 'sentry/types'; import {Event} from 'sentry/types/event'; import trackAdvancedAnalyticsEvent from 'sentry/utils/analytics/trackAdvancedAnalyticsEvent'; import {QuickTraceQueryChildrenProps} from 'sentry/utils/performance/quickTrace/types'; import usePromptCheck from 'sentry/views/issueDetails/quickTrace/usePromptCheck'; type Props = { event: Event; location: Location; organization: Organization; quickTrace: undefined | QuickTraceQueryChildrenProps; isPerformanceIssue?: boolean; }; function IssueQuickTrace({ event, location, organization, quickTrace, isPerformanceIssue, }: Props) { const {shouldShowPrompt, snoozePrompt} = usePromptCheck({ projectId: event.projectID, feature: 'quick_trace_missing', organization, }); if ( !quickTrace || quickTrace.error || quickTrace.trace === null || quickTrace.trace.length === 0 ) { if (!shouldShowPrompt) { return null; } trackAdvancedAnalyticsEvent('issue.quick_trace_status', { organization, status: quickTrace?.type === 'missing' ? 'transaction missing' : 'trace missing', is_performance_issue: isPerformanceIssue ?? false, }); return ( } onClick={snoozePrompt} /> } > {tct( 'The [type] for this event cannot be found. [link:Read the docs to understand why].', { type: quickTrace?.type === 'missing' ? t('transaction') : t('trace'), link: ( ), } )} ); } trackAdvancedAnalyticsEvent('issue.quick_trace_status', { organization, status: 'success', is_performance_issue: isPerformanceIssue ?? false, }); return ( ); } const QuickTraceWrapper = styled('div')` margin-top: ${space(0.5)}; `; const StyledAlert = styled(Alert)` margin: ${space(1)} 0; `; export default IssueQuickTrace;