2017-02-20 16:40:01 +01:00
// 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 <http://www.gnu.org/licenses/>.
import { observer } from 'mobx-react' ;
2017-07-17 18:37:33 +02:00
import React , { Component } from 'react' ;
import PropTypes from 'prop-types' ;
2017-02-20 16:40:01 +01:00
import { FormattedMessage } from 'react-intl' ;
import { connect } from 'react-redux' ;
import { bindActionCreators } from 'redux' ;
2017-05-09 12:01:44 +02:00
import { newError } from '@parity/shared/redux/actions' ;
2017-05-12 12:06:16 +02:00
import { ConfirmDialog , Form , Input , VaultCard } from '@parity/ui' ;
2017-02-20 16:40:01 +01:00
import styles from './vaultUnlock.css' ;
@ observer
class VaultUnlock extends Component {
static propTypes = {
newError : PropTypes . func . isRequired ,
vaultStore : PropTypes . object . isRequired
}
render ( ) {
const { isBusyUnlock , isModalUnlockOpen , vault , vaultPassword } = this . props . vaultStore ;
if ( ! isModalUnlockOpen ) {
return null ;
}
return (
< ConfirmDialog
busy = { isBusyUnlock }
disabledConfirm = { isBusyUnlock }
disabledDeny = { isBusyUnlock }
onConfirm = { this . onExecute }
onDeny = { this . onClose }
open
title = {
< FormattedMessage
id = 'vaults.confirmOpen.title'
defaultMessage = 'Open Vault'
/ >
}
>
< div className = { styles . textbox } >
< FormattedMessage
id = 'vaults.confirmOpen.info'
defaultMessage = 'You are about to open a vault. After confirming your password, all accounts associated with this vault will be visible. Closing the vault will remove the accounts from view until the vault is opened again.'
/ >
< / d i v >
< VaultCard . Layout
withBorder
vault = { vault }
/ >
2017-02-24 12:26:30 +01:00
< Form className = { styles . form } >
< Input
autoFocus
hint = {
< FormattedMessage
id = 'vaults.confirmOpen.password.hint'
defaultMessage = 'the password specified when creating the vault'
/ >
}
label = {
< FormattedMessage
id = 'vaults.confirmOpen.password.label'
defaultMessage = 'vault password'
/ >
}
onChange = { this . onEditPassword }
onDefaultAction = { this . onExecute }
type = 'password'
value = { vaultPassword }
/ >
< div className = { styles . passwordHint } >
{ vault . meta . passwordHint }
< / d i v >
< br / >
< / F o r m >
2017-02-20 16:40:01 +01:00
< / C o n f i r m D i a l o g >
) ;
}
onEditPassword = ( event , password ) => {
this . props . vaultStore . setVaultPassword ( password ) ;
}
onClose = ( ) => {
this . props . vaultStore . closeUnlockModal ( ) ;
}
onExecute = ( ) => {
return this . props . vaultStore
. openVault ( )
. catch ( this . props . newError )
. then ( this . onClose ) ;
}
}
function mapDispatchToProps ( dispatch ) {
return bindActionCreators ( {
newError
} , dispatch ) ;
}
export default connect (
null ,
mapDispatchToProps
) ( VaultUnlock ) ;