Files
socialhose-php/frontend/app/routing/AppRoutes.js
T
2022-12-09 08:36:26 -06:00

82 lines
2.0 KiB
JavaScript
Raw 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);