/ embark-ui / src / services / web3.js
web3.js
 1  import Web3 from 'web3';
 2  
 3  export const connect = () => {
 4    return new Promise(async (resolve,reject) => {
 5      if (window.ethereum) {
 6        const web3 = new Web3(window.ethereum);
 7        try {
 8          const accounts = await window.ethereum.enable();
 9          web3.eth.defaultAccount = accounts[0];
10          resolve(web3);
11        } catch (error) {
12          reject(error);
13        }
14      } else if (window.web3) {
15        resolve(new Web3(window.web3.currentProvider));
16      } else {
17        reject(Error('Non-Ethereum browser detected. You should use MetaMask!'));
18      }
19    });
20  }
21  
22  export const estimateGas = ({web3, contract, args}) => {
23    return new web3.eth.Contract(contract.abiDefinition)
24      .deploy({data: `0x${contract.code}`, arguments: args})
25      .estimateGas({from: web3.eth.defaultAccount});
26  }
27  
28  export const deploy = ({web3, contract, args}) => {
29    return new Promise((resolve, reject) => {
30      new web3.eth.Contract(contract.abiDefinition)
31        .deploy({data: `0x${contract.code}`, arguments: args})
32        .send({from: web3.eth.defaultAccount})
33        .on('error', reject)
34        .on('receipt', resolve)
35    });
36  }