aboutsummaryrefslogtreecommitdiff
path: root/src/pages/RegistrationPage/RegistrationPage.tsx
diff options
context:
space:
mode:
authoreug-vs <eug-vs@keemail.me>2020-08-07 22:42:50 +0300
committereug-vs <eug-vs@keemail.me>2020-08-07 22:42:50 +0300
commit5ba6455b2aa6c75c336628bda59e70b46e3b1d6b (patch)
tree89c9f5652fc184b750e8d963bea113fe06539e0d /src/pages/RegistrationPage/RegistrationPage.tsx
parent2d6ba7459fff67823b55cfc39342896873962714 (diff)
downloadwhich-ui-5ba6455b2aa6c75c336628bda59e70b46e3b1d6b.tar.gz
refactor: separate Auth pages
Diffstat (limited to 'src/pages/RegistrationPage/RegistrationPage.tsx')
-rw-r--r--src/pages/RegistrationPage/RegistrationPage.tsx75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/pages/RegistrationPage/RegistrationPage.tsx b/src/pages/RegistrationPage/RegistrationPage.tsx
new file mode 100644
index 0000000..e283a0e
--- /dev/null
+++ b/src/pages/RegistrationPage/RegistrationPage.tsx
@@ -0,0 +1,75 @@
+import React, { useState, useRef } from 'react';
+import { makeStyles } from '@material-ui/core/styles';
+import TextField from '@material-ui/core/TextField';
+import Button from '@material-ui/core/Button';
+import { post } from '../../requests';
+import { useAuth } from '../../hooks/useAuth';
+import { useNavigate } from '../../hooks/useNavigate';
+
+
+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
+ }
+}));
+
+const RegistrationPage: React.FC = () => {
+ const [error, setError] = useState<boolean>(false);
+ const classes = useStyles();
+ const usernameRef = useRef<HTMLInputElement>();
+ const emailRef = useRef<HTMLInputElement>();
+ const passwordRef = useRef<HTMLInputElement>();
+ const { login } = useAuth();
+ const { navigate } = useNavigate();
+
+ const onClick = () => {
+ const username = usernameRef.current?.value;
+ const password = passwordRef.current?.value;
+ const email = emailRef.current?.value;
+ if (username && password) {
+ post('/users', { username, password, email })
+ .then(() => login(username, password))
+ .then(() => navigate('profile'));
+ } else setError(true);
+ };
+
+ // TODO: add login redirect
+
+ return (
+ <>
+ <div className={classes.formHeader}>Sign Up</div>
+ <form className={classes.root} noValidate autoComplete="off">
+ <TextField
+ inputRef={usernameRef}
+ label="Username"
+ error={error}
+ helperText={error && 'This field is required!'}
+ required
+ />
+ <TextField inputRef={emailRef} label="Email" />
+ <TextField
+ inputRef={passwordRef}
+ label="Password"
+ type="password"
+ required
+ error={error}
+ helperText={error && 'This field is required!'}
+ />
+ <Button variant="contained" onClick={onClick}>submit</Button>
+ </form>
+ </>
+ );
+};
+
+export default RegistrationPage;