import {useState} from 'react'; import {EventDataSection} from 'sentry/components/events/eventDataSection'; import CrashContent from 'sentry/components/events/interfaces/crashContent'; import CrashActions from 'sentry/components/events/interfaces/crashHeader/crashActions'; import CrashTitle from 'sentry/components/events/interfaces/crashHeader/crashTitle'; import {t} from 'sentry/locale'; import {Group, Project} from 'sentry/types'; import {EntryType, Event} from 'sentry/types/event'; import {STACK_TYPE, STACK_VIEW} from 'sentry/types/stacktrace'; import NoStackTraceMessage from './noStackTraceMessage'; import {isStacktraceNewestFirst} from './utils'; type CrashContentProps = React.ComponentProps; type Props = Pick< CrashContentProps, 'groupingCurrentLevel' | 'hasHierarchicalGrouping' > & { data: NonNullable; event: Event; projectSlug: Project['slug']; groupingCurrentLevel?: Group['metadata']['current_level']; hideGuide?: boolean; }; export function StackTrace({ hideGuide = false, projectSlug, event, data, hasHierarchicalGrouping, groupingCurrentLevel, }: Props) { const [stackView, setStackView] = useState( data.hasSystemFrames ? STACK_VIEW.APP : STACK_VIEW.FULL ); const [newestFirst, setNewestFirst] = useState(isStacktraceNewestFirst()); const stackTraceNotFound = !(data.frames ?? []).length; return ( setNewestFirst(value.newestFirst) : undefined } /> } actions={ !stackTraceNotFound && ( setStackView(value.stackView ?? stackView)} /> ) } wrapTitle={false} > {stackTraceNotFound ? ( ) : ( )} ); }