index.tsx 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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. raw,
  30. onGetKnownDataDetails: v => getEventExtraDataKnownDataDetails(v),
  31. })}
  32. raw={raw}
  33. />
  34. )}
  35. </EventDataSection>
  36. );
  37. },
  38. (prevProps: Props, nextProps: Props) => prevProps.event.id !== nextProps.event.id
  39. );
  40. export default EventExtraDataContext;