import { constants } from "./constants"; let errorMsgNoMetamaskAccount = `You haven't chosen any account in MetaMask. Please choose your initial key in MetaMask and reload the page. Check POA Network wiki for more info.`; function generateElement(msg) { let errorNode = document.createElement("div"); errorNode.innerHTML = `
${msg}
`; return errorNode; } let getWeb3 = () => { return new Promise(function(resolve, reject) { // Wait for loading completion to avoid race conditions with web3 injection timing. window.addEventListener("load", function() { var results; var web3 = window.web3; // Checking if Web3 has been injected by the browser (Mist/MetaMask) if (typeof web3 !== "undefined") { // Use Mist/MetaMask's provider. var errorMsg = null; web3 = new window.Web3(web3.currentProvider); web3.version.getNetwork((err, netId) => { let netIdName; switch (netId) { case constants.NETID_SOKOL: netIdName = "Sokol"; console.log("This is sokol"); break; case constants.NETID_DAI_TEST: netIdName = "Dai-Test"; console.log("This is Dai-Test"); break; case constants.NETID_CORE: netIdName = "Core"; console.log("This is Core"); break; case constants.NETID_DAI: netIdName = "Dai"; console.log("This is Dai"); break; default: netIdName = "Unknown"; errorMsg = `You aren't connected to POA Network. Please switch on Metamask and refresh the page. Check POA Network wiki for more info. Current Network ID is ${netId}`; console.log("This is an unknown network.", netId); } results = { web3Instance: web3, netIdName, netId, injectedWeb3: true }; document.title = `${netIdName} - Dapp Keys Generation`; var defaultAccount = web3.eth.defaultAccount || null; if (defaultAccount === null) { reject({ msg: errorMsgNoMetamaskAccount, node: generateElement(errorMsgNoMetamaskAccount) }); } if (errorMsg !== null) { reject({ msg: errorMsg, node: generateElement(errorMsg) }); } resolve(results); }); console.log("Injected web3 detected."); } else { reject({ msg: errorMsgNoMetamaskAccount, node: generateElement(errorMsgNoMetamaskAccount) }); console.error("Metamask not found"); } }); }); }; export default getWeb3;