From f97989967ee0b88a8c64f226a4b28a79eeef5fd2 Mon Sep 17 00:00:00 2001
From: eug-vs <eug-vs@keemail.me>
Date: Mon, 10 Aug 2020 11:19:53 +0300
Subject: refactor: remove "Page" from container names

---
 src/containers/Login/Login.tsx | 103 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 103 insertions(+)
 create mode 100644 src/containers/Login/Login.tsx

(limited to 'src/containers/Login/Login.tsx')

diff --git a/src/containers/Login/Login.tsx b/src/containers/Login/Login.tsx
new file mode 100644
index 0000000..bec0db5
--- /dev/null
+++ b/src/containers/Login/Login.tsx
@@ -0,0 +1,103 @@
+import React, { useState, useRef } from 'react';
+import { useHistory } from 'react-router-dom';
+import { makeStyles } from '@material-ui/core/styles';
+import {
+  TextField,
+  Button,
+  FormControlLabel,
+  Switch
+} from '@material-ui/core';
+import { useAuth } from '../../hooks/useAuth';
+
+const useStyles = makeStyles(theme => ({
+  root: {
+    '& > *': {
+      margin: theme.spacing(1),
+      width: theme.spacing(35)
+    },
+    display: 'flex',
+    flexDirection: 'column',
+    alignItems: 'center',
+    textAlign: 'center'
+  },
+  formHeader: {
+    textAlign: 'center',
+    fontSize: 25
+  },
+  formTransfer: {
+    display: 'flex',
+    justifyContent: 'center'
+  },
+  transferButton: {
+    marginLeft: 10,
+    color: 'green',
+    cursor: 'pointer'
+  }
+}));
+
+const Login: React.FC = () => {
+  const [error, setError] = useState<boolean>(false);
+  const [remember, setRemember] = useState<boolean>(true);
+  const classes = useStyles();
+  const nameRef = useRef<HTMLInputElement>();
+  const passwordRef = useRef<HTMLInputElement>();
+  const { login } = useAuth();
+  const history = useHistory();
+
+  const handleCheck = () => {
+    setRemember(!remember);
+  };
+
+  const handleSubmit = async () => {
+    const name = nameRef.current?.value?.toLowerCase();
+    const password = passwordRef.current?.value;
+    if (name && password) {
+      login(name, password, remember).then(success => {
+        if (success) history.push(`/profile/${name}`);
+        else setError(true);
+      });
+    }
+  };
+
+  const handleRegistration = () => {
+    history.push('/registration');
+  };
+
+  return (
+    <>
+      <div className={classes.formHeader}>Sign In</div>
+      <form className={classes.root} noValidate autoComplete="off">
+        <TextField
+          inputRef={nameRef}
+          error={error}
+          label="Login"
+        />
+        <TextField
+          inputRef={passwordRef}
+          error={error}
+          helperText={error && 'Invalid credentials'}
+          label="Password"
+          type="password"
+        />
+        <FormControlLabel
+          control={<Switch color="primary" onClick={handleCheck} checked={remember} size="small" />}
+          label="Remember me"
+        />
+        <Button variant="contained" onClick={handleSubmit}>submit</Button>
+      </form>
+      <div className={classes.formTransfer}>
+        <div>{'Don\'t have an account?'}</div>
+        <span
+          onClick={handleRegistration}
+          className={classes.transferButton}
+          role="presentation"
+        >
+          Sign up
+        </span>
+      </div>
+    </>
+  );
+};
+
+export default Login;
+
-- 
cgit v1.2.3

