Created
November 27, 2017 18:39
-
-
Save adrianmcli/2f42dd98f7d900ec7828930a4a7a1e97 to your computer and use it in GitHub Desktop.
Javascript to get Web3 from the browser environment
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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