// 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 React, { Component } from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; import { observer } from 'mobx-react'; import { pick } from 'lodash'; import { fromWei } from '@parity/api/util/wei'; import { AddressSelect, Button, Form, TypedInput, Input, InputAddress, Portal } from '@parity/ui'; import { CancelIcon, NextIcon } from '@parity/ui/Icons'; import WalletSettingsStore from './walletSettingsStore.js'; import styles from './walletSettings.css'; @observer class WalletSettings extends Component { static contextTypes = { api: PropTypes.object.isRequired }; static propTypes = { accountsInfo: PropTypes.object.isRequired, wallet: PropTypes.object.isRequired, onClose: PropTypes.func.isRequired, senders: PropTypes.object.isRequired }; store = new WalletSettingsStore(this.context.api, this.props); render () { const { stage, steps } = this.store; return ( step.title) } > { this.renderPage() } ); } renderPage () { const { step } = this.store; switch (step) { case 'CONFIRMATION': const { changes } = this.store; return (
{ this.renderChanges(changes) }
); default: case 'EDIT': const { errors, fromString, wallet } = this.store; const { accountsInfo, senders } = this.props; return (

} onChange={ this.store.onModificationsStringChange } /> } hint={ } value={ wallet.sender } error={ errors.sender } onChange={ this.store.onSenderChange } accounts={ senders } />
{ fromString ? null : (
} value={ wallet.owners.slice() } onChange={ this.store.onOwnersChange } accounts={ accountsInfo } param='address[]' />
} hint={ } error={ errors.require } min={ 1 } onChange={ this.store.onRequireChange } max={ wallet.owners.length } param='uint' value={ wallet.require } /> } hint={ } value={ wallet.dailylimit } error={ errors.dailylimit } onChange={ this.store.onDailylimitChange } param='uint' isEth />
) } ); } } renderChanges (changes) { if (changes.length === 0) { return (

); } const modifications = changes.map((change, index) => (
{ this.renderChange(change) }
)); return (

{ modifications }
); } renderChange (change) { switch (change.type) { case 'dailylimit': return (
Change Daily Limit
from { fromWei(change.initial).toFormat() } to { fromWei(change.value).toFormat() }
); case 'require': return (
{ change.initial.toNumber() }, to: { change.value.toNumber() } } } />
); case 'change_owner': return (
} text value={ change.value.from } /> } text value={ change.value.to } />
); case 'add_owner': return (
); case 'remove_owner': return (
); } } renderDialogActions () { const { step, hasErrors, onNext, send } = this.store; const cancelBtn = (