diff options
author | Eugene Sokolov <eug-vs@keemail.me> | 2020-03-21 17:59:48 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-21 17:59:48 +0300 |
commit | e89a7a79622d25561dc80a8489ae1f6022aebd73 (patch) | |
tree | e115938b26ee6019b4c349f52bd98fc34a4575e9 /src/pages/Profile/Registration.tsx | |
parent | fe750a9aadfb451b9537bb3cdd79581ef5120c07 (diff) | |
parent | 7f8ab6802c68c46f988ef012fdc88b09e43a9e54 (diff) | |
download | chrono-cube-ui-e89a7a79622d25561dc80a8489ae1f6022aebd73.tar.gz |
Merge pull request #48 from eug-vs/typescript
Migrate project to Typescript
Diffstat (limited to 'src/pages/Profile/Registration.tsx')
-rw-r--r-- | src/pages/Profile/Registration.tsx | 85 |
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..a5e0f3e --- /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 = (): void => { + 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; |