Skip to content

Commit

Permalink
Add Web3Provider
Browse files Browse the repository at this point in the history
  • Loading branch information
fvictorio committed Mar 9, 2018
1 parent 8155248 commit 329d5d1
Show file tree
Hide file tree
Showing 7 changed files with 95 additions and 34 deletions.
30 changes: 15 additions & 15 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@
"postcss-flexbugs-fixes": "3.0.0",
"postcss-loader": "2.0.6",
"promise": "7.1.1",
"prop-types": "^15.6.1",
"qrcode.react": "^0.7.2",
"query-string": "^5.0.1",
"react": "^15.6.1",
Expand Down
45 changes: 26 additions & 19 deletions src/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import React, { Component } from 'react';
import { inject, observer } from 'mobx-react'
import './assets/stylesheets/application.css';
import { Header, Footer, Home, Manage, stepOne, stepTwo, stepThree, stepFour, Crowdsale, Invest } from './components/index'
import NoWeb3 from './components/Common/NoWeb3'
import IncompleteDeploy from './components/IncompleteDeploy'
import { getQueryVariable } from './utils/utils'
import {
Expand All @@ -12,6 +13,7 @@ import {
import AlertContainer from 'react-alert'
import { TOAST } from './utils/constants'
import { toast } from './utils/utils'
import { Web3Provider } from './react-web3'

@inject('deploymentStore')
@observer
Expand All @@ -25,26 +27,31 @@ class App extends Component {
<div>
<Header/>

<Switch>
{/* The route to /4 must be first for the incomplete deploy redirect to work */}
<Route path="/4" component={stepFour}/>
<Web3Provider
passive={true}
web3UnavailableScreen={NoWeb3}
>
<Switch>
{/* The route to /4 must be first for the incomplete deploy redirect to work */}
<Route path="/4" component={stepFour}/>

{
deploymentStore.deploymentStep !== null ? (
<IncompleteDeploy />
) : (
<Switch>
<Route exact path="/" component={crowdsaleAddr ? Crowdsale : Home}/>
<Route exact path="/crowdsale" component={Crowdsale}/>
<Route exact path="/invest" component={Invest}/>
<Route exact path="/manage/:crowdsaleAddress" component={Manage}/>
<Route path="/1" component={stepOne}/>
<Route path="/2" component={stepTwo}/>
<Route path="/3" component={stepThree}/>
</Switch>
)
}
</Switch>
{
deploymentStore.deploymentStep !== null ? (
<IncompleteDeploy />
) : (
<Switch>
<Route exact path="/" component={crowdsaleAddr ? Crowdsale : Home}/>
<Route exact path="/crowdsale" component={Crowdsale}/>
<Route exact path="/invest" component={Invest}/>
<Route exact path="/manage/:crowdsaleAddress" component={Manage}/>
<Route path="/1" component={stepOne}/>
<Route path="/2" component={stepTwo}/>
<Route path="/3" component={stepThree}/>
</Switch>
)
}
</Switch>
</Web3Provider>

<Footer/>
<AlertContainer ref={a => toast.msg = a} {...TOAST.DEFAULT_OPTIONS} />
Expand Down
20 changes: 20 additions & 0 deletions src/components/Common/NoWeb3.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import React, { Component } from 'react';

export default class NoWeb3 extends Component {
render () {
return (
<div>
<section className="home">
<div className="crowdsale">
<div className="container">
<h1 className="title">MetaMask Not Found</h1>
<p className="description">
You don't have MetaMask installed. Check Token Wizard GitHub for <a href='https://github.com/poanetwork/token-wizard' target='blank'>the instruction</a>.
</p>
</div>
</div>
</section>
</div>
);
}
}
6 changes: 6 additions & 0 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import React from 'react';
import ReactDOM from 'react-dom';
import Web3 from 'web3'
import App from './App';
import registerServiceWorker from './registerServiceWorker';
import { useStrict } from 'mobx';
Expand All @@ -13,6 +14,11 @@ if (!process.env['REACT_APP_REGISTRY_ADDRESS']) {
throw new Error('REACT_APP_REGISTRY_ADDRESS env variable is not present')
}

const devEnvironment = process.env.NODE_ENV === 'development';
if (devEnvironment) {
window.web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));
}

ReactDOM.render(
<Provider { ...stores }>
<App />
Expand Down
24 changes: 24 additions & 0 deletions src/react-web3/Web3Provider.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types'

class Web3Provider extends Component {
render() {
if (window.web3) {
return this.props.children
}

return <this.props.web3UnavailableScreen />
}

getChildContext() {
return {
web3: window.web3
}
}
}

Web3Provider.childContextTypes = {
web3: PropTypes.object
}

export default Web3Provider;
3 changes: 3 additions & 0 deletions src/react-web3/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import Web3Provider from './Web3Provider'

export { Web3Provider }

0 comments on commit 329d5d1

Please sign in to comment.