From 4489d4e946a25b4e6bdfdbd7783e1f8b6eb3ff27 Mon Sep 17 00:00:00 2001 From: Lucas Schoenfelder <les17@inf.ufpr.br> Date: Thu, 10 Dec 2020 11:14:26 -0300 Subject: [PATCH] added error message if user input wrong info --- src/Components/SignUpModal.js | 78 ++++++++++++++++++++++++----------- 1 file changed, 55 insertions(+), 23 deletions(-) diff --git a/src/Components/SignUpModal.js b/src/Components/SignUpModal.js index b4c156af..26f6fc54 100644 --- a/src/Components/SignUpModal.js +++ b/src/Components/SignUpModal.js @@ -15,7 +15,7 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ -import React, {useContext} from 'react'; +import React, {useContext, useState} from 'react'; import { makeStyles } from '@material-ui/styles'; import { Button } from '@material-ui/core'; import Modal from '@material-ui/core/Modal'; @@ -26,6 +26,8 @@ import SignUpContainer from './SignUpContainerFunction.js' import {Store} from '../Store.js' import axios from 'axios' import {apiUrl} from '../env'; +import Snackbar from '@material-ui/core/Snackbar'; +import MuiAlert from '@material-ui/lab/Alert'; const StyledModalSignUp = styled(Modal)` .djXaxP{ @@ -41,11 +43,28 @@ const StyledModalSignUp = styled(Modal)` ` +export function Alert(props) { + return <MuiAlert elevation={6} variant="filled" {...props} />; +} export default function SignUpModal (props) { const { state, dispatch } = useContext(Store) + const [snackbarOpened, handleSnackbar] = useState(false) + + const handleCloseSnackbar = (event, reason) => { + if (reason === 'clickaway') { + return; + } + + handleSnackbar(false); + } + + let [errorMessage, setErrorMessage] = useState("Ocorreu um erro, tente novamente.") + + let [triggerLimpaCamposForm, toggleTriggerLimpaCamposForm] = useState(false) + const handleLoginInfo = (newLogin) => { {/*console.log(state.currentUser)*/} axios.post(`${apiUrl}/auth`, @@ -78,9 +97,14 @@ export default function SignUpModal (props) { localStorage.setItem('@portalmec/username', response.data.data.name) localStorage.setItem('@portalmec/uid', response.data.data.uid) console.log(state.currentUser) + toggleTriggerLimpaCamposForm(true) props.handleClose() }, (error) => { - console.log(':(') + if (error.response.data.errors) { + setErrorMessage(error.response.data.errors.full_messages[0]) + } + {handleSnackbar(true)} + } ) } @@ -88,26 +112,34 @@ export default function SignUpModal (props) { //useEffect(()=>{console.log(state.currentUser)},[state.currentUser]) return ( - <StyledModalSignUp - aria-labelledby="transition-modal-title" - aria-describedby="transition-modal-description" - open={props.open} - - centered="true" - onClose={props.handleClose} - closeAfterTransition - BackdropComponent={Backdrop} - BackdropProps={{ - timeout: 500, - }} - > - <Fade in={props.open}> - <SignUpContainer - handleClose={props.handleClose} - openLogin={props.openLogin} - handleLoginInfo = {handleLoginInfo} - /> - </Fade> - </StyledModalSignUp> + <React.Fragment> + <Snackbar open={snackbarOpened} autoHideDuration={1000} onClose={handleCloseSnackbar} + anchorOrigin = {{ vertical:'top', horizontal:'right' }} + > + <Alert severity="error">{errorMessage}</Alert> + </Snackbar> + <StyledModalSignUp + aria-labelledby="transition-modal-title" + aria-describedby="transition-modal-description" + open={props.open} + + centered="true" + onClose={props.handleClose} + closeAfterTransition + BackdropComponent={Backdrop} + BackdropProps={{ + timeout: 500, + }} + > + <Fade in={props.open}> + <SignUpContainer + handleClose={props.handleClose} + openLogin={props.openLogin} + handleLoginInfo = {handleLoginInfo} + triggerLimpaCamposForm={triggerLimpaCamposForm} + /> + </Fade> + </StyledModalSignUp> + </React.Fragment> ) } -- GitLab