index.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import {memo, useState} from 'react';
  2. import ContextBlock from 'sentry/components/events/contexts/contextBlock';
  3. import EventDataSection from 'sentry/components/events/eventDataSection';
  4. import {t} from 'sentry/locale';
  5. import {Event} from 'sentry/types/event';
  6. import {defined} from 'sentry/utils';
  7. import {geKnownData} from '../contexts/utils';
  8. import {getEventExtraDataKnownDataDetails} from './getEventExtraDataKnownDataDetails';
  9. import {EventExtraData, EventExtraDataType} from './types';
  10. type Props = {
  11. event: Event;
  12. };
  13. const EventExtraDataContext = memo(
  14. ({event}: Props) => {
  15. const [raw, setRaw] = useState(false);
  16. return (
  17. <EventDataSection
  18. type="extra"
  19. title={t('Additional Data')}
  20. toggleRaw={() => setRaw(!raw)}
  21. raw={raw}
  22. >
  23. {!defined(event.context) ? null : (
  24. <ContextBlock
  25. data={geKnownData<EventExtraData, EventExtraDataType>({
  26. data: event.context,
  27. knownDataTypes: Object.keys(event.context),
  28. meta: event._meta?.context,
  29. onGetKnownDataDetails: v => getEventExtraDataKnownDataDetails(v),
  30. })}
  31. raw={raw}
  32. />
  33. )}
  34. </EventDataSection>
  35. );
  36. },
  37. (prevProps: Props, nextProps: Props) => prevProps.event.id !== nextProps.event.id
  38. );
  39. export default EventExtraDataContext;