index.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import {Fragment} from 'react';
  2. import ContextBlock from 'sentry/components/events/contexts/contextBlock';
  3. import type {Event, MemoryInfoContext} from 'sentry/types/event';
  4. import {
  5. getContextMeta,
  6. getKnownData,
  7. getKnownStructuredData,
  8. getUnknownData,
  9. } from '../utils';
  10. import {
  11. getMemoryInfoKnownDataDetails,
  12. memoryInfoKnownDataValues,
  13. } from './getMemoryInfoKnownDataDetails';
  14. type Props = {
  15. data: MemoryInfoContext | null;
  16. event: Event;
  17. meta?: Record<string, any>;
  18. };
  19. export function getKnownMemoryInfoContextData({data, event, meta}: Props) {
  20. if (!data) {
  21. return [];
  22. }
  23. return getKnownData<MemoryInfoContext, (typeof memoryInfoKnownDataValues)[number]>({
  24. data,
  25. meta,
  26. knownDataTypes: memoryInfoKnownDataValues,
  27. onGetKnownDataDetails: v => getMemoryInfoKnownDataDetails({...v, event}),
  28. });
  29. }
  30. export function getUnknownMemoryInfoContextData({
  31. data,
  32. meta,
  33. }: Pick<Props, 'data' | 'meta'>) {
  34. if (!data) {
  35. return [];
  36. }
  37. return getUnknownData({
  38. allData: data,
  39. knownKeys: memoryInfoKnownDataValues,
  40. meta,
  41. });
  42. }
  43. export function MemoryInfoEventContext({data, event, meta: propsMeta}: Props) {
  44. if (!data) {
  45. return null;
  46. }
  47. const meta = propsMeta ?? getContextMeta(event, 'memory_info');
  48. const knownData = getKnownMemoryInfoContextData({data, event, meta});
  49. const knownStructuredData = getKnownStructuredData(knownData, meta);
  50. const unknownData = getUnknownMemoryInfoContextData({data, meta});
  51. return (
  52. <Fragment>
  53. <ContextBlock data={knownStructuredData} />
  54. <ContextBlock data={unknownData} />
  55. </Fragment>
  56. );
  57. }