index.tsx 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import {Fragment} from 'react';
  2. import ContextBlock from 'sentry/components/events/contexts/contextBlock';
  3. import type {Event} from 'sentry/types/event';
  4. import {
  5. getContextMeta,
  6. getKnownData,
  7. getKnownStructuredData,
  8. getUnknownData,
  9. } from '../utils';
  10. import {getOperatingSystemKnownDataDetails} from './getOperatingSystemKnownDataDetails';
  11. import type {OperatingSystemKnownData} from './types';
  12. import {OperatingSystemIgnoredDataType, OperatingSystemKnownDataType} from './types';
  13. type Props = {
  14. data: OperatingSystemKnownData;
  15. event: Event;
  16. meta?: Record<string, any>;
  17. };
  18. export const operatingSystemKnownDataValues = [
  19. OperatingSystemKnownDataType.NAME,
  20. OperatingSystemKnownDataType.VERSION,
  21. OperatingSystemKnownDataType.KERNEL_VERSION,
  22. OperatingSystemKnownDataType.ROOTED,
  23. ];
  24. const operatingSystemIgnoredDataValues = [OperatingSystemIgnoredDataType.BUILD];
  25. export function getKnownOperatingSystemContextData({
  26. data,
  27. meta,
  28. }: Pick<Props, 'data' | 'meta'>) {
  29. return getKnownData<OperatingSystemKnownData, OperatingSystemKnownDataType>({
  30. data,
  31. meta,
  32. knownDataTypes: operatingSystemKnownDataValues,
  33. onGetKnownDataDetails: v => getOperatingSystemKnownDataDetails(v),
  34. });
  35. }
  36. export function getUnknownOperatingSystemContextData({
  37. data,
  38. meta,
  39. }: Pick<Props, 'data' | 'meta'>) {
  40. return getUnknownData({
  41. allData: data,
  42. knownKeys: [...operatingSystemKnownDataValues, ...operatingSystemIgnoredDataValues],
  43. meta,
  44. });
  45. }
  46. export function OperatingSystemEventContext({data, event, meta: propsMeta}: Props) {
  47. const meta = propsMeta ?? getContextMeta(event, 'os');
  48. const knownData = getKnownOperatingSystemContextData({data, meta});
  49. const knownStructuredData = getKnownStructuredData(knownData, meta);
  50. const unknownData = getUnknownOperatingSystemContextData({data, meta});
  51. return (
  52. <Fragment>
  53. <ContextBlock data={knownStructuredData} />
  54. <ContextBlock data={unknownData} />
  55. </Fragment>
  56. );
  57. }