11import { useState } from "react" ;
2- import { Link } from "react-router-dom" ;
2+ import { Link , useHistory } from "react-router-dom" ;
33import AccountForm from "../AccountForm/accountForm" ;
44import accountForm from "../AccountForm/accountForm.module.css" ;
55import FormField from "../FormField/formField" ;
66import Layout from "../Layout/layout" ;
7+ import { CONFIRMED_STATE } from "../lib/states" ;
78
89export default function Register ( ) {
910 const [ email , setEmail ] = useState ( "" ) ;
@@ -12,44 +13,58 @@ export default function Register() {
1213 const [ firstName , setFirstName ] = useState ( "" ) ;
1314 const [ lastName , setLastName ] = useState ( "" ) ;
1415
16+ const history = useHistory ( ) ;
17+
1518 const handleEmailChange = e => setEmail ( e . target . value ) ;
1619 const handlePasswordChange = e => setPassword ( e . target . value ) ;
1720 const handleConfirmPasswordChange = e => setConfirmPassword ( e . target . value ) ;
1821 const handleFirstNameChange = e => setFirstName ( e . target . value ) ;
1922 const handleLastNameChange = e => setLastName ( e . target . value ) ;
2023
21- const handleRegister = e => {
22- e . preventDefault ( ) ;
23-
24+ const handleRegister = ( e , setConfirmed , setErrorMessage ) => {
2425 fetch ( "https://api.borumtech.com/api/register" , {
2526 method : "POST" ,
2627 headers : {
2728 "content-type" : "application/x-www-form-urlencoded" ,
2829 } ,
2930 body : `email=${ email } &password=${ password } &first_name=${ firstName } &last_name=${ lastName } ` ,
3031 } )
31- . then ( response => response . json ( ) )
32- . catch ( response => {
33- alert ( "You could not be registered at this time" ) ;
34- } )
3532 . then ( response => {
36- if ( response . statusCode >= 200 && response . statusCode < 300 ) {
37- setEmail ( "" ) ;
38- setPassword ( "" ) ;
39- setConfirmPassword ( "" ) ;
40- setFirstName ( "" ) ;
41- setLastName ( "" ) ;
42-
43- sessionStorage . setItem ( "email" , email ) ;
44- sessionStorage . setItem ( "id" , response . data . id ) ;
45- sessionStorage . setItem ( "firstName" , firstName ) ;
46- sessionStorage . setItem ( "lastName" , lastName ) ;
47- sessionStorage . setItem ( "apiKey" , response . data . api_key ) ;
33+ if ( response . ok ) {
34+ return response . json ( ) ;
4835 } else {
49- alert (
50- "A system error occurred and you could not be registered. We apologize for the inconvenience. "
36+ throw new Error (
37+ "A system error occurred and you could not be logged in at this time. Please try again another time. "
5138 ) ;
5239 }
40+ } )
41+ . then ( response => {
42+ setConfirmed ( CONFIRMED_STATE . SUCCESS ) ;
43+
44+ setEmail ( "" ) ;
45+ setPassword ( "" ) ;
46+ setConfirmPassword ( "" ) ;
47+ setFirstName ( "" ) ;
48+ setLastName ( "" ) ;
49+
50+ localStorage . setItem ( "email" , email ) ;
51+ localStorage . setItem ( "id" , response . data . id ) ;
52+ localStorage . setItem ( "firstName" , firstName ) ;
53+ localStorage . setItem ( "lastName" , lastName ) ;
54+ localStorage . setItem ( "apiKey" , response . data . api_key ) ;
55+
56+ history . push ( "/" ) ;
57+ } )
58+ . catch ( err => {
59+ let { message } = err ;
60+ if ( err . name !== "Error" ) {
61+ message =
62+ "A system error occurred and you could not be logged in at this time. Please try again another time." ;
63+ }
64+
65+ console . error ( err ) ;
66+ setErrorMessage ( message ) ;
67+ setConfirmed ( CONFIRMED_STATE . FAILURE ) ;
5368 } ) ;
5469 } ;
5570
@@ -61,6 +76,8 @@ export default function Register() {
6176 onSubmit : handleRegister ,
6277 method : "post" ,
6378 } }
79+ failedAction = " and you could not be registered"
80+ handleSubmit = { handleRegister }
6481 >
6582 < FormField
6683 required
0 commit comments