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