11import React from 'react' ;
22import PropTypes from 'prop-types' ;
33
4+ import { APIConsumer } from '../data/api' ;
5+
46class Login extends React . Component {
57 constructor ( props ) {
68 super ( props ) ;
@@ -25,11 +27,13 @@ class Login extends React.Component {
2527 // this.props.location.history.push(dest);
2628 }
2729
28- handleLogin ( e ) {
30+ handleLogin ( e , api ) {
2931 e . preventDefault ( ) ;
3032
3133 localStorage . setItem ( 'email' , this . state . email ) ;
3234
35+ console . log ( api ) ;
36+
3337 // TODO: actually hit API to login, then call this function
3438 this . props . userLogin ( { email : this . state . email } ) ;
3539
@@ -44,8 +48,8 @@ class Login extends React.Component {
4448 this . setState ( { password : e . target . value } ) ;
4549 }
4650
47- handleRememberMe ( val ) {
48- this . setState ( { rememberMe : val } ) ;
51+ handleRememberMe ( ) {
52+ this . setState ( ( current ) => ( { rememberMe : ! current . rememberMe } ) ) ;
4953 }
5054
5155 render ( ) {
@@ -59,22 +63,28 @@ class Login extends React.Component {
5963 {
6064 ! this . state . isLoggedIn &&
6165 < div className = "row justify-content-center" >
62- < form onSubmit = { this . handleLogin } className = "col-3" >
63- < h3 className = "row" > Login</ h3 >
64- < div className = "row pb-2" >
65- < input type = "email" className = "form-control" placeholder = "Email" value = { this . state . email } onChange = { this . handleEmail } />
66- </ div >
67- < div className = "row pb-4" >
68- < input type = "password" className = "form-control" placeholder = "Password" value = { this . state . password } onChange = { this . handlePassword } />
69- </ div >
70- < div className = "row pb-4 form-check" >
71- < input type = "checkbox" className = "form-check-input" id = "rememberMe" value = { this . state . rememberMe } onChange = { ( ) => this . handleRememberMe ( ! this . state . rememberMe ) } />
72- < label htmlFor = "rememberMe" > Remember Me</ label >
73- </ div >
74- < div className = "row" >
75- < button type = "submit" className = "btn btn-primary" > Login</ button >
76- </ div >
77- </ form >
66+ < APIConsumer >
67+ {
68+ ( api ) => (
69+ < form onSubmit = { ( e ) => this . handleLogin ( e , api ) } className = "col-3" >
70+ < h3 className = "row" > Login</ h3 >
71+ < div className = "row pb-2" >
72+ < input type = "email" className = "form-control" placeholder = "Email" value = { this . state . email } onChange = { this . handleEmail } />
73+ </ div >
74+ < div className = "row pb-4" >
75+ < input type = "password" className = "form-control" placeholder = "Password" value = { this . state . password } onChange = { this . handlePassword } />
76+ </ div >
77+ < div className = "row pb-4 form-check" >
78+ < input type = "checkbox" className = "form-check-input" id = "rememberMe" value = { this . state . rememberMe } onChange = { this . handleRememberMe } />
79+ < label htmlFor = "rememberMe" > Remember Me</ label >
80+ </ div >
81+ < div className = "row" >
82+ < button type = "submit" className = "btn btn-primary" > Login</ button >
83+ </ div >
84+ </ form >
85+ )
86+ }
87+ </ APIConsumer >
7888 </ div >
7989 }
8090 </ div >
@@ -83,7 +93,6 @@ class Login extends React.Component {
8393}
8494
8595Login . propTypes = {
86- api : PropTypes . object . isRequired ,
8796 location : PropTypes . object . isRequired ,
8897 userLogin : PropTypes . func . isRequired
8998} ;
0 commit comments