import * as React from 'react'; import OpenInputField from '@/components/forms/OpenInputField'; import { Link } from 'react-router-dom'; import requestPasswordResetEmail from '@/api/auth/requestPasswordResetEmail'; import { connect } from 'react-redux'; import { ReduxState } from '@/redux/types'; import { pushFlashMessage, clearAllFlashMessages } from '@/redux/actions/flash'; import { httpErrorToHuman } from '@/api/http'; type Props = Readonly<{ pushFlashMessage: typeof pushFlashMessage; clearAllFlashMessages: typeof clearAllFlashMessages; }>; type State = Readonly<{ email: string; isSubmitting: boolean; }>; class ForgotPasswordContainer extends React.PureComponent { emailField = React.createRef(); state: State = { email: '', isSubmitting: false, }; handleFieldUpdate = (e: React.ChangeEvent) => this.setState({ email: e.target.value, }); handleSubmission = (e: React.FormEvent) => { e.preventDefault(); this.setState({ isSubmitting: true }, () => { this.props.clearAllFlashMessages(); requestPasswordResetEmail(this.state.email) .then(response => { if (this.emailField.current) { this.emailField.current.value = ''; } this.props.pushFlashMessage({ type: 'success', title: 'Success', message: response, }); }) .catch(error => { console.error(error); this.props.pushFlashMessage({ type: 'error', title: 'Error', message: httpErrorToHuman(error), }); }) .then(() => this.setState({ isSubmitting: false })); }); }; render () { return (

Request Password Reset

Return to Login
); } } const mapDispatchToProps = { pushFlashMessage, clearAllFlashMessages, }; export default connect(null, mapDispatchToProps)(ForgotPasswordContainer);