MetaPhase-Consulting/State-TalentMAP

View on GitHub
src/Components/ProfilePage/ProfilePage.jsx

Summary

Maintainability
A
0 mins
Test Coverage
F
42%
import { Route, Switch } from 'react-router-dom';
import PropTypes from 'prop-types';
import Settings from 'Components/Settings';
import Dashboard from 'Containers/Dashboard/Dashboard';
import FavoritePositionsContainer from 'Containers/Favorites/Favorites';
import GlossaryEditor from 'Containers/GlossaryEditor';
import BidTracker from 'Containers/BidTracker';
import BidStatistics from 'Containers/BidStatistics';
import SavedSearchesWrapper from 'Components/SavedSearches/SavedSearchesWrapper';
import ProfilePublic from 'Containers/ProfilePublic';
import Administrator from 'Containers/Administrator';
import Ao from 'Containers/Ao';
import Bureau from 'Containers/Bureau';
import Cdo from 'Containers/Cdo';
import Post from 'Containers/Post';
import PanelAdministrator from 'Containers/PanelAdministrator';
import GLOSSARY_EDITOR_PERM from 'Constants/Permissions';
import { USER_PROFILE } from 'Constants/PropTypes';
import Notifications from './Notifications';
import { userHasPermissions } from '../../utilities';
import ProfileMenu from '../ProfileMenu';
import Spinner from '../Spinner/Spinner';
import BiddingTool from '../BiddingFunctionsPage/BiddingTool/BiddingTool';

const ProfilePage = ({ user, isLoading }) => (
  <div className="profile-page">
    <ProfileMenu
      roles={user.permission_groups}
      isGlossaryEditor={userHasPermissions([GLOSSARY_EDITOR_PERM], user.permission_groups)}
    />
    <div className="usa-grid-full profile-content-container">
      {isLoading ?
        <Spinner size="small" type="homepage-positions-results" />
        :
        <Switch>
          <Route path="/profile/dashboard" component={Dashboard} />
          <Route path="/profile/favorites" component={FavoritePositionsContainer} />
          <Route path="/profile/searches" component={SavedSearchesWrapper} />
          <Route path="/profile/settings" component={Settings} />
          <Route
            path="/profile/bidtracker/public/:id/:bid?"
            render={props => <BidTracker {...props} isPublic />}
          />
          <Route path="/profile/bidtracker/:bid?" component={BidTracker} />
          <Route path="/profile/statistics" component={BidStatistics} />
          <Route path="/profile/glossaryeditor" component={GlossaryEditor} />
          <Route path="/profile/public/:id/:viewType?" component={ProfilePublic} />
          <Route path="/profile/notifications" component={Notifications} />
          <Route path="/profile/administrator" component={Administrator} />
          <Route path="/profile/bureau" component={Bureau} />
          <Route path="/profile/ao" component={Ao} />
          <Route path="/profile/cdo" component={Cdo} />
          <Route path="/profile/post" component={Post} />
          <Route path="/profile/panel_admin" component={PanelAdministrator} />
          <Route path="/profile/bidtracker" component={BidTracker} />
          <Route path="/profile/biddingtool/:id" render={() => <BiddingTool />} />
          <Route path="/profile/biddingtool/" render={() => <BiddingTool />} />
        </Switch>
      }
    </div>
  </div>
);

ProfilePage.propTypes = {
  user: USER_PROFILE.isRequired,
  isLoading: PropTypes.bool,
};

ProfilePage.defaultProps = {
  isLoading: false,
};

export default ProfilePage;