diff options
author | Ernst Widerberg <ernstwi@kth.se> | 2021-10-06 16:11:06 +0200 |
---|---|---|
committer | Ernst Widerberg <ernstwi@kth.se> | 2021-10-06 16:11:06 +0200 |
commit | 46b9df3279f51479cfc607cbce8fb8b73bef69f7 (patch) | |
tree | ddca9489ce2779c5c7c23938cb5e666387ace775 /src/components/App.js |
Initial commit
Diffstat (limited to 'src/components/App.js')
-rw-r--r-- | src/components/App.js | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/components/App.js b/src/components/App.js new file mode 100644 index 0000000..3a1d65d --- /dev/null +++ b/src/components/App.js @@ -0,0 +1,83 @@ +import React from "react"; +import { + BrowserRouter as Router, + Switch, + Route, + Link, + useParams +} from "react-router-dom"; +import { Button } from "semantic-ui-react"; + +import Error from "./Error"; +import Header from "./Header"; +import List from "./List"; +import Login from "./Login"; +import ObjectView from "./ObjectView"; + +import "../styles/main.css"; + +class App extends React.Component { + constructor(props) { + super(props); + this.state = { + token: localStorage.getItem("token"), + error: null + }; + + this.clearError = this.clearError.bind(this); + this.clearToken = this.clearToken.bind(this); + this.setError = this.setError.bind(this); + this.setToken = this.setToken.bind(this); + } + + setToken(token) { + this.setState({ token: token }); + localStorage.setItem("token", token); + } + + clearToken() { + this.setState({ token: null }); + localStorage.removeItem("token"); + } + + setError(msg) { + this.setState({ error: msg }); + } + + clearError() { + this.setState({ error: null }); + } + + render() { + if (this.state.error !== null) + return ( + <Error + error={this.state.error} + clearError={this.clearError} + clearToken={this.clearToken} + /> + ); + // if (this.state.token === null) + // return <Login setToken={this.setToken} setError={this.setError} />; + return ( + <Router> + <Header clearToken={this.clearToken} /> + <Switch> + <Route path="/:id"> + <MakeObjectView /> + </Route> + <Route path="/"> + <List setError={this.setError} /> + </Route> + </Switch> + </Router> + ); + } +} + +function MakeObjectView() { + let { id } = useParams(); + return <ObjectView id={id} setError={this.setError} />; +} + +export default App; |