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