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}