import React, { useEffect, useState } from 'react'; import { withRouter, RouteComponentProps } from 'react-router-dom'; import { connect, ConnectedProps } from 'react-redux'; import { Icon } from 'UI'; import SignupForm from './SignupForm'; import HealthModal from 'Components/Header/HealthStatus/HealthModal/HealthModal'; import { getHealthRequest } from 'Components/Header/HealthStatus/getHealth'; import { fetchTenants } from 'Duck/user'; import withPageTitle from 'HOCs/withPageTitle'; import { login } from 'App/routes'; import Copyright from 'Shared/Copyright'; const LOGIN_ROUTE = login(); const BulletItem: React.FC<{ text: string }> = ({ text }) => (
{text}
); const healthStatusCheck_key = '__or__healthStatusCheck_key'; const mapStateToProps = (state: any) => ({ loading: state.getIn(['user', 'loginRequest', 'loading']), authDetails: state.getIn(['user', 'authDetails']) }); const mapDispatchToProps = { fetchTenants }; const connector = connect(mapStateToProps, mapDispatchToProps); type PropsFromRedux = ConnectedProps; type SignupProps = PropsFromRedux & RouteComponentProps; const Signup: React.FC = ({ loading, authDetails, fetchTenants, history }) => { const [healthModalPassed, setHealthModalPassed] = useState(localStorage.getItem(healthStatusCheck_key) === 'true'); const [healthStatusLoading, setHealthStatusLoading] = useState(true); const [healthStatus, setHealthStatus] = useState(null); const getHealth = async () => { setHealthStatusLoading(true); const { healthMap } = await getHealthRequest(true); setHealthStatus(healthMap); setHealthStatusLoading(false); }; useEffect(() => { if (!healthModalPassed) void getHealth(); if (Object.keys(authDetails).length === 0) { fetchTenants(); } }, []); useEffect(() => { if (Object.keys(authDetails).length === 0) { history.push(LOGIN_ROUTE); } }, [authDetails]); if (!healthModalPassed) { return ( null} healthResponse={healthStatus} getHealth={getHealth} isLoading={healthStatusLoading} setPassed={() => setHealthModalPassed(true)} /> ); } return (
); }; export default connector(withRouter(withPageTitle('Signup - OpenReplay')(Signup)));