useWebVitalsDrawer.tsx 809 B

12345678910111213141516171819202122232425262728293031323334
  1. import {useCallback} from 'react';
  2. import useDrawer from 'sentry/components/globalDrawer';
  3. import {t} from 'sentry/locale';
  4. import type {WebVitals} from '../../browser/webVitals/types';
  5. interface UseWebVitalsDrawerProps {
  6. Component: React.ReactNode;
  7. onClose: () => void;
  8. webVital: WebVitals | null;
  9. }
  10. export function useWebVitalsDrawer({
  11. Component,
  12. webVital,
  13. onClose,
  14. }: UseWebVitalsDrawerProps) {
  15. const {openDrawer, isDrawerOpen} = useDrawer();
  16. const openVitalsDrawer = useCallback(() => {
  17. if (!webVital || isDrawerOpen) {
  18. return;
  19. }
  20. openDrawer(() => Component, {
  21. ariaLabel: t('%s Details', webVital),
  22. onClose,
  23. transitionProps: {stiffness: 1000},
  24. });
  25. }, [openDrawer, isDrawerOpen, onClose, Component, webVital]);
  26. return {openVitalsDrawer};
  27. }