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