diff options
| author | Wes Bos <wesbos@gmail.com> | 2018-03-20 14:13:18 -0400 |
|---|---|---|
| committer | Wes Bos <wesbos@gmail.com> | 2018-03-20 14:13:18 -0400 |
| commit | 217cfed064989816fbffcb1e285134c8e03ef5c7 (patch) | |
| tree | 0e9a3e43641ad839f5c141c32a3375d7d305022c /frontend/components/ResetRequest.js | |
| parent | 43890f9940326702dac1769eb0ded8651db6bad6 (diff) | |
tests
Diffstat (limited to 'frontend/components/ResetRequest.js')
| -rw-r--r-- | frontend/components/ResetRequest.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/frontend/components/ResetRequest.js b/frontend/components/ResetRequest.js new file mode 100644 index 0000000..0910e5f --- /dev/null +++ b/frontend/components/ResetRequest.js @@ -0,0 +1,52 @@ +import React, { Component } from 'react'; +import { graphql, compose } from 'react-apollo'; +import PropTypes from 'prop-types'; +import { REQUEST_RESET_MUTATION } from '../queries'; +import Form from './styles/Form'; + +class ResetRequest extends Component { + static propTypes = { + requestReset: PropTypes.func.isRequired, + }; + + state = { + email: '', + errors: [], + }; + + requestReset = async e => { + e.preventDefault(); + const res = await this.props.requestReset({ + variables: { + email: this.state.email, + }, + }); + if (res.errors) { + this.setState({ errors: res.errors }); + } + }; + + saveToState = e => { + const { name, value } = e.target; + this.setState({ [name]: value }); + }; + + render() { + return ( + <Form onSubmit={this.requestReset}> + {this.state.errors ? this.state.errors.map((err, i) => <p key={i}>{err.message}</p>) : null} + <label htmlFor="email"> + Email + <input value={this.state.email} onChange={this.saveToState} name="email" type="text" placeholder="email" /> + </label> + + <button type="submit">Request Reset!</button> + </Form> + ); + } +} + +const requestResetEnhancer = graphql(REQUEST_RESET_MUTATION, { name: 'requestReset' }); + +export default compose(requestResetEnhancer)(ResetRequest); +export { ResetRequest }; |
