import React from 'react'; import PropTypes from 'prop-types'; import styles from './ChangeEmailContentDialog.css'; import InputField from './InputField'; import { Button } from 'plugin-api/beta/client/components/ui'; import { t } from 'plugin-api/beta/client/services'; import validate from 'coral-framework/helpers/validate'; import errorMsj from 'coral-framework/helpers/error'; const initialState = { showError: false, formData: { confirmPassword: '', }, errors: {}, }; class ChangeEmailContentDialog extends React.Component { state = initialState; clearForm = () => { this.setState(initialState); }; addError = err => { this.setState(({ errors }) => ({ errors: { ...errors, ...err }, })); }; removeError = errKey => { this.setState(state => { const { [errKey]: _, ...errors } = state.errors; return { errors, }; }); }; fieldValidation = (value, type, name) => { if (!value.length) { this.addError({ [name]: t('talk-plugin-local-auth.change_password.required_field'), }); } else if (!validate[type](value)) { this.addError({ [name]: errorMsj[type] }); } else { this.removeError(name); } }; onChange = e => { const { name, value, type, dataset } = e.target; const validationType = dataset.validationType || type; this.setState( state => ({ formData: { ...state.formData, [name]: value, }, }), () => { this.fieldValidation(value, validationType, name); } ); }; hasError = err => { return Object.keys(this.state.errors).indexOf(err) !== -1; }; getError = errorKey => { return this.state.errors[errorKey]; }; showError = () => { this.setState({ showError: true, }); }; cancel = () => { this.clearForm(); this.props.closeDialog(); }; confirmChanges = async e => { e.preventDefault(); const { confirmPassword = '' } = this.state.formData; if (this.formHasError()) { this.showError(); return; } await this.props.save(confirmPassword); this.props.next(); }; formHasError = () => this.hasError('confirmPassword'); render() { return (
×

{t('talk-plugin-local-auth.change_email.confirm_email_change')}

{t('talk-plugin-local-auth.change_email.description')}

{t('talk-plugin-local-auth.change_email.old_email')}:{' '} {this.props.email} {t('talk-plugin-local-auth.change_email.new_email')}:{' '} {this.props.formData.newEmail}
); } } ChangeEmailContentDialog.propTypes = { next: PropTypes.func, save: PropTypes.func, formData: PropTypes.object, email: PropTypes.string, closeDialog: PropTypes.func, }; export default ChangeEmailContentDialog;