Updated, contract execution in-place
This commit is contained in:
		
							parent
							
								
									bf58aab6a3
								
							
						
					
					
						commit
						b433e7e9a0
					
				| @ -38,6 +38,7 @@ | |||||||
|   border-radius: 0.5em; |   border-radius: 0.5em; | ||||||
|   background: #f80; |   background: #f80; | ||||||
|   color: white; |   color: white; | ||||||
|  |   font-size: 0.75em; | ||||||
|   padding: 0.75em; |   padding: 0.75em; | ||||||
|   text-align: center; |   text-align: center; | ||||||
| } | } | ||||||
|  | |||||||
| @ -71,6 +71,12 @@ class ExecuteContract extends Component { | |||||||
|     this.onFuncChange(null, functions[0]); |     this.onFuncChange(null, functions[0]); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   componentWillReceiveProps (newProps) { | ||||||
|  |     if (newProps.fromAddress !== this.props.fromAddress) { | ||||||
|  |       this.estimateGas(newProps.fromAddress); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   render () { |   render () { | ||||||
|     const { sending } = this.state; |     const { sending } = this.state; | ||||||
| 
 | 
 | ||||||
| @ -164,8 +170,7 @@ class ExecuteContract extends Component { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   onAmountChange = (amount) => { |   onAmountChange = (amount) => { | ||||||
|     this.estimateGas(); |     this.setState({ amount }, this.estimateGas); | ||||||
|     this.setState({ amount }); |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   onFuncChange = (event, func) => { |   onFuncChange = (event, func) => { | ||||||
| @ -188,11 +193,10 @@ class ExecuteContract extends Component { | |||||||
|       } |       } | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     this.estimateGas(); |  | ||||||
|     this.setState({ |     this.setState({ | ||||||
|       func, |       func, | ||||||
|       values |       values | ||||||
|     }); |     }, this.estimateGas); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   onValueChange = (event, index, _value) => { |   onValueChange = (event, index, _value) => { | ||||||
| @ -218,29 +222,34 @@ class ExecuteContract extends Component { | |||||||
|     values[index] = value; |     values[index] = value; | ||||||
|     valuesError[index] = valueError; |     valuesError[index] = valueError; | ||||||
| 
 | 
 | ||||||
|     if (!valueError) { |  | ||||||
|       this.estimateGas(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     this.setState({ |     this.setState({ | ||||||
|       values: [].concat(values), |       values: [].concat(values), | ||||||
|       valuesError: [].concat(valuesError) |       valuesError: [].concat(valuesError) | ||||||
|  |     }, () => { | ||||||
|  |       if (!valueError) { | ||||||
|  |         this.estimateGas(); | ||||||
|  |       } | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   estimateGas = () => { |   estimateGas = (_fromAddress) => { | ||||||
|     const { api } = this.context; |     const { api } = this.context; | ||||||
|     const { fromAddress, gasLimit } = this.props; |     const { fromAddress, gasLimit } = this.props; | ||||||
|     const { amount, func, values } = this.state; |     const { amount, func, values } = this.state; | ||||||
|     const options = { |     const options = { | ||||||
|       gas: MAX_GAS_ESTIMATION, |       gas: MAX_GAS_ESTIMATION, | ||||||
|       from: fromAddress, |       from: _fromAddress || fromAddress, | ||||||
|       value: api.util.toWei(amount || 0) |       value: api.util.toWei(amount || 0) | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  |     if (!func) { | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     func |     func | ||||||
|       .estimateGas(options, values) |       .estimateGas(options, values) | ||||||
|       .then((gasEst) => { |       .then((gasEst) => { | ||||||
|  |         console.log(gasEst.toFormat(0)); | ||||||
|         const gas = gasEst.mul(1.2); |         const gas = gasEst.mul(1.2); | ||||||
|         let gasLimitError = null; |         let gasLimitError = null; | ||||||
| 
 | 
 | ||||||
| @ -304,7 +313,7 @@ class ExecuteContract extends Component { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function mapStateToProps (state) { | function mapStateToProps (state) { | ||||||
|   const { gasLimit } = state.status; |   const { gasLimit } = state.nodeStatus; | ||||||
| 
 | 
 | ||||||
|   return { gasLimit }; |   return { gasLimit }; | ||||||
| } | } | ||||||
|  | |||||||
| @ -20,8 +20,8 @@ const ERRORS = { | |||||||
|   invalidAmount: 'the supplied amount should be a valid positive number', |   invalidAmount: 'the supplied amount should be a valid positive number', | ||||||
|   invalidDecimals: 'the supplied amount exceeds the allowed decimals', |   invalidDecimals: 'the supplied amount exceeds the allowed decimals', | ||||||
|   largeAmount: 'the transaction total is higher than the available balance', |   largeAmount: 'the transaction total is higher than the available balance', | ||||||
|   gasException: 'the transaction indicates a thrown exception', |   gasException: 'the transaction will throw an exception with the current values', | ||||||
|   gasBlockLimit: 'the transaction will exceed the block gas limit' |   gasBlockLimit: 'the transaction execution will exceed the block gas limit' | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export default ERRORS; | export default ERRORS; | ||||||
|  | |||||||
| @ -157,6 +157,7 @@ | |||||||
|   border-radius: 0.5em; |   border-radius: 0.5em; | ||||||
|   background: #f80; |   background: #f80; | ||||||
|   color: white; |   color: white; | ||||||
|  |   font-size: 0.75em; | ||||||
|   padding: 0.75em; |   padding: 0.75em; | ||||||
|   text-align: center; |   text-align: center; | ||||||
| } | } | ||||||
|  | |||||||
| @ -681,7 +681,7 @@ class Transfer extends Component { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function mapStateToProps (state) { | function mapStateToProps (state) { | ||||||
|   const { gasLimit } = state.status; |   const { gasLimit } = state.nodeStatus; | ||||||
| 
 | 
 | ||||||
|   return { gasLimit }; |   return { gasLimit }; | ||||||
| } | } | ||||||
|  | |||||||
| @ -19,7 +19,7 @@ const DEFAULT_GASPRICE = '20000000000'; | |||||||
| 
 | 
 | ||||||
| const MAX_GAS_ESTIMATION = '50000000'; | const MAX_GAS_ESTIMATION = '50000000'; | ||||||
| 
 | 
 | ||||||
| export default { | export { | ||||||
|   DEFAULT_GAS, |   DEFAULT_GAS, | ||||||
|   DEFAULT_GASPRICE, |   DEFAULT_GASPRICE, | ||||||
|   MAX_GAS_ESTIMATION |   MAX_GAS_ESTIMATION | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user