index.tsx 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import {Fragment} from 'react';
  2. import ContextBlock from 'sentry/components/events/contexts/contextBlock';
  3. import type {Event} from 'sentry/types';
  4. import {
  5. getContextMeta,
  6. getKnownData,
  7. getKnownStructuredData,
  8. getUnknownData,
  9. } from '../utils';
  10. import {getBrowserKnownDataDetails} from './getBrowserKnownDataDetails';
  11. import type {BrowserKnownData} from './types';
  12. import {BrowserKnownDataType} from './types';
  13. type Props = {
  14. data: BrowserKnownData;
  15. event: Event;
  16. meta?: Record<string, any>;
  17. };
  18. export const browserKnownDataValues = [
  19. BrowserKnownDataType.NAME,
  20. BrowserKnownDataType.VERSION,
  21. ];
  22. export function getKnownBrowserContextData({data, meta}: Pick<Props, 'data' | 'meta'>) {
  23. return getKnownData<BrowserKnownData, BrowserKnownDataType>({
  24. data,
  25. meta,
  26. knownDataTypes: browserKnownDataValues,
  27. onGetKnownDataDetails: v => getBrowserKnownDataDetails(v),
  28. });
  29. }
  30. export function getUnknownBrowserContextData({data, meta}: Pick<Props, 'data' | 'meta'>) {
  31. return getUnknownData({
  32. allData: data,
  33. knownKeys: [...browserKnownDataValues],
  34. meta,
  35. });
  36. }
  37. export function BrowserEventContext({data, event, meta: propsMeta}: Props) {
  38. const meta = propsMeta ?? getContextMeta(event, 'browser');
  39. const knownData = getKnownBrowserContextData({data, meta});
  40. const knownStructuredData = getKnownStructuredData(knownData, meta);
  41. const unknownData = getUnknownBrowserContextData({data, meta});
  42. return (
  43. <Fragment>
  44. <ContextBlock data={knownStructuredData} />
  45. <ContextBlock data={unknownData} />
  46. </Fragment>
  47. );
  48. }