diff --git a/src/Web3Provider.jsx b/src/Web3Provider.jsx index 366ffd1..9ccde11 100644 --- a/src/Web3Provider.jsx +++ b/src/Web3Provider.jsx @@ -102,15 +102,12 @@ class Web3Provider extends React.Component { const ethAccounts = this.getAccounts(); if (isEmpty(ethAccounts)) { - web3 && web3.eth && web3.eth.getAccounts((err, accounts) => { - - if (err) { - this.setState({ - accountsError: err - }); - } else { - this.handleAccounts(accounts); - } + web3 && web3.currentProvider && web3.currentProvider.enable() + .then(accounts => this.handleAccounts(accounts)) + .catch((err) => { + this.setState({ + accountsError: err + }); }); } else { this.handleAccounts(ethAccounts); diff --git a/test/Web3Provider.test.js b/test/Web3Provider.test.js index a4ade65..2256db8 100644 --- a/test/Web3Provider.test.js +++ b/test/Web3Provider.test.js @@ -63,6 +63,7 @@ function runTests(version) { expect(spy.callCount).to.be.above(1); spy.restore(); }); + it('should set context.accounts if available', () => { window.web3.setAccounts(['0x987']); const wrapper = getMount(); diff --git a/test/helpers/web3-v1.mock.js b/test/helpers/web3-v1.mock.js index f7c9e50..870a52c 100644 --- a/test/helpers/web3-v1.mock.js +++ b/test/helpers/web3-v1.mock.js @@ -15,6 +15,11 @@ const web3 = { getId: cb => cb(null, network) } }, + currentProvider: { + enable: () => { + return Promise.resolve(accounts) + }, + }, setNetwork: v => network = v, setAccounts: v => { accounts = v; diff --git a/test/helpers/web3.mock.js b/test/helpers/web3.mock.js index 44481f9..84a8320 100644 --- a/test/helpers/web3.mock.js +++ b/test/helpers/web3.mock.js @@ -11,6 +11,11 @@ module.exports = { version: { getNetwork: () => network }, + currentProvider: { + enable: () => { + return Promise.resolve(accounts) + }, + }, setNetwork: v => network = v, setAccounts: v => accounts = v, restore: () => {