import * as React from "react"; import Typography from "@material-ui/core/Typography"; import Paper from "@material-ui/core/Paper"; import TextField from "@material-ui/core/TextField"; import Grid from "@material-ui/core/Grid"; import Button from "@material-ui/core/Button"; import LinearProgress from "@material-ui/core/LinearProgress"; import Snackbar from "@material-ui/core/Snackbar"; import { Redirect } from "react-router-dom"; import { IUser } from "../models/user"; interface IProps { login: (username: string, password: string) => Promise; authenticated: boolean; setLoading: (state: boolean) => void; setSnackbar: (state: boolean, msg: string) => void; loading: boolean; snackOpen: boolean; snackMsg: string; } /* * interface IState { * loading: boolean; * * snack: string; // The message * open: boolean; * } */ export default class LoginPage extends React.Component { private usernameRef: any = undefined; private passwordRef: any = undefined; performLogin = () => { this.props.setLoading(true); const username = this.usernameRef.value || ""; const password = this.passwordRef.value || ""; this.props.login(username, password).then((res: IUser) => { // Set the session key window.sessionStorage.setItem("sessionToken", res.sessionToken); }, (err) => { this.props.setLoading(false); this.props.setSnackbar(true, "Failed to log in"); }); } render() { return
Login this.usernameRef = node} /> this.passwordRef = node} /> { this.props.loading ? ( ) : undefined } this.props.setSnackbar(false, "")} message={this.props.snackMsg} autoHideDuration={6000} /> { this.props.authenticated ? ( ) : undefined }
; } };