import React from 'react'; import { connect } from 'react-redux'; import withPageTitle from 'HOCs/withPageTitle'; import { Loader, Button, Message } from 'UI'; import { updatePassword } from 'Duck/user'; import styles from './updatePassword.module.css'; const ERROR_DOESNT_MATCH = "Passwords doesn't match"; const MIN_LENGTH = 8; const PASSWORD_POLICY = `Password should contain at least ${ MIN_LENGTH } symbols`; const checkDoesntMatch = (newPassword, newPasswordRepeat) => newPasswordRepeat.length > 0 && newPasswordRepeat !== newPassword; @connect( state => ({ errors: state.getIn([ 'user', 'updatePasswordRequest', 'errors' ]), loading: state.getIn([ 'user', 'updatePasswordRequest', 'loading' ]), }), { updatePassword }, ) @withPageTitle("Password Change - OpenReplay") export default class UpdatePassword extends React.Component { state = { oldPassword: '', newPassword: '', newPasswordRepeat: '', }; handleSubmit = (event) => { event.preventDefault(); if (this.isSubmitDisabled()) return; const { oldPassword, newPassword } = this.state; this.props.updatePassword({ oldPassword, newPassword }); } write = ({ target: { value, name } }) => this.setState({ [ name ]: value }) isSubmitDisabled() { const { oldPassword, newPassword, newPasswordRepeat } = this.state; if (newPassword !== newPasswordRepeat || newPassword.length < MIN_LENGTH || oldPassword.length < MIN_LENGTH) return true; return false; } render() { const { errors, loading } = this.props; const { newPassword, newPasswordRepeat } = this.state; const doesntMatch = checkDoesntMatch(newPassword, newPasswordRepeat); return (