Add sender balances to contract (exec/deploy)
This commit is contained in:
parent
d9da8a48ff
commit
84116130f6
@ -37,6 +37,7 @@ export default class DetailsStep extends Component {
|
|||||||
onParamsChange: PropTypes.func.isRequired,
|
onParamsChange: PropTypes.func.isRequired,
|
||||||
onInputsChange: PropTypes.func.isRequired,
|
onInputsChange: PropTypes.func.isRequired,
|
||||||
|
|
||||||
|
balances: PropTypes.object,
|
||||||
fromAddress: PropTypes.string,
|
fromAddress: PropTypes.string,
|
||||||
fromAddressError: PropTypes.string,
|
fromAddressError: PropTypes.string,
|
||||||
name: PropTypes.string,
|
name: PropTypes.string,
|
||||||
@ -77,6 +78,7 @@ export default class DetailsStep extends Component {
|
|||||||
render () {
|
render () {
|
||||||
const {
|
const {
|
||||||
accounts,
|
accounts,
|
||||||
|
balances,
|
||||||
readOnly,
|
readOnly,
|
||||||
|
|
||||||
fromAddress, fromAddressError,
|
fromAddress, fromAddressError,
|
||||||
@ -97,6 +99,7 @@ export default class DetailsStep extends Component {
|
|||||||
value={ fromAddress }
|
value={ fromAddress }
|
||||||
error={ fromAddressError }
|
error={ fromAddressError }
|
||||||
accounts={ accounts }
|
accounts={ accounts }
|
||||||
|
balances={ balances }
|
||||||
onChange={ this.onFromAddressChange } />
|
onChange={ this.onFromAddressChange } />
|
||||||
|
|
||||||
<Input
|
<Input
|
||||||
|
@ -15,8 +15,10 @@
|
|||||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import React, { Component, PropTypes } from 'react';
|
import React, { Component, PropTypes } from 'react';
|
||||||
|
import { connect } from 'react-redux';
|
||||||
import ActionDoneAll from 'material-ui/svg-icons/action/done-all';
|
import ActionDoneAll from 'material-ui/svg-icons/action/done-all';
|
||||||
import ContentClear from 'material-ui/svg-icons/content/clear';
|
import ContentClear from 'material-ui/svg-icons/content/clear';
|
||||||
|
import { pick } from 'lodash';
|
||||||
|
|
||||||
import { BusyStep, CompletedStep, CopyToClipboard, Button, IdentityIcon, Modal, TxHash } from '~/ui';
|
import { BusyStep, CompletedStep, CopyToClipboard, Button, IdentityIcon, Modal, TxHash } from '~/ui';
|
||||||
import { ERRORS, validateAbi, validateCode, validateName } from '~/util/validation';
|
import { ERRORS, validateAbi, validateCode, validateName } from '~/util/validation';
|
||||||
@ -36,7 +38,7 @@ const STEPS = {
|
|||||||
COMPLETED: { title: 'completed' }
|
COMPLETED: { title: 'completed' }
|
||||||
};
|
};
|
||||||
|
|
||||||
export default class DeployContract extends Component {
|
class DeployContract extends Component {
|
||||||
static contextTypes = {
|
static contextTypes = {
|
||||||
api: PropTypes.object.isRequired,
|
api: PropTypes.object.isRequired,
|
||||||
store: PropTypes.object.isRequired
|
store: PropTypes.object.isRequired
|
||||||
@ -45,6 +47,7 @@ export default class DeployContract extends Component {
|
|||||||
static propTypes = {
|
static propTypes = {
|
||||||
accounts: PropTypes.object.isRequired,
|
accounts: PropTypes.object.isRequired,
|
||||||
onClose: PropTypes.func.isRequired,
|
onClose: PropTypes.func.isRequired,
|
||||||
|
balances: PropTypes.object,
|
||||||
abi: PropTypes.string,
|
abi: PropTypes.string,
|
||||||
code: PropTypes.string,
|
code: PropTypes.string,
|
||||||
readOnly: PropTypes.bool,
|
readOnly: PropTypes.bool,
|
||||||
@ -192,7 +195,7 @@ export default class DeployContract extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
renderStep () {
|
renderStep () {
|
||||||
const { accounts, readOnly } = this.props;
|
const { accounts, readOnly, balances } = this.props;
|
||||||
const { address, deployError, step, deployState, txhash, rejected } = this.state;
|
const { address, deployError, step, deployState, txhash, rejected } = this.state;
|
||||||
|
|
||||||
if (deployError) {
|
if (deployError) {
|
||||||
@ -216,6 +219,7 @@ export default class DeployContract extends Component {
|
|||||||
<DetailsStep
|
<DetailsStep
|
||||||
{ ...this.state }
|
{ ...this.state }
|
||||||
accounts={ accounts }
|
accounts={ accounts }
|
||||||
|
balances={ balances }
|
||||||
readOnly={ readOnly }
|
readOnly={ readOnly }
|
||||||
onFromAddressChange={ this.onFromAddressChange }
|
onFromAddressChange={ this.onFromAddressChange }
|
||||||
onDescriptionChange={ this.onDescriptionChange }
|
onDescriptionChange={ this.onDescriptionChange }
|
||||||
@ -394,3 +398,17 @@ export default class DeployContract extends Component {
|
|||||||
this.props.onClose();
|
this.props.onClose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function mapStateToProps (initState, initProps) {
|
||||||
|
const fromAddresses = Object.keys(initProps.accounts);
|
||||||
|
|
||||||
|
return (state) => {
|
||||||
|
const balances = pick(state.balances.balances, fromAddresses);
|
||||||
|
return { balances };
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export default connect(
|
||||||
|
mapStateToProps
|
||||||
|
)(DeployContract);
|
||||||
|
|
||||||
|
@ -35,22 +35,24 @@ export default class DetailsStep extends Component {
|
|||||||
amount: PropTypes.string,
|
amount: PropTypes.string,
|
||||||
amountError: PropTypes.string,
|
amountError: PropTypes.string,
|
||||||
onAmountChange: PropTypes.func.isRequired,
|
onAmountChange: PropTypes.func.isRequired,
|
||||||
|
onFromAddressChange: PropTypes.func.isRequired,
|
||||||
|
onValueChange: PropTypes.func.isRequired,
|
||||||
|
values: PropTypes.array.isRequired,
|
||||||
|
valuesError: PropTypes.array.isRequired,
|
||||||
|
|
||||||
|
balances: PropTypes.object,
|
||||||
fromAddress: PropTypes.string,
|
fromAddress: PropTypes.string,
|
||||||
fromAddressError: PropTypes.string,
|
fromAddressError: PropTypes.string,
|
||||||
gasEdit: PropTypes.bool,
|
gasEdit: PropTypes.bool,
|
||||||
onFromAddressChange: PropTypes.func.isRequired,
|
|
||||||
func: PropTypes.object,
|
func: PropTypes.object,
|
||||||
funcError: PropTypes.string,
|
funcError: PropTypes.string,
|
||||||
onFuncChange: PropTypes.func,
|
onFuncChange: PropTypes.func,
|
||||||
onGasEditClick: PropTypes.func,
|
onGasEditClick: PropTypes.func,
|
||||||
values: PropTypes.array.isRequired,
|
warning: PropTypes.string
|
||||||
valuesError: PropTypes.array.isRequired,
|
|
||||||
warning: PropTypes.string,
|
|
||||||
onValueChange: PropTypes.func.isRequired
|
|
||||||
}
|
}
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
const { accounts, amount, amountError, fromAddress, fromAddressError, gasEdit, onGasEditClick, onFromAddressChange, onAmountChange } = this.props;
|
const { accounts, amount, amountError, balances, fromAddress, fromAddressError, gasEdit, onGasEditClick, onFromAddressChange, onAmountChange } = this.props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
@ -61,6 +63,7 @@ export default class DetailsStep extends Component {
|
|||||||
value={ fromAddress }
|
value={ fromAddress }
|
||||||
error={ fromAddressError }
|
error={ fromAddressError }
|
||||||
accounts={ accounts }
|
accounts={ accounts }
|
||||||
|
balances={ balances }
|
||||||
onChange={ onFromAddressChange } />
|
onChange={ onFromAddressChange } />
|
||||||
{ this.renderFunctionSelect() }
|
{ this.renderFunctionSelect() }
|
||||||
{ this.renderParameters() }
|
{ this.renderParameters() }
|
||||||
|
@ -18,6 +18,8 @@ import React, { Component, PropTypes } from 'react';
|
|||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { bindActionCreators } from 'redux';
|
import { bindActionCreators } from 'redux';
|
||||||
import { observer } from 'mobx-react';
|
import { observer } from 'mobx-react';
|
||||||
|
import { pick } from 'lodash';
|
||||||
|
|
||||||
import ActionDoneAll from 'material-ui/svg-icons/action/done-all';
|
import ActionDoneAll from 'material-ui/svg-icons/action/done-all';
|
||||||
import ContentClear from 'material-ui/svg-icons/content/clear';
|
import ContentClear from 'material-ui/svg-icons/content/clear';
|
||||||
import NavigationArrowBack from 'material-ui/svg-icons/navigation/arrow-back';
|
import NavigationArrowBack from 'material-ui/svg-icons/navigation/arrow-back';
|
||||||
@ -57,6 +59,7 @@ class ExecuteContract extends Component {
|
|||||||
isTest: PropTypes.bool,
|
isTest: PropTypes.bool,
|
||||||
fromAddress: PropTypes.string,
|
fromAddress: PropTypes.string,
|
||||||
accounts: PropTypes.object,
|
accounts: PropTypes.object,
|
||||||
|
balances: PropTypes.object,
|
||||||
contract: PropTypes.object,
|
contract: PropTypes.object,
|
||||||
gasLimit: PropTypes.object.isRequired,
|
gasLimit: PropTypes.object.isRequired,
|
||||||
onClose: PropTypes.func.isRequired,
|
onClose: PropTypes.func.isRequired,
|
||||||
@ -362,10 +365,15 @@ class ExecuteContract extends Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function mapStateToProps (state) {
|
function mapStateToProps (initState, initProps) {
|
||||||
const { gasLimit } = state.nodeStatus;
|
const fromAddresses = Object.keys(initProps.accounts);
|
||||||
|
|
||||||
return { gasLimit };
|
return (state) => {
|
||||||
|
const balances = pick(state.balances.balances, fromAddresses);
|
||||||
|
const { gasLimit } = state.nodeStatus;
|
||||||
|
|
||||||
|
return { gasLimit, balances };
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function mapDispatchToProps (dispatch) {
|
function mapDispatchToProps (dispatch) {
|
||||||
|
Loading…
Reference in New Issue
Block a user