index.tsx 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import {Fragment} from 'react';
  2. import DetailsSplitDivider from 'sentry/components/replays/virtualizedGrid/detailsSplitDivider';
  3. import type {SpanFrame} from 'sentry/utils/replays/types';
  4. import type {useResizableDrawer} from 'sentry/utils/useResizableDrawer';
  5. import useUrlParams from 'sentry/utils/useUrlParams';
  6. import NetworkDetailsContent from 'sentry/views/replays/detail/network/details/content';
  7. import type {TabKey} from 'sentry/views/replays/detail/network/details/tabs';
  8. import NetworkDetailsTabs from 'sentry/views/replays/detail/network/details/tabs';
  9. type Props = {
  10. isCaptureBodySetup: boolean;
  11. isSetup: boolean;
  12. item: null | SpanFrame;
  13. onClose: () => void;
  14. projectId: undefined | string;
  15. startTimestampMs: number;
  16. } & Omit<ReturnType<typeof useResizableDrawer>, 'size'>;
  17. function NetworkDetails({
  18. isHeld,
  19. isSetup,
  20. isCaptureBodySetup,
  21. item,
  22. onClose,
  23. onDoubleClick,
  24. onMouseDown,
  25. projectId,
  26. startTimestampMs,
  27. }: Props) {
  28. const {getParamValue: getDetailTab} = useUrlParams('n_detail_tab', 'details');
  29. if (!item || !projectId) {
  30. return null;
  31. }
  32. const visibleTab = getDetailTab() as TabKey;
  33. return (
  34. <Fragment>
  35. <DetailsSplitDivider
  36. isHeld={isHeld}
  37. onClose={onClose}
  38. onDoubleClick={onDoubleClick}
  39. onMouseDown={onMouseDown}
  40. >
  41. <NetworkDetailsTabs underlined={false} />
  42. </DetailsSplitDivider>
  43. <NetworkDetailsContent
  44. isSetup={isSetup}
  45. isCaptureBodySetup={isCaptureBodySetup}
  46. item={item}
  47. projectId={projectId}
  48. startTimestampMs={startTimestampMs}
  49. visibleTab={visibleTab}
  50. />
  51. </Fragment>
  52. );
  53. }
  54. export default NetworkDetails;