2018-10-02 05:33:12 -07:00
|
|
|
import { constants } from "./constants";
|
|
|
|
|
2017-12-06 23:02:38 -08:00
|
|
|
let errorMsgNoMetamaskAccount = `You haven't chosen any account in MetaMask.
|
2018-02-23 05:13:37 -08:00
|
|
|
Please choose your initial key in MetaMask and reload the page.
|
2017-12-23 10:44:51 -08:00
|
|
|
Check POA Network <a href='https://github.com/poanetwork/wiki' target='blank'>wiki</a> for more info.`;
|
2017-12-06 23:02:38 -08:00
|
|
|
|
|
|
|
function generateElement(msg){
|
|
|
|
let errorNode = document.createElement("div");
|
2018-02-23 05:13:37 -08:00
|
|
|
errorNode.innerHTML = `<div style="line-height: 1.6;">
|
2017-12-06 23:02:38 -08:00
|
|
|
${msg}
|
|
|
|
</div>`;
|
|
|
|
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) {
|
2018-10-02 05:33:12 -07:00
|
|
|
case constants.NETID_SOKOL:
|
2018-10-02 06:35:50 -07:00
|
|
|
netIdName = "Sokol";
|
|
|
|
console.log("This is sokol");
|
2017-12-15 13:56:52 -08:00
|
|
|
break
|
2018-10-02 05:33:12 -07:00
|
|
|
case constants.NETID_DAI_TEST:
|
2018-10-02 06:35:50 -07:00
|
|
|
netIdName = "Dai-Test";
|
|
|
|
console.log("This is Dai-Test");
|
2018-10-01 02:30:46 -07:00
|
|
|
break
|
2018-10-02 05:33:12 -07:00
|
|
|
case constants.NETID_CORE:
|
2018-10-02 06:35:50 -07:00
|
|
|
netIdName = "Core";
|
|
|
|
console.log("This is Core");
|
2017-12-06 23:02:38 -08:00
|
|
|
break
|
2018-10-02 05:33:12 -07:00
|
|
|
case constants.NETID_DAI:
|
2018-10-02 06:35:50 -07:00
|
|
|
netIdName = "Dai";
|
|
|
|
console.log("This is Dai");
|
2018-10-01 02:30:46 -07:00
|
|
|
break
|
2017-12-06 23:02:38 -08:00
|
|
|
default:
|
2018-10-02 06:35:50 -07:00
|
|
|
netIdName = "Unknown";
|
2017-12-15 12:11:12 -08:00
|
|
|
errorMsg = `You aren't connected to POA Network.
|
2018-02-23 05:13:37 -08:00
|
|
|
Please switch on Metamask and refresh the page.
|
2018-01-05 12:14:52 -08:00
|
|
|
Check POA Network <a href='https://github.com/poanetwork/wiki' target='blank'>wiki</a> for more info.
|
2018-10-02 06:35:50 -07:00
|
|
|
<b>Current Network ID</b> is <i>${netId}</i>`;
|
2018-01-05 12:14:52 -08:00
|
|
|
|
2018-10-02 06:35:50 -07:00
|
|
|
console.log("This is an unknown network.", netId);
|
2017-12-06 23:02:38 -08:00
|
|
|
}
|
|
|
|
results = {
|
|
|
|
web3Instance: web3,
|
|
|
|
netIdName,
|
|
|
|
netId,
|
|
|
|
injectedWeb3: true
|
|
|
|
}
|
2017-12-15 19:38:51 -08:00
|
|
|
document.title = `${netIdName} - Dapp Keys Generation`
|
2017-12-06 23:02:38 -08:00
|
|
|
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
|