summaryrefslogtreecommitdiff
path: root/src/components/App.js
diff options
context:
space:
mode:
authorErnst Widerberg <ernstwi@kth.se>2021-10-06 16:11:06 +0200
committerErnst Widerberg <ernstwi@kth.se>2021-10-06 16:11:06 +0200
commit46b9df3279f51479cfc607cbce8fb8b73bef69f7 (patch)
treeddca9489ce2779c5c7c23938cb5e666387ace775 /src/components/App.js
Initial commit
Diffstat (limited to 'src/components/App.js')
-rw-r--r--src/components/App.js83
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;