1
0
mirror of https://github.com/oceanprotocol/commons.git synced 2023-03-15 18:03:00 +01:00

web3/ocean/account timing tweaks

This commit is contained in:
Matthias Kretschmann 2019-04-15 13:13:02 +02:00
parent adab473f4e
commit 6ed3cb7842
Signed by: m
GPG Key ID: 606EEEF3C479A91F
4 changed files with 42 additions and 40 deletions

View File

@ -12,8 +12,8 @@ import styles from './App.module.scss'
export default class App extends Component { export default class App extends Component {
public render() { public render() {
return ( return (
<div className={styles.app}> <UserProvider>
<UserProvider> <div className={styles.app}>
<Router> <Router>
<> <>
<Header /> <Header />
@ -37,8 +37,8 @@ export default class App extends Component {
<Footer /> <Footer />
</> </>
</Router> </Router>
</UserProvider> </div>
</div> </UserProvider>
) )
} }
} }

View File

@ -98,30 +98,37 @@ export default class UserProvider extends Component<{}, UserProviderState> {
this.initNetworkPoll() this.initNetworkPoll()
} }
private getWeb3 = async () => {
// Modern dapp browsers
if (window.ethereum) {
window.web3 = new Web3(window.ethereum)
return window.web3
}
// Legacy dapp browsers
else if (window.web3) {
window.web3 = new Web3(window.web3.currentProvider)
return window.web3
}
// Non-dapp browsers
else {
return null
}
}
private bootstrap = async () => { private bootstrap = async () => {
try { try {
// //
// Start with Web3 detection only // Start with Web3 detection only
// //
this.setState({ message: 'Setting up Web3...' }) this.setState({ message: 'Setting up Web3...' })
let web3 = await this.getWeb3()
// Modern dapp browsers web3
if (window.ethereum) { ? this.setState({ isWeb3: true })
window.web3 = new Web3(window.ethereum) : this.setState({ isWeb3: false })
this.setState({ isWeb3: true })
}
// Legacy dapp browsers
else if (window.web3) {
window.web3 = new Web3(window.web3.currentProvider)
this.setState({ isWeb3: true })
}
// Non-dapp browsers
else {
this.setState({ isWeb3: false })
}
// Modern & legacy dapp browsers // Modern & legacy dapp browsers
if (this.state.isWeb3) { if (web3 && this.state.isWeb3) {
// //
// Detecting network with window.web3 // Detecting network with window.web3
// //
@ -142,7 +149,7 @@ export default class UserProvider extends Component<{}, UserProviderState> {
}) })
if (!isNile) { if (!isNile) {
window.web3 = this.state.web3 web3 = this.state.web3 // eslint-disable-line
} }
// //
@ -150,16 +157,15 @@ export default class UserProvider extends Component<{}, UserProviderState> {
// //
this.setState({ message: 'Connecting to Ocean...' }) this.setState({ message: 'Connecting to Ocean...' })
const { ocean } = await provideOcean(window.web3) const { ocean } = await provideOcean(web3)
this.setState({ ocean }) this.setState({ ocean })
// Set proper network names now that we have Ocean
await this.fetchNetwork()
// Get accounts // Get accounts
await this.fetchAccounts() await this.fetchAccounts()
this.setState({ isLoading: false }) this.setState({ isLoading: false })
// Set proper network names now that we have Ocean
this.fetchNetwork()
} }
// Non-dapp browsers // Non-dapp browsers
else { else {

View File

@ -29,18 +29,14 @@ export default class Details extends Component<DetailsProps, DetailsState> {
public render() { public render() {
const { metadata, ddo } = this.state const { metadata, ddo } = this.state
return ( return metadata.base.name !== '' ? (
<Route <Route title={metadata.base.name}>
title={metadata.base ? metadata.base.name : 'Loading Details'} <AssetDetails metadata={metadata} ddo={ddo} />
>
{metadata && metadata.base.name ? (
<AssetDetails metadata={metadata} ddo={ddo} />
) : (
<div className={stylesApp.loader}>
<Spinner message={'Loading asset...'} />
</div>
)}
</Route> </Route>
) : (
<div className={stylesApp.loader}>
<Spinner message={'Loading asset...'} />
</div>
) )
} }
} }

View File

@ -7,11 +7,11 @@ interface TrackerProps {
location: Location location: Location
} }
ReactGA.initialize(analyticsId, {
testMode: process.env.NODE_ENV === 'test'
})
export default function withTracker(WrappedComponent: any, options: any = {}) { export default function withTracker(WrappedComponent: any, options: any = {}) {
ReactGA.initialize(analyticsId, {
testMode: process.env.NODE_ENV === 'test'
})
const trackPage = (page: string) => { const trackPage = (page: string) => {
options.isWeb3 = window.web3 !== undefined options.isWeb3 = window.web3 !== undefined
ReactGA.set({ ReactGA.set({