// Copyright 2015-2017 Parity Technologies (UK) Ltd.
// This file is part of Parity.
// Parity is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity. If not, see .
import { observer } from 'mobx-react';
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { FormattedMessage } from 'react-intl';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import { newError } from '@parity/shared/redux/actions';
import { Button, Checkbox, Form, Input, Portal, VaultCard } from '@parity/ui';
import PasswordStrength from '@parity/ui/Form/PasswordStrength';
import { CheckIcon, CloseIcon } from '@parity/ui/Icons';
import styles from '../VaultCreate/vaultCreate.css';
@observer
class VaultMeta extends Component {
static propTypes = {
newError: PropTypes.func.isRequired,
vaultStore: PropTypes.object.isRequired
};
state = {
passwordEdit: false
};
render () {
const { isBusyMeta, isModalMetaOpen, vault, vaultDescription, vaultPassword, vaultPasswordRepeat, vaultPasswordRepeatError, vaultPasswordOld, vaultPasswordHint } = this.props.vaultStore;
const { passwordEdit } = this.state;
if (!isModalMetaOpen) {
return null;
}
return (
}
key='close'
label={
}
onClick={ this.onClose }
/>,
}
key='vault'
label={
}
onClick={ this.onExecute }
/>
] }
onClose={ this.onClose }
open
title={
}
>
);
//
// }
// label={
//
// }
// onTokensChange={ this.onEditTags }
// tokens={ vaultTags.slice() }
// />
}
onEditDescription = (event, description) => {
this.props.vaultStore.setVaultDescription(description);
}
onEditPasswordCurrent = (event, password) => {
this.props.vaultStore.setVaultPasswordOld(password);
}
onEditPassword = (event, password) => {
this.props.vaultStore.setVaultPassword(password);
}
onEditPasswordHint = (event, hint) => {
this.props.vaultStore.setVaultPasswordHint(hint);
}
onEditPasswordRepeat = (event, password) => {
this.props.vaultStore.setVaultPasswordRepeat(password);
}
onEditTags = (tags) => {
this.props.vaultStore.setVaultTags(tags);
}
onTogglePassword = () => {
this.setState({
passwordEdit: !this.state.passwordEdit
});
}
onExecute = () => {
const { vaultPasswordRepeatError } = this.props.vaultStore;
const { passwordEdit } = this.state;
if (vaultPasswordRepeatError) {
return;
}
return Promise
.all([
passwordEdit
? this.props.vaultStore.editVaultPassword()
: true
])
.then(() => {
return this.props.vaultStore.editVaultMeta();
})
.catch(this.props.newError)
.then(this.onClose);
}
onClose = () => {
this.setState({
passwordEdit: false
});
this.props.vaultStore.closeMetaModal();
}
}
function mapDispatchToProps (dispatch) {
return bindActionCreators({
newError
}, dispatch);
}
export default connect(
null,
mapDispatchToProps
)(VaultMeta);