2021-06-17 21:00:56 +00:00
|
|
|
import { BrowserRouter as Router, Switch, Route, Redirect } from 'react-router-dom';
|
|
|
|
import RootPage from './modules/Root';
|
|
|
|
import AboutPage from './modules/About';
|
|
|
|
import AccountPage from './modules/Account';
|
|
|
|
import LoginPage from './modules/Login';
|
2021-07-10 03:01:52 +00:00
|
|
|
import OauthPage from './modules/Oauth';
|
2021-06-17 21:00:56 +00:00
|
|
|
import SignupPage from './modules/Signup';
|
|
|
|
import TodoPage from './modules/TodoList';
|
|
|
|
import { connect } from 'react-redux';
|
|
|
|
import ThemeProvider from './ThemeProvider';
|
|
|
|
import Navbar from './Navbar';
|
2021-06-14 22:25:36 +00:00
|
|
|
|
2021-06-17 21:00:56 +00:00
|
|
|
const App = (props) => {
|
2021-06-14 22:25:36 +00:00
|
|
|
return (
|
2021-06-17 21:00:56 +00:00
|
|
|
<ThemeProvider>
|
|
|
|
<Navbar />
|
|
|
|
<Router>
|
|
|
|
<Switch>
|
|
|
|
<Route path='/about'>
|
|
|
|
<AboutPage />
|
|
|
|
</Route>
|
|
|
|
<Route path='/login'>
|
|
|
|
<LoginPage />
|
|
|
|
</Route>
|
|
|
|
<Route path='/signup'>
|
|
|
|
<SignupPage />
|
|
|
|
</Route>
|
2021-07-10 03:01:52 +00:00
|
|
|
<Route path='/discord'>
|
|
|
|
<OauthPage />
|
|
|
|
</Route>
|
2021-06-17 21:00:56 +00:00
|
|
|
<PRoute path='/todos'>
|
|
|
|
<TodoPage />
|
|
|
|
</PRoute>
|
|
|
|
<PRoute path='/account'>
|
|
|
|
<AccountPage />
|
|
|
|
</PRoute>
|
2021-07-10 03:01:52 +00:00
|
|
|
<PRoute exact path='/'>
|
2021-06-17 21:00:56 +00:00
|
|
|
<RootPage />
|
|
|
|
</PRoute>
|
2021-07-10 03:01:52 +00:00
|
|
|
<Route path='/'>
|
|
|
|
<Redirect
|
|
|
|
to={{
|
|
|
|
pathname: '/'
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
</Route>
|
2021-06-17 21:00:56 +00:00
|
|
|
</Switch>
|
|
|
|
</Router>
|
|
|
|
</ThemeProvider>
|
2021-06-14 22:25:36 +00:00
|
|
|
);
|
2021-06-17 21:00:56 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
const PRoute = connect(
|
|
|
|
(state) => {
|
|
|
|
return {
|
|
|
|
token: state.login.token
|
|
|
|
};
|
|
|
|
},
|
|
|
|
(dispatch, props) => {
|
|
|
|
return {};
|
|
|
|
}
|
|
|
|
)(({ children, ...props }) => {
|
|
|
|
return (
|
|
|
|
<Route
|
|
|
|
{...props}
|
|
|
|
render={({ location }) => {
|
|
|
|
return props.token !== undefined ? (
|
|
|
|
children
|
|
|
|
) : (
|
|
|
|
<Redirect
|
|
|
|
to={{
|
|
|
|
pathname: '/login',
|
|
|
|
state: { from: location }
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
);
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
);
|
|
|
|
});
|
2021-06-14 22:25:36 +00:00
|
|
|
|
|
|
|
export default App;
|