diff --git a/src/languages/en.js b/src/languages/en.js index ec2d7c206b2b..b39f30072185 100755 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -290,10 +290,8 @@ export default { currentPassword: 'Current password', newPassword: 'New password', newPasswordPrompt: 'New password must be different than your old password, have at least 8 characters,\n1 capital letter, 1 lowercase letter, and 1 number.', - confirmNewPassword: 'Confirm new password', errors: { currentPassword: 'Current password is required', - confirmNewPassword: 'Confirm password is required', newPasswordSameAsOld: 'New password must be different than your old password', newPassword: 'Your password must have at least 8 characters,\n1 capital letter, 1 lowercase letter, and 1 number.', }, @@ -424,9 +422,7 @@ export default { }, setPasswordPage: { enterPassword: 'Enter a password', - confirmNewPassword: 'Confirm the password', setPassword: 'Set password', - passwordsDontMatch: 'Passwords must match', newPasswordPrompt: 'Your password must have at least 8 characters,\n1 capital letter, 1 lowercase letter, and 1 number.', passwordFormTitle: 'Welcome back to the New Expensify! Please set your password.', passwordNotSet: 'We were unable to set your new password correctly.', diff --git a/src/languages/es.js b/src/languages/es.js index 59561df79595..099a59b72f5b 100644 --- a/src/languages/es.js +++ b/src/languages/es.js @@ -290,10 +290,8 @@ export default { currentPassword: 'Contraseña actual', newPassword: 'Nueva contraseña', newPasswordPrompt: 'La nueva contraseña debe ser diferente de la antigua, tener al menos 8 caracteres,\n1 letra mayúscula, 1 letra minúscula y 1 número.', - confirmNewPassword: 'Confirma la nueva contraseña', errors: { currentPassword: 'Contraseña actual es requerido', - confirmNewPassword: 'Confirma la nueva contraseña es requerido', newPasswordSameAsOld: 'La nueva contraseña tiene que ser diferente de la antigua', newPassword: 'Su contraseña debe tener al menos 8 caracteres, \n1 letra mayúscula, 1 letra minúscula y 1 número.', }, @@ -424,9 +422,7 @@ export default { }, setPasswordPage: { enterPassword: 'Escribe una contraseña', - confirmNewPassword: 'Confirma la contraseña', setPassword: 'Configura tu contraseña', - passwordsDontMatch: 'Las contraseñas deben coincidir', newPasswordPrompt: 'La contraseña debe tener al menos 8 caracteres, \n1 letra mayúscula, 1 letra minúscula y 1 número.', passwordFormTitle: '¡Bienvenido de vuelta al Nuevo Expensify! Por favor, elige una contraseña.', passwordNotSet: 'No pudimos establecer to contaseña correctamente.', diff --git a/src/pages/settings/NewPasswordForm.js b/src/pages/settings/NewPasswordForm.js index ec586223f28d..1255e95f9891 100644 --- a/src/pages/settings/NewPasswordForm.js +++ b/src/pages/settings/NewPasswordForm.js @@ -8,7 +8,6 @@ import withLocalize, { import CONST from '../../CONST'; import styles from '../../styles/styles'; import ExpensiTextInput from '../../components/ExpensiTextInput'; -import InlineErrorText from '../../components/InlineErrorText'; const propTypes = { /** String to control the first password box in the form */ @@ -30,16 +29,13 @@ class NewPasswordForm extends React.Component { super(props); this.state = { - confirmNewPassword: '', passwordHintError: false, - shouldShowPasswordConfirmError: false, }; } - componentDidUpdate(prevProps, prevState) { - const eitherPasswordChanged = (this.props.password !== prevProps.password) - || this.state.confirmNewPassword !== prevState.confirmNewPassword; - if (eitherPasswordChanged) { + componentDidUpdate(prevProps) { + const passwordChanged = (this.props.password !== prevProps.password); + if (passwordChanged) { this.props.updateIsFormValid(this.isValidForm()); } } @@ -53,15 +49,6 @@ class NewPasswordForm extends React.Component { } } - onBlurConfirmPassword() { - if (this.state.shouldShowPasswordConfirmError) { - return; - } - if (this.state.confirmNewPassword && !this.doPasswordsMatch()) { - this.setState({shouldShowPasswordConfirmError: true}); - } - } - isValidPassword() { return this.props.password.match(CONST.PASSWORD_COMPLEXITY_REGEX_STRING); } @@ -74,63 +61,34 @@ class NewPasswordForm extends React.Component { return this.state.passwordHintError && this.props.password && !this.isValidPassword(); } - doPasswordsMatch() { - return this.props.password === this.state.confirmNewPassword; - } - isValidForm() { - return this.isValidPassword() && this.doPasswordsMatch(); + return this.isValidPassword(); } - showPasswordMatchError() { - return Boolean( - !this.doPasswordsMatch() - && this.state.shouldShowPasswordConfirmError - && this.state.confirmNewPassword, - ); - } render() { return ( - <> - - this.props.updatePassword(password)} - onBlur={() => this.onBlurNewPassword()} - /> - - {this.props.translate('setPasswordPage.newPasswordPrompt')} - - - - this.setState({confirmNewPassword})} - onSubmitEditing={() => this.props.onSubmitEditing()} - onBlur={() => this.onBlurConfirmPassword()} - /> - {this.showPasswordMatchError() && ( - - {this.props.translate('setPasswordPage.passwordsDontMatch')} - - )} - - + + this.props.updatePassword(password)} + onBlur={() => this.onBlurNewPassword()} + onSubmitEditing={() => this.props.onSubmitEditing()} + /> + + {this.props.translate('setPasswordPage.newPasswordPrompt')} + + ); } } diff --git a/src/pages/settings/PasswordPage.js b/src/pages/settings/PasswordPage.js index 8e9c1d161be1..c3223cc3a971 100755 --- a/src/pages/settings/PasswordPage.js +++ b/src/pages/settings/PasswordPage.js @@ -32,7 +32,7 @@ const propTypes = { /** Success message to display when necessary */ success: PropTypes.string, - /** Whether or not a sign on form is loading (being submitted) */ + /** Whether a sign on form is loading (being submitted) */ loading: PropTypes.bool, }), @@ -49,12 +49,9 @@ class PasswordPage extends Component { this.state = { currentPassword: '', newPassword: '', - confirmNewPassword: '', errors: { currentPassword: false, newPassword: false, - confirmNewPassword: false, - confirmPasswordMatch: false, newPasswordSameAsOld: false, }, }; @@ -67,9 +64,7 @@ class PasswordPage extends Component { this.errorKeysMap = { currentPassword: 'passwordPage.errors.currentPassword', - confirmNewPassword: 'passwordPage.errors.confirmNewPassword', newPasswordSameAsOld: 'passwordPage.errors.newPasswordSameAsOld', - confirmPasswordMatch: 'setPasswordPage.passwordsDontMatch', newPassword: 'passwordPage.errors.newPassword', }; } @@ -125,18 +120,10 @@ class PasswordPage extends Component { errors.newPassword = true; } - if (!this.state.confirmNewPassword) { - errors.confirmNewPassword = true; - } - if (this.state.currentPassword && this.state.newPassword && _.isEqual(this.state.currentPassword, this.state.newPassword)) { errors.newPasswordSameAsOld = true; } - if (ValidationUtils.isValidPassword(this.state.newPassword) && this.state.confirmNewPassword && !_.isEqual(this.state.newPassword, this.state.confirmNewPassword)) { - errors.confirmPasswordMatch = true; - } - this.setState({errors}); return _.size(errors) === 0; } @@ -199,6 +186,7 @@ class PasswordPage extends Component { ? this.getErrorText('newPasswordSameAsOld') : this.getErrorText('newPassword')} onChangeText={text => this.clearErrorAndSetValue('newPassword', text, ['newPasswordSameAsOld'])} + onSubmitEditing={this.submit} /> { @@ -214,19 +202,6 @@ class PasswordPage extends Component { ) } - - this.clearErrorAndSetValue('confirmNewPassword', text, ['confirmPasswordMatch'])} - hasError={this.state.errors.confirmNewPassword || this.state.errors.confirmPasswordMatch} - errorText={this.getErrorText(this.state.errors.confirmNewPassword ? 'confirmNewPassword' : 'confirmPasswordMatch')} - onSubmitEditing={this.validateAndSubmitForm} - /> - {_.every(this.state.errors, error => !error) && !_.isEmpty(this.props.account.error) && ( {this.props.account.error}