obs-portal/frontend/src/App.js

118 lines
3.2 KiB
JavaScript
Raw Normal View History

import React from 'react'
import {connect} from 'react-redux'
2021-02-23 21:52:57 +01:00
import {Image, Icon, Button} from 'semantic-ui-react'
2021-02-14 17:18:57 +01:00
import {BrowserRouter as Router, Switch, Route, Link} from 'react-router-dom'
import styles from './App.module.scss'
import {
2021-02-23 21:52:57 +01:00
HomePage,
LoginRedirectPage,
LogoutPage,
NotFoundPage,
2021-02-23 21:52:57 +01:00
SettingsPage,
TrackEditor,
TrackPage,
2021-02-23 21:52:57 +01:00
TracksPage,
UploadPage,
2021-02-20 19:31:18 +01:00
} from 'pages'
import {LoginButton} from 'components'
const App = connect((state) => ({login: state.login}))(function App({login}) {
return (
<Router>
2021-02-17 21:50:18 +01:00
<div className={styles.App}>
<header className={styles.headline}>
<div className={styles.header}>
<div className={styles.pageTitle}>OpenBikeSensor</div>
<nav className={styles.menu}>
<ul>
{login && (
<li>
2021-02-17 21:50:18 +01:00
<Link to="/upload">
<Button compact color="green">
<Icon name="cloud upload" />
Upload
</Button>
</Link>
</li>
2021-02-17 21:50:18 +01:00
)}
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/tracks">Tracks</Link>
2021-02-17 21:50:18 +01:00
</li>
<li>
2021-02-17 23:12:44 +01:00
<a href="https://openbikesensor.org/" target="_blank" rel="noreferrer">
2021-02-17 21:50:18 +01:00
About
</a>
</li>
{login ? (
<>
<li>
2021-02-23 21:52:57 +01:00
<Link to="/settings">
<Image src={login.image} avatar />
</Link>
2021-02-17 21:50:18 +01:00
</li>
<li>
<Button as={Link} to="/logout" compact>
Logout
</Button>
</li>
</>
) : (
<>
<li>
2021-02-23 21:52:57 +01:00
<LoginButton as="a" compact />
2021-02-17 21:50:18 +01:00
</li>
</>
)}
</ul>
</nav>
</div>
</header>
<Switch>
<Route path="/" exact>
2021-02-14 17:18:57 +01:00
<HomePage />
</Route>
<Route path="/tracks" exact>
2021-02-14 17:18:57 +01:00
<TracksPage />
</Route>
<Route path="/my/tracks" exact>
<TracksPage privateTracks />
</Route>
2021-02-14 17:18:57 +01:00
<Route path={`/tracks/:slug`} exact>
<TrackPage />
</Route>
<Route path={`/tracks/:slug/edit`} exact>
<TrackEditor />
</Route>
2021-02-20 19:31:18 +01:00
<Route path="/redirect" exact>
<LoginRedirectPage />
</Route>
2021-02-14 17:18:57 +01:00
<Route path="/logout" exact>
<LogoutPage />
</Route>
2021-02-17 21:50:18 +01:00
{login && (
2021-02-23 21:52:57 +01:00
<>
<Route path="/upload" exact>
<UploadPage />
</Route>
<Route path="/settings" exact>
<SettingsPage />
</Route>
</>
2021-02-17 21:50:18 +01:00
)}
<Route>
<NotFoundPage />
</Route>
</Switch>
</div>
</Router>
)
})
export default App