import { motion, AnimatePresence } from 'framer-motion'; import { useEffect, useRef, useState } from 'react'; import PropTypes from 'prop-types'; import { clsm } from '../../../utils'; import { createAnimationProps, defaultTransition } from '../../../helpers/animationPropsHelper'; import Spinner from '../../../components/Spinner'; import useCurrentPage from '../../../hooks/useCurrentPage'; const ConnectingOverlay = ({ isLoading }) => { const currentPage = useCurrentPage(); const isStreamManagerPage = currentPage === 'stream_manager'; const [shouldShowConnectingOverlay, setShouldShowConnectingOverlay] = useState(true); // Ensures that we show the loader for at least one full animation cycle const loaderTimeoutId = useRef(); useEffect(() => { if (isLoading) { setShouldShowConnectingOverlay(true); } else { loaderTimeoutId.current = setTimeout(() => { setShouldShowConnectingOverlay(false); }, (defaultTransition.duration / 2) * 1000); } return () => clearTimeout(loaderTimeoutId.current); }, [isLoading]); return ( {shouldShowConnectingOverlay && (
)}
); }; ConnectingOverlay.defaultProps = { isLoading: false }; ConnectingOverlay.propTypes = { isLoading: PropTypes.bool }; export default ConnectingOverlay;