useMobileVitalsDrawer.tsx 800 B

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