170 lines
5.2 KiB
React
Raw Normal View History

2017-12-17 12:27:07 +01:00
import React from 'react'
import { connect } from 'react-redux'
2019-09-16 10:26:02 +02:00
import { withTranslation } from 'react-i18next'
import { Link } from 'react-router-dom'
2017-12-17 12:27:07 +01:00
2019-09-08 15:16:27 +02:00
import LanguageDropdown from './LanguageDropdown'
2018-04-29 17:02:08 +02:00
import { apiUrl } from '../../utils'
2018-01-01 21:54:03 +01:00
class NavBar extends React.PureComponent {
render() {
2019-09-18 13:58:20 +02:00
const { admin, id, isAuthenticated, picture, t, username } = this.props
return (
2019-09-16 10:26:02 +02:00
<header>
<nav className="navbar navbar-expand-lg navbar-light bg-light">
<div className="container">
<span className="navbar-brand">FitTrackee</span>
<button
className="navbar-toggler"
type="button"
data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent"
aria-expanded="false"
aria-label="Toggle navigation"
>
<span className="navbar-toggler-icon" />
</button>
<div
className="collapse navbar-collapse"
id="navbarSupportedContent"
>
<ul className="navbar-nav mr-auto">
<li className="nav-item">
<Link
className="nav-link"
to={{
pathname: '/',
}}
>
2019-09-16 10:26:02 +02:00
{t('common:Dashboard')}
</Link>
</li>
{isAuthenticated && (
<li className="nav-item">
<Link
className="nav-link"
to={{
pathname: '/activities/history',
}}
>
{t('Workouts')}
</Link>
</li>
)}
{isAuthenticated && (
<li className="nav-item">
<Link
className="nav-link"
to={{
pathname: '/activities/statistics',
}}
>
{t('common:Statistics')}
</Link>
</li>
)}
{isAuthenticated && (
<li className="nav-item">
<Link
className="nav-link"
to={{
pathname: '/activities/add',
}}
>
<strong>{t('common:Add workout')}</strong>
</Link>
</li>
)}
2019-09-18 13:58:20 +02:00
{admin && (
<li className="nav-item">
<Link
className="nav-link"
to={{
pathname: '/admin',
}}
>
Admin
</Link>
</li>
)}
2019-09-16 10:26:02 +02:00
</ul>
{/* prettier-ignore */}
<ul
className="navbar-nav flex-row ml-md-auto d-none d-md-flex"
>
{!isAuthenticated && (
<li className="nav-item">
<Link
className="nav-link"
to={{
pathname: '/register',
}}
>
{t('common:Register')}
</Link>
</li>
)}
{!isAuthenticated && (
<li className="nav-item">
<Link
className="nav-link"
to={{
pathname: '/login',
}}
>
{t('common:Login')}
</Link>
</li>
)}
{picture === true && (
<img
alt="Avatar"
src={`${apiUrl}users/${id}/picture?${Date.now()}`}
className="img-fluid App-nav-profile-img"
/>
)}
{isAuthenticated && (
<li className="nav-item">
<Link
className="nav-link"
to={{
pathname: '/profile',
}}
>
{username}
</Link>
</li>
)}
{isAuthenticated && (
<li className="nav-item">
<Link
className="nav-link"
to={{
pathname: '/logout',
}}
>
{t('common:Logout')}
</Link>
</li>
)}
<li><LanguageDropdown /></li>
</ul>
</div>
</div>
</nav>
</header>
)
}
2017-12-17 12:27:07 +01:00
}
2019-09-16 10:26:02 +02:00
export default withTranslation()(
connect(({ user }) => ({
2019-09-18 13:58:20 +02:00
admin: user.admin,
2019-09-16 10:26:02 +02:00
id: user.id,
isAuthenticated: user.isAuthenticated,
picture: user.picture,
username: user.username,
}))(NavBar)
)