import {Fragment} from 'react'; import styled from '@emotion/styled'; import {CommitRow} from 'sentry/components/commitRow'; import {EventContexts} from 'sentry/components/events/contexts'; import {EventDevice} from 'sentry/components/events/device'; import {EventAttachments} from 'sentry/components/events/eventAttachments'; import {EventCause} from 'sentry/components/events/eventCause'; import {EventDataSection} from 'sentry/components/events/eventDataSection'; import {EventEntry} from 'sentry/components/events/eventEntry'; import {EventErrors} from 'sentry/components/events/eventErrors'; import {EventEvidence} from 'sentry/components/events/eventEvidence'; import {EventExtraData} from 'sentry/components/events/eventExtraData'; import EventReplay from 'sentry/components/events/eventReplay'; import {EventSdk} from 'sentry/components/events/eventSdk'; import {EventTagsAndScreenshot} from 'sentry/components/events/eventTagsAndScreenshot'; import {EventViewHierarchy} from 'sentry/components/events/eventViewHierarchy'; import {EventGroupingInfo} from 'sentry/components/events/groupingInfo'; import {CronTimelineSection} from 'sentry/components/events/interfaces/crons/cronTimelineSection'; import {AnrRootCause} from 'sentry/components/events/interfaces/performance/anrRootCause'; import {SpanEvidenceSection} from 'sentry/components/events/interfaces/performance/spanEvidence'; import {EventPackageData} from 'sentry/components/events/packageData'; import {EventRRWebIntegration} from 'sentry/components/events/rrwebIntegration'; import {EventUserFeedback} from 'sentry/components/events/userFeedback'; import {t} from 'sentry/locale'; import {space} from 'sentry/styles/space'; import {Event, Group, IssueCategory, Project} from 'sentry/types'; import {EntryType, EventTransaction} from 'sentry/types/event'; import {useLocation} from 'sentry/utils/useLocation'; import useOrganization from 'sentry/utils/useOrganization'; import {ResourcesAndMaybeSolutions} from 'sentry/views/issueDetails/resourcesAndMaybeSolutions'; type GroupEventDetailsContentProps = { group: Group; project: Project; event?: Event; }; type GroupEventEntryProps = { entryType: EntryType; event: Event; group: Group; project: Project; }; function GroupEventEntry({event, entryType, group, project}: GroupEventEntryProps) { const organization = useOrganization(); const matchingEntry = event.entries.find(entry => entry.type === entryType); if (!matchingEntry) { return null; } return ( ); } function GroupEventDetailsContent({ group, event, project, }: GroupEventDetailsContentProps) { const organization = useOrganization(); const location = useLocation(); const hasReplay = Boolean(event?.tags?.find(({key}) => key === 'replayId')?.value); const mechanism = event?.tags?.find(({key}) => key === 'mechanism')?.value; const isANR = mechanism === 'ANR' || mechanism === 'AppExitInfo'; const hasAnrImprovementsFeature = organization.features.includes('anr-improvements'); if (!event) { return (

{t('Latest event not available')}

); } const eventEntryProps = {group, event, project}; return ( {event.userReport && ( )} {group.issueCategory === IssueCategory.CRON && ( )} {hasAnrImprovementsFeature && isANR && ( )} {group.issueCategory === IssueCategory.PERFORMANCE && ( )} {event.groupID && ( )} {!hasReplay && ( )} ); } const NotFoundMessage = styled('div')` padding: ${space(2)} ${space(4)}; `; export default GroupEventDetailsContent;