Files
2022-12-09 08:36:26 -06:00

82 lines
2.0 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import React, { useEffect } from 'react';
import { Redirect, Route, Switch } from 'react-router-dom';
import PropTypes from 'prop-types';
import reduxConnect from '../redux/utils/connect';
import LoadersAdvanced from '../components/common/Loader/Loader';
import i18n from '../i18n';
import { Slide, ToastContainer } from 'react-toastify';
import UnauthenticatedRoute from './UnauthenticatedRoute';
import AuthenticatedRoute from './AuthenticatedRoute';
import usePageTracking from '../components/common/hooks/usePageTracking';
import { getIP, setIP } from '../common/helper';
function AppRoutes(props) {
usePageTracking();
const {
common: { auth, base }
} = props;
const authIsPending = auth.isAuthPending;
useEffect(() => {
const { actions } = props;
actions.handleErrors();
actions.refreshLogin();
if (!getIP()) {
setIP(); // set IP to use when submit HubSpot form
}
//Set active language after load
const activeLang = i18n.language.slice(0, 2);
actions.chooseLanguage(activeLang);
}, []);
return (
<div className="root-layout">
{authIsPending && <LoadersAdvanced />}
{!authIsPending && (
<Switch>
<Route path="/app/:activeTab" component={AuthenticatedRoute} />
<Route path="/" component={UnauthenticatedRoute} />
<Redirect to="/auth/login" />
</Switch>
)}
<ToastContainer
pauseOnHover
closeOnClick={false}
position="top-right"
transition={Slide}
draggable={false}
closeButton={CloseButton}
rtl={base.rtlLang}
/>
</div>
);
}
const CloseButton = ({ closeToast }) => (
<button
className="Toastify__close-button"
type="button"
aria-label="close"
onClick={closeToast}
>
</button>
);
CloseButton.propTypes = {
closeToast: PropTypes.func.isRequired
};
AppRoutes.propTypes = {
common: PropTypes.object.isRequired,
actions: PropTypes.object.isRequired,
children: PropTypes.object
};
export default reduxConnect('common', ['common'])(AppRoutes);