import React from 'react'; import PropTypes from 'prop-types'; import { withTranslation } from 'react-i18next'; import { toastSuccess, toastError } from '../../util/apiNotification'; import { createSubscribedElement } from '../UnstatedUtils'; import AppContainer from '../../services/AppContainer'; import PersonalContainer from '../../services/PersonalContainer'; class PasswordSettings extends React.Component { constructor(appContainer) { super(); this.appContainer = appContainer; this.state = { retrieveError: null, oldPassword: '', newPassword: '', newPasswordConfirm: '', }; this.onClickSubmit = this.onClickSubmit.bind(this); this.onChangeOldPassword = this.onChangeOldPassword.bind(this); } async onClickSubmit() { const { t, appContainer, personalContainer } = this.props; const { oldPassword, newPassword, newPasswordConfirm } = this.state; try { await appContainer.apiv3Put('/personal-setting/password', { oldPassword, newPassword, newPasswordConfirm, }); this.setState({ oldPassword: '', newPassword: '', newPasswordConfirm: '' }); await personalContainer.retrievePersonalData(); toastSuccess(t('toaster.update_successed', { target: t('personal_settings.update_password') })); } catch (err) { toastError(err); } } onChangeOldPassword(oldPassword) { this.setState({ oldPassword }); } onChangeNewPassword(newPassword) { this.setState({ newPassword }); } onChangeNewPasswordConfirm(newPasswordConfirm) { this.setState({ newPasswordConfirm }); } render() { const { t, personalContainer } = this.props; const { newPassword, newPasswordConfirm } = this.state; const isIncorrectConfirmPassword = (newPassword !== newPasswordConfirm); return ( {(!personalContainer.state.isPasswordSet) &&
{ t('Password is not set') }
}
{(personalContainer.state.isPasswordSet) ?

{t('personal_settings.update_password')}

:

{t('personal_settings.set_new_password')}

}
{(personalContainer.state.isPasswordSet) && (
{ this.onChangeOldPassword(e.target.value) }} />
)}
{ this.onChangeNewPassword(e.target.value) }} />
{ this.onChangeNewPasswordConfirm(e.target.value) }} />

{t('page_register.form_help.password') }

); } } const PasswordSettingsWrapper = (props) => { return createSubscribedElement(PasswordSettings, props, [AppContainer, PersonalContainer]); }; PasswordSettings.propTypes = { t: PropTypes.func.isRequired, // i18next appContainer: PropTypes.instanceOf(AppContainer).isRequired, personalContainer: PropTypes.instanceOf(PersonalContainer).isRequired, }; export default withTranslation()(PasswordSettingsWrapper);