From b13f42e58e79ae934a1caa7ee175f0c84c5ef512 Mon Sep 17 00:00:00 2001 From: Richard Ramos Date: Fri, 14 Sep 2018 10:22:12 -0400 Subject: [PATCH] Returning relayer account on availability --- .../src/strategy/AvailabilityStrategy.js | 1 + .../components/approveandcallgasrelayed.js | 30 ++++++++---- test-dapp/app/components/body-identity.js | 35 ++++++++----- test-dapp/app/components/callgasrelayed.js | 30 ++++++++---- test-dapp/app/components/status-identity.js | 49 +++++++++---------- 5 files changed, 87 insertions(+), 58 deletions(-) diff --git a/gas-relayer/src/strategy/AvailabilityStrategy.js b/gas-relayer/src/strategy/AvailabilityStrategy.js index 3f7e557..eb159e6 100644 --- a/gas-relayer/src/strategy/AvailabilityStrategy.js +++ b/gas-relayer/src/strategy/AvailabilityStrategy.js @@ -23,6 +23,7 @@ class AvailabilityStrategy extends Strategy { success: true, message: { message: "Available", + address: this.config.node.blockchain.account, minPrice: minPrice } }; diff --git a/test-dapp/app/components/approveandcallgasrelayed.js b/test-dapp/app/components/approveandcallgasrelayed.js index ad1a50a..36ecb0e 100644 --- a/test-dapp/app/components/approveandcallgasrelayed.js +++ b/test-dapp/app/components/approveandcallgasrelayed.js @@ -58,6 +58,10 @@ class ApproveAndCallGasRelayed extends Component { } handleChange = name => event => { + if(name == 'relayer'){ + this.props.updateRelayer(event.target.value); + } + this.setState({ [name]: event.target.value }); @@ -117,8 +121,14 @@ class ApproveAndCallGasRelayed extends Component { const {web3, kid} = this.props; let relayer = this.state.relayer; - if(relayer == '' && this.props.relayers.length == 1){ - relayer = this.props.relayers[0]; + + let relayers = []; + for (var key in this.props.relayers) { + if (this.props.relayers.hasOwnProperty(key)) relayers.push(key); + } + + if(relayer == '' && relayers.length == 1){ + relayer = relayers[0]; } this.setState({ @@ -159,6 +169,12 @@ class ApproveAndCallGasRelayed extends Component { render(){ const {classes} = this.props; + + let relayers = []; + for (var key in this.props.relayers) { + if (this.props.relayers.hasOwnProperty(key)) relayers.push(key); + } + return
@@ -332,12 +348,7 @@ class ApproveAndCallGasRelayed extends Component { native: true }} > - { - this.props.relayers.length > 0 ? - this.props.relayers.map((r, i) => ) - : - - } + { relayers.length > 0 ? relayers.map((r, i) => ) : } { + if(netId != 1 && netId != 3){ + this.setState({relayerAddress: config.relayAccount}); + } + }); + web3js.shh.newKeyPair() .then((kid) => { web3js.shh.addSymKey(config.relaySymKey) @@ -57,9 +66,10 @@ class Body extends Component { if(msgObj.message == Messages.available){ // found a relayer console.log("Relayer available: " + msgObj.sig); + let relayers = this.state.relayers; - relayers.push(msgObj.sig); - relayers = relayers.filter((value, index, self) => self.indexOf(value) === index); + relayers[msgObj.sig] = msgObj.address; + this.setState({relayers}); } @@ -83,6 +93,10 @@ class Body extends Component { this.setState({tab}); }; + updateRelayer = (relayer) => { + this.setState({relayerAddress: this.state.relayers[relayer]}); + } + updateNonce = (newNonce) => { this.setState({nonce: newNonce}); } @@ -106,13 +120,8 @@ class Body extends Component { }); } - randomizeAddress = () => { - // TODO: - this.setState({identityAddress: "0xC0F1349e154Be9c2eBcc18088AC65d48Fc9ED0FF"}); - } - render(){ - const {tab, identityAddress, nonce, web3js, message, kid, skid, relayers} = this.state; + const {tab, identityAddress, nonce, web3js, message, kid, skid, relayers, relayerAddress} = this.state; return @@ -120,12 +129,12 @@ class Body extends Component { - {tab === 0 && } - {tab === 1 && } + {tab === 0 && } + {tab === 1 && } {tab === 2 && Item Three} - + ; } diff --git a/test-dapp/app/components/callgasrelayed.js b/test-dapp/app/components/callgasrelayed.js index 70c6475..f93f6a4 100644 --- a/test-dapp/app/components/callgasrelayed.js +++ b/test-dapp/app/components/callgasrelayed.js @@ -62,6 +62,9 @@ class CallGasRelayed extends Component { } handleChange = name => event => { + if(name == 'relayer'){ + this.props.updateRelayer(event.target.value); + } this.setState({ [name]: event.target.value }); @@ -122,8 +125,15 @@ class CallGasRelayed extends Component { const {web3, kid} = this.props; let relayer = this.state.relayer; - if(relayer == '' && this.props.relayers.length == 1){ - relayer = this.props.relayers[0]; + + + let relayers = []; + for (var key in this.props.relayers) { + if (this.props.relayers.hasOwnProperty(key)) relayers.push(key); + } + + if(relayer == '' && relayers.length == 1){ + relayer = relayers[0]; } this.setState({ @@ -161,6 +171,12 @@ class CallGasRelayed extends Component { render(){ const {classes} = this.props; + + let relayers = []; + for (var key in this.props.relayers) { + if (this.props.relayers.hasOwnProperty(key)) relayers.push(key); + } + return
@@ -317,12 +333,7 @@ class CallGasRelayed extends Component { native: true }} > - { - this.props.relayers.length > 0 ? - this.props.relayers.map((r, i) => ) - : - - } + { relayers.length > 0 ? relayers.map((r, i) => ) : } { + + // Default for devenv + web3.eth.net.getId().then(netId => { + this.setState({isDev: netId != 1 && netId != 3}); + }); + web3.eth.subscribe('newBlockHeaders') .on('data', (block) => { this.setState({block: block.number}); @@ -115,12 +118,12 @@ class Status extends Component { }); } - web3.eth.getBalance(this.state.relayerAddress) + web3.eth.getBalance(this.props.relayerAddress) .then(relayerEthBalance => { this.setState({relayerEthBalance}); }); - STT.methods.balanceOf(this.state.relayerAddress) + STT.methods.balanceOf(this.props.relayerAddress) .call() .then(relayerSTTBalance => { this.setState({relayerSTTBalance: web3.utils.fromWei(relayerSTTBalance, 'ether')}); @@ -162,11 +165,6 @@ class Status extends Component { }); } - randomizeAddress = (event) => { - event.preventDefault(); - this.props.randomizeAddress(); - } - sendEther = (event) => { event.preventDefault(); @@ -174,7 +172,7 @@ class Status extends Component { submitState.etherSend = false; this.setState({submitState}); - web3.eth.sendTransaction({from: web3.eth.defaultAccount, to: this.state.relayerAddress, value: web3.utils.toWei('1', "ether")}) + web3.eth.sendTransaction({from: web3.eth.defaultAccount, to: this.props.relayerAddress, value: web3.utils.toWei('1', "ether")}) .then((receipt) => { console.log(receipt); submitState = this.state.submitState; @@ -184,8 +182,8 @@ class Status extends Component { } render(){ - const {classes, identityAddress, nonce} = this.props; - const {identityEthBalance, relayerAddress, relayerEthBalance, identitySTTBalance, relayerSTTBalance, submitState, block} = this.state; + const {classes, identityAddress, nonce, relayerAddress} = this.props; + const {identityEthBalance, relayerEthBalance, identitySTTBalance, relayerSTTBalance, submitState, block, isDev} = this.state; return @@ -199,23 +197,20 @@ class Status extends Component {
{ (submitState.createIdentity || submitState.etherSend || submitState.generateSTT) && } - - Identity - - { - } + { isDev && - } + } @@ -255,10 +250,10 @@ class Status extends Component { Relayer - + } @@ -301,8 +296,8 @@ Status.propTypes = { nonce: PropTypes.string.isRequired, identityCreationFunction: PropTypes.func.isRequired, nonceUpdateFunction: PropTypes.func.isRequired, - randomizeAddress: PropTypes.func.isRequired, - message: PropTypes.string + message: PropTypes.string, + relayerAddress: PropTypes.string }; export default withStyles(styles)(Status);