aboutsummaryrefslogtreecommitdiff
path: root/src/pages/Profile/Registration.tsx
diff options
context:
space:
mode:
authoreug-vs <eug-vs@keemail.me>2020-03-21 15:44:40 +0300
committereug-vs <eug-vs@keemail.me>2020-03-21 15:44:40 +0300
commit146947a665dbc1d2960d2062a22a106de0c71062 (patch)
tree11f4f4ccf2331e580e2a6f0df5a7e4279c0d5f5e /src/pages/Profile/Registration.tsx
parent2e9e20414c2ea49d7f40bcff09b89897e13fd2f4 (diff)
downloadchrono-cube-ui-146947a665dbc1d2960d2062a22a106de0c71062.tar.gz
chore: migrate profile page to Typescript :label:
Diffstat (limited to 'src/pages/Profile/Registration.tsx')
-rw-r--r--src/pages/Profile/Registration.tsx85
1 files changed, 85 insertions, 0 deletions
diff --git a/src/pages/Profile/Registration.tsx b/src/pages/Profile/Registration.tsx
new file mode 100644
index 0000000..30e357d
--- /dev/null
+++ b/src/pages/Profile/Registration.tsx
@@ -0,0 +1,85 @@
+import React, {useState} from 'react';
+
+import {
+ TextField,
+ Button,
+ Checkbox,
+ FormControlLabel,
+ Grid,
+} from '@material-ui/core';
+import { User } from '../../types';
+
+import { ContentSection } from 'react-benzin';
+import { get, post } from '../../requests';
+
+
+interface PropTypes {
+ setUser: (user: User) => void;
+}
+
+const Registration: React.FC<PropTypes> = ({ setUser }) => {
+
+ const [username, setUsername] = useState<string>('');
+ const [isRememberMe, setIsRememberMe] = useState<boolean>(false);
+
+ const handleChange = (event: React.ChangeEvent<HTMLInputElement>): void => {
+ setUsername(event.target.value);
+ };
+
+ const handleCheck = (event: React.ChangeEvent<HTMLInputElement>): void => {
+ setIsRememberMe(event.target.checked);
+ };
+
+ const handleSubmit = () => {
+ if (username !== '') {
+ post('users/', { username })
+ .then(response => {
+ const user = response.data;
+ setUser(user);
+ if (isRememberMe) {
+ localStorage.setItem('userId', user.id);
+ }
+ })
+ .catch(err => {
+ get('users/').then(response => {
+ const user = response.data.filter((user: User) => user.username === username)[0];
+ setUser(user);
+ if (isRememberMe) {
+ localStorage.setItem('userId', user.id);
+ }
+ });
+ });
+ }
+ };
+
+ return (
+ <ContentSection sectionName="Tell us who you are">
+ <p> Choose yourself a username to track your progress and compete with others: </p>
+ <Grid container direction="column">
+ <Grid item>
+ <TextField
+ variant="outlined"
+ color="secondary"
+ label="Username"
+ value={username}
+ onChange={handleChange}
+ />
+ </Grid>
+ <Grid item>
+ <FormControlLabel
+ control={<Checkbox color="secondary" onChange={handleCheck} />}
+ label="Remember me"
+ />
+ </Grid>
+ <Grid item>
+ <Button variant="contained" color="secondary" onClick={handleSubmit}>
+ Submit!
+ </Button>
+ </Grid>
+ </Grid>
+ </ContentSection>
+ );
+};
+
+
+export default Registration;