1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- import {Fragment} from 'react';
- import styled from '@emotion/styled';
- import type {Location} from 'history';
- import ErrorBoundary from 'sentry/components/errorBoundary';
- import QuickTrace from 'sentry/components/quickTrace';
- import {space} from 'sentry/styles/space';
- import type {Organization} from 'sentry/types';
- import type {Event} from 'sentry/types/event';
- import {defined} from 'sentry/utils';
- import TraceMetaQuery from 'sentry/utils/performance/quickTrace/traceMetaQuery';
- import type {QuickTraceQueryChildrenProps} from 'sentry/utils/performance/quickTrace/types';
- import {getTraceTimeRangeFromEvent} from 'sentry/utils/performance/quickTrace/utils';
- import useRouteAnalyticsParams from 'sentry/utils/routeAnalytics/useRouteAnalyticsParams';
- import {TraceLink} from 'sentry/views/issueDetails/quickTrace/traceLink';
- type Props = {
- event: Event;
- location: Location;
- organization: Organization;
- quickTrace: undefined | QuickTraceQueryChildrenProps;
- };
- function IssueQuickTrace({event, location, organization, quickTrace}: Props) {
- const isTraceMissing =
- !quickTrace ||
- quickTrace.error ||
- ((!defined(quickTrace.trace) || quickTrace.trace.length === 0) &&
- (!quickTrace.orphanErrors || quickTrace.orphanErrors?.length === 0));
- const traceId = event.contexts?.trace?.trace_id ?? '';
- const {start, end} = getTraceTimeRangeFromEvent(event);
- useRouteAnalyticsParams({
- trace_status: isTraceMissing
- ? quickTrace?.type === 'missing'
- ? 'transaction missing'
- : 'trace missing'
- : 'success',
- });
- if (isTraceMissing) {
- return (
- <QuickTraceWrapper>
- <TraceLink
- quickTrace={quickTrace}
- event={event}
- traceMeta={null}
- source="issues"
- />
- </QuickTraceWrapper>
- );
- }
- return (
- <ErrorBoundary mini>
- <QuickTraceWrapper>
- <TraceMetaQuery
- location={location}
- orgSlug={organization.slug}
- traceId={traceId}
- start={start}
- end={end}
- >
- {metaResults => (
- <Fragment>
- <QuickTrace
- event={event}
- quickTrace={quickTrace}
- location={location}
- organization={organization}
- anchor="left"
- errorDest="issue"
- transactionDest="performance"
- />
- <TraceLink
- quickTrace={quickTrace}
- event={event}
- traceMeta={metaResults?.meta ?? null}
- source="issues"
- />
- </Fragment>
- )}
- </TraceMetaQuery>
- </QuickTraceWrapper>
- </ErrorBoundary>
- );
- }
- const QuickTraceWrapper = styled('div')`
- display: flex;
- align-items: center;
- gap: ${space(0.75)};
- flex-wrap: wrap;
- margin-top: ${space(0.75)};
- height: 20px;
- `;
- export default IssueQuickTrace;
|