packageData.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import ClippedBox from 'sentry/components/clippedBox';
  2. import ErrorBoundary from 'sentry/components/errorBoundary';
  3. import {EventDataSection} from 'sentry/components/events/eventDataSection';
  4. import KeyValueList from 'sentry/components/events/interfaces/keyValueList';
  5. import {t} from 'sentry/locale';
  6. import {Event} from 'sentry/types/event';
  7. import {objectIsEmpty} from 'sentry/utils';
  8. type Props = {
  9. event: Event;
  10. };
  11. export function EventPackageData({event}: Props) {
  12. let longKeys: boolean, title: string;
  13. const packages = Object.entries(event.packages || {}).map(([key, value]) => ({
  14. key,
  15. value,
  16. subject: key,
  17. meta: event._meta?.packages?.[key]?.[''],
  18. }));
  19. switch (event.platform) {
  20. case 'csharp':
  21. longKeys = true;
  22. title = t('Assemblies');
  23. break;
  24. case 'java':
  25. longKeys = true;
  26. title = t('Dependencies');
  27. break;
  28. default:
  29. longKeys = false;
  30. title = t('Packages');
  31. }
  32. if (objectIsEmpty(event.packages)) {
  33. return null;
  34. }
  35. return (
  36. <EventDataSection type="packages" title={title}>
  37. <ClippedBox>
  38. <ErrorBoundary mini>
  39. <KeyValueList data={packages} longKeys={longKeys} />
  40. </ErrorBoundary>
  41. </ClippedBox>
  42. </EventDataSection>
  43. );
  44. }