diff --git a/app/components/standard/Web3Render.js b/app/components/standard/Web3Render.js new file mode 100644 index 0000000..7aa5e78 --- /dev/null +++ b/app/components/standard/Web3Render.js @@ -0,0 +1,15 @@ +import React, { Fragment } from 'react'; + +const NoWeb3 = () => ( +
+ NO WEB3 Provider detected +
+) + +const Web3Render = ({ ready, children }) => ( + + {ready ? {children} : } + +); + +export default Web3Render; diff --git a/app/dapp.js b/app/dapp.js index b0607ad..71b93a5 100644 --- a/app/dapp.js +++ b/app/dapp.js @@ -7,6 +7,7 @@ import AdminView from './components/AdminView'; import Voting from './components/Voting'; import SNT from 'Embark/contracts/SNT'; import { VotingContext } from './context'; +import Web3Render from './components/standard/Web3Render' window['SNT'] = SNT; import './dapp.css'; @@ -25,13 +26,16 @@ class App extends React.Component { constructor(props) { super(props); } - state = { admin: false, pollOrder: 'NEWEST_ADDED' }; + state = { admin: false, pollOrder: 'NEWEST_ADDED', web3Provider: true }; componentDidMount(){ - __embarkContext.execWhenReady(() => { - this._getPolls(); - this._setAccounts(); - }); + EmbarkJS.onReady((err) => { + if (err) this.setState({ web3Provider: false }); + else { + this._getPolls(); + this._setAccounts(); + } + }) } setAccount(_account){ @@ -80,18 +84,20 @@ class App extends React.Component { } render(){ - const { admin } = this.state; + const { admin, web3Provider } = this.state; const { _getPolls, updatePoll, setPollOrder, appendToPoll } = this; const toggleAdmin = () => this.setState({ admin: true }); const votingContext = { getPolls: _getPolls, toggleAdmin, updatePoll, appendToPoll, setPollOrder, ...this.state }; return ( - - - {admin ? - : - } - - + + + + {admin ? + : + } + + + ); } }