import * as React from 'react';
import Breadcrumbs from 'app/components/events/interfaces/breadcrumbs';
import Csp from 'app/components/events/interfaces/csp';
import DebugMeta from 'app/components/events/interfaces/debugMeta';
import DebugMetaV2 from 'app/components/events/interfaces/debugMeta-v2';
import Exception from 'app/components/events/interfaces/exception';
import Generic from 'app/components/events/interfaces/generic';
import Message from 'app/components/events/interfaces/message';
import Request from 'app/components/events/interfaces/request';
import Spans from 'app/components/events/interfaces/spans';
import Stacktrace from 'app/components/events/interfaces/stacktrace';
import Template from 'app/components/events/interfaces/template';
import Threads from 'app/components/events/interfaces/threads';
import {Group, Organization, Project, SharedViewOrganization} from 'app/types';
import {Entry, EntryType, Event, EventTransaction} from 'app/types/event';
type Props = {
entry: Entry;
projectSlug: Project['slug'];
event: Event;
organization: SharedViewOrganization | Organization;
group?: Group;
};
function EventEntry({entry, projectSlug, event, organization, group}: Props) {
const hasHierarchicalGrouping =
!!organization.features?.includes('grouping-stacktrace-ui') &&
!!(event.metadata.current_tree_label || event.metadata.finest_tree_label);
const groupingCurrentLevel = group?.metadata?.current_level;
switch (entry.type) {
case EntryType.EXCEPTION: {
const {data, type} = entry;
return (
);
}
case EntryType.MESSAGE: {
const {data} = entry;
return ;
}
case EntryType.REQUEST: {
const {data, type} = entry;
return ;
}
case EntryType.STACKTRACE: {
const {data, type} = entry;
return (
);
}
case EntryType.TEMPLATE: {
const {data, type} = entry;
return ;
}
case EntryType.CSP: {
const {data} = entry;
return ;
}
case EntryType.EXPECTCT:
case EntryType.EXPECTSTAPLE:
case EntryType.HPKP: {
const {data, type} = entry;
return ;
}
case EntryType.BREADCRUMBS: {
const {data, type} = entry;
return (
);
}
case EntryType.THREADS: {
const {data, type} = entry;
return (
);
}
case EntryType.DEBUGMETA:
const {data} = entry;
const hasImagesLoadedV2Feature =
!!organization.features?.includes('images-loaded-v2');
if (hasImagesLoadedV2Feature) {
return (
['data']}
/>
);
}
return (
);
case EntryType.SPANS:
return (
);
default:
// this should not happen
/* eslint no-console:0 */
window.console &&
console.error &&
console.error('Unregistered interface: ' + (entry as any).type);
return null;
}
}
export default EventEntry;