summaryrefslogtreecommitdiffstats
path: root/stepped-solutions/FINISHED/frontend/components/RequestReset.js
diff options
context:
space:
mode:
authorWes Bos <wesbos@gmail.com>2018-09-13 14:18:56 -0400
committerWes Bos <wesbos@gmail.com>2018-09-13 14:18:56 -0400
commit8a5825d52271d712ec7c8348447d433067e13ef2 (patch)
treeba07c218c1b2d4e59c154f2059b69fd858ae65fe /stepped-solutions/FINISHED/frontend/components/RequestReset.js
parentb0d25a9ad3cc1df2fcc11ddb84e4603b94520b09 (diff)
DONE
Diffstat (limited to 'stepped-solutions/FINISHED/frontend/components/RequestReset.js')
-rw-r--r--stepped-solutions/FINISHED/frontend/components/RequestReset.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/stepped-solutions/FINISHED/frontend/components/RequestReset.js b/stepped-solutions/FINISHED/frontend/components/RequestReset.js
new file mode 100644
index 0000000..be21639
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/components/RequestReset.js
@@ -0,0 +1,60 @@
+import React, { Component } from 'react';
+import { Mutation } from 'react-apollo';
+import gql from 'graphql-tag';
+import Form from './styles/Form';
+import Error from './ErrorMessage';
+
+const REQUEST_RESET_MUTATION = gql`
+ mutation REQUEST_RESET_MUTATION($email: String!) {
+ requestReset(email: $email) {
+ message
+ }
+ }
+`;
+
+class RequestReset extends Component {
+ state = {
+ email: '',
+ };
+ saveToState = e => {
+ this.setState({ [e.target.name]: e.target.value });
+ };
+ render() {
+ return (
+ <Mutation mutation={REQUEST_RESET_MUTATION} variables={this.state}>
+ {(reset, { error, loading, called }) => (
+ <Form
+ method="post"
+ data-test="form"
+ onSubmit={async e => {
+ e.preventDefault();
+ await reset();
+ this.setState({ email: '' });
+ }}
+ >
+ <fieldset disabled={loading} aria-busy={loading}>
+ <h2>Request a password reset</h2>
+ <Error error={error} />
+ {!error && !loading && called && <p>Success! Check your email for a reset link!</p>}
+ <label htmlFor="email">
+ Email
+ <input
+ type="email"
+ name="email"
+ placeholder="email"
+ value={this.state.email}
+ onChange={this.saveToState}
+ />
+ </label>
+
+ <button type="submit">Request Reset!</button>
+ </fieldset>
+ </Form>
+ )}
+ </Mutation>
+ );
+ }
+}
+
+export default RequestReset;
+export { REQUEST_RESET_MUTATION };