Add submit handler

This commit is contained in:
jwu-fisker
2021-01-05 17:31:40 -08:00
parent 508c41373e
commit 2e7a241d6d
2 changed files with 46 additions and 6 deletions

View File

@@ -1,12 +1,27 @@
import React from 'react'; import React, { useRef } from 'react';
import { Link as RouterLink } from 'react-router-dom'; import { Link as RouterLink } from 'react-router-dom';
import { Avatar, Button, Container, CssBaseline, Grid, Link, TextField, Typography } from '@material-ui/core'; import { Avatar, Button, Container, CssBaseline, Grid, Link, TextField, Typography } from '@material-ui/core';
import LockOutlinedIcon from '@material-ui/icons/LockOutlined'; import LockOutlinedIcon from '@material-ui/icons/LockOutlined';
import { useUserContext } from '../Contexts/UserContext';
import useStyles from '../Styles'; import useStyles from '../Styles';
export default function SignInForm() { export default function SignInForm() {
const classes = useStyles(); const classes = useStyles();
const emailEl = useRef(null);
const passwordEl = useRef(null);
const { fetching, signIn, setError } = useUserContext();
const onSubmit = async (event) => {
try {
event.preventDefault();
const username = emailEl.current.value;
const password = passwordEl.current.value;
const result = await signIn(username, password);
}
catch (e) {
setError(e.message);
}
};
return ( return (
<Container component="main" maxWidth="xs"> <Container component="main" maxWidth="xs">
<CssBaseline /> <CssBaseline />
@@ -17,7 +32,7 @@ export default function SignInForm() {
<Typography component="h1" variant="h5"> <Typography component="h1" variant="h5">
Sign in Sign in
</Typography> </Typography>
<form className={classes.form} noValidate> <form className={classes.form} noValidate action="{onSubmit}">
<TextField <TextField
variant="outlined" variant="outlined"
margin="normal" margin="normal"
@@ -28,6 +43,7 @@ export default function SignInForm() {
name="email" name="email"
autoComplete="email" autoComplete="email"
autoFocus autoFocus
inputRef={emailEl}
/> />
<TextField <TextField
variant="outlined" variant="outlined"
@@ -39,13 +55,16 @@ export default function SignInForm() {
type="password" type="password"
id="password" id="password"
autoComplete="current-password" autoComplete="current-password"
inputRef={passwordEl}
/> />
<Button <Button
type="submit" type="submit"
disabled={fetching}
fullWidth fullWidth
variant="contained" variant="contained"
color="primary" color="primary"
className={classes.submit} className={classes.submit}
onClick={onSubmit}
> >
Sign In Sign In
</Button> </Button>

View File

@@ -1,12 +1,29 @@
import React from 'react'; import React, { useRef } from 'react';
import { Link as RouterLink } from 'react-router-dom'; import { Link as RouterLink } from 'react-router-dom';
import { Avatar, Button, Container, CssBaseline, Grid, Link, TextField, Typography } from '@material-ui/core'; import { Avatar, Button, Container, CssBaseline, Grid, Link, TextField, Typography } from '@material-ui/core';
import LockOpenOutlinedIcon from '@material-ui/icons/LockOpenOutlined'; import LockOpenOutlinedIcon from '@material-ui/icons/LockOpenOutlined';
import useStyles from '../Styles'; import useStyles from '../Styles';
import { useUserContext } from '../Contexts/UserContext';
export default function SignInForm() { export default function SignInForm() {
const { signUp, fetching, setError } = useUserContext();
const classes = useStyles(); const classes = useStyles();
const emailEl = useRef(null);
const passwordEl = useRef(null);
const confirmEl = useRef(null);
const onSubmit = async (event) => {
try {
event.preventDefault();
const email = emailEl.current.value;
const password = passwordEl.current.value;
const confirm = confirmEl.current.value;
const result = await signUp(email, password, confirm);
}
catch (e) {
setError(e.message);
}
};
return ( return (
<Container component="main" maxWidth="xs"> <Container component="main" maxWidth="xs">
<CssBaseline /> <CssBaseline />
@@ -17,7 +34,7 @@ export default function SignInForm() {
<Typography component="h1" variant="h5"> <Typography component="h1" variant="h5">
Sign up Sign up
</Typography> </Typography>
<form className={classes.form} noValidate> <form className={classes.form} noValidate onSubmit={onSubmit}>
<TextField <TextField
variant="outlined" variant="outlined"
margin="normal" margin="normal"
@@ -28,6 +45,7 @@ export default function SignInForm() {
name="email" name="email"
autoComplete="email" autoComplete="email"
autoFocus autoFocus
inputRef={emailEl}
/> />
<TextField <TextField
variant="outlined" variant="outlined"
@@ -39,6 +57,7 @@ export default function SignInForm() {
type="password" type="password"
id="password" id="password"
autoComplete="new-password" autoComplete="new-password"
inputRef={passwordEl}
/> />
<TextField <TextField
variant="outlined" variant="outlined"
@@ -49,6 +68,7 @@ export default function SignInForm() {
label="Confirm Password" label="Confirm Password"
type="password" type="password"
id="passwordConfirm" id="passwordConfirm"
inputRef={confirmEl}
/> />
<Button <Button
type="submit" type="submit"
@@ -56,6 +76,7 @@ export default function SignInForm() {
variant="contained" variant="contained"
color="primary" color="primary"
className={classes.submit} className={classes.submit}
disabled={fetching}
> >
Sign Up Sign Up
</Button> </Button>