2018-08-24 17:03:08 +00:00
|
|
|
import * as React from "react";
|
|
|
|
|
|
|
|
import AppBar from "@material-ui/core/AppBar";
|
|
|
|
import Toolbar from "@material-ui/core/Toolbar";
|
|
|
|
import Typography from "@material-ui/core/Typography";
|
|
|
|
|
2018-08-26 14:23:48 +00:00
|
|
|
import { BrowserRouter, Route, Redirect } from "react-router-dom";
|
|
|
|
|
|
|
|
import AuthRoute from "../security/AuthRoute";
|
|
|
|
|
|
|
|
import Dashboard from "../pages/dashboard";
|
2018-08-24 17:03:08 +00:00
|
|
|
import LoginPage from "../pages/login";
|
2018-08-26 14:23:48 +00:00
|
|
|
import LessonsPage from "../pages/lessons";
|
|
|
|
|
|
|
|
import { ILesson } from "../models/lesson";
|
2018-08-24 17:03:08 +00:00
|
|
|
|
|
|
|
interface IState {
|
|
|
|
loggedIn: boolean;
|
|
|
|
}
|
|
|
|
|
|
|
|
export default class Application extends React.Component<{}, IState> {
|
|
|
|
constructor(props: any) {
|
|
|
|
super(props);
|
|
|
|
|
|
|
|
this.state = {
|
|
|
|
loggedIn: false,
|
|
|
|
};
|
|
|
|
|
|
|
|
this.login = this.login.bind(this);
|
2018-08-26 14:23:48 +00:00
|
|
|
this.isAuthenticated = this.isAuthenticated.bind(this);
|
|
|
|
}
|
|
|
|
|
|
|
|
lessons(): ILesson[] {
|
|
|
|
const lessons = [{
|
|
|
|
name: "Der Bauer auf dem Feld",
|
|
|
|
desc: "So fängt alles an: Du bist ein einfacher Bauer und musst dich die Karriereleiter mit deinen freshen Latein-Skills hinaufarbeiten",
|
|
|
|
level: 1,
|
|
|
|
done: true,
|
|
|
|
}, {
|
|
|
|
name: "???",
|
|
|
|
desc: "Warum schreibe ich überhaupt was?dsd dddddddddddddddddddddd",
|
|
|
|
level: 2,
|
|
|
|
done: false,
|
|
|
|
}];
|
|
|
|
|
|
|
|
return lessons;
|
2018-08-24 17:03:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
login(username: string, password: string): Promise<boolean> {
|
|
|
|
return new Promise((res, rej) => {
|
|
|
|
// TODO
|
2018-08-26 14:23:48 +00:00
|
|
|
this.setState({
|
|
|
|
loggedIn: true
|
|
|
|
});
|
2018-08-24 17:03:08 +00:00
|
|
|
res();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2018-08-26 14:23:48 +00:00
|
|
|
// Checks whether the user is logged in
|
|
|
|
isAuthenticated() {
|
|
|
|
// TODO: Security?
|
|
|
|
return this.state.loggedIn === true;
|
|
|
|
}
|
|
|
|
|
2018-08-24 17:03:08 +00:00
|
|
|
render() {
|
2018-08-26 14:23:48 +00:00
|
|
|
return <BrowserRouter
|
|
|
|
basename="/">
|
|
|
|
<div className="flex">
|
|
|
|
<AppBar position="static">
|
|
|
|
<Toolbar>
|
|
|
|
<Typography className="flex" variant="title" color="inherit">
|
|
|
|
Lateinicus
|
2018-08-24 17:03:08 +00:00
|
|
|
</Typography>
|
2018-08-26 14:23:48 +00:00
|
|
|
</Toolbar>
|
|
|
|
</AppBar>
|
2018-08-24 17:03:08 +00:00
|
|
|
|
2018-08-26 14:23:48 +00:00
|
|
|
<div className="content">
|
|
|
|
<Route exact path="/" component={() => <Redirect to="/login" />} />
|
|
|
|
<Route exact path="/login" component={() => {
|
|
|
|
return <LoginPage loggedIn={this.state.loggedIn} login={this.login} />
|
|
|
|
}} />
|
|
|
|
<AuthRoute isAuth={this.isAuthenticated} path="/dashboard" component={() => <Dashboard lessons={this.lessons()} />} />
|
|
|
|
<AuthRoute isAuth={this.isAuthenticated} path="/lessons" component={() => <LessonsPage lessons={this.lessons()} />} />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</BrowserRouter>;
|
2018-08-24 17:03:08 +00:00
|
|
|
}
|
|
|
|
};
|