Skip to content

Instantly share code, notes, and snippets.

@adrianmcli
Created November 27, 2017 18:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save adrianmcli/2f42dd98f7d900ec7828930a4a7a1e97 to your computer and use it in GitHub Desktop.
Save adrianmcli/2f42dd98f7d900ec7828930a4a7a1e97 to your computer and use it in GitHub Desktop.
Javascript to get Web3 from the browser environment
import Web3 from 'web3'
const resolveWeb3 = (resolve) => {
let { web3 } = window
const alreadyInjected = typeof web3 !== 'undefined' // i.e. Mist/Metamask
const localProvider = `http://localhost:9545`
if (alreadyInjected) {
console.log(`Injected web3 detected.`)
web3 = new Web3(web3.currentProvider)
} else {
console.log(`No web3 instance injected, using Local web3.`)
const provider = new Web3.providers.HttpProvider(localProvider)
web3 = new Web3(provider)
}
resolve(web3)
}
export default () =>
new Promise((resolve) => {
// Wait for loading completion to avoid race conditions with web3 injection timing.
window.addEventListener(`load`, () => {
resolveWeb3(resolve)
})
// If document has loaded already, try to get Web3 immediately.
if (document.readyState === `complete`) {
resolveWeb3(resolve)
}
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment