From 2ec09362c59958a457939724003312024f97393c Mon Sep 17 00:00:00 2001 From: Paul Bouchon Date: Fri, 14 Sep 2018 19:26:03 -0400 Subject: EIP-1102: Transitionary API (#5256) --- app/scripts/inpage.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'app/scripts/inpage.js') diff --git a/app/scripts/inpage.js b/app/scripts/inpage.js index 1a170c617..d9fda1feb 100644 --- a/app/scripts/inpage.js +++ b/app/scripts/inpage.js @@ -22,6 +22,25 @@ var metamaskStream = new LocalMessageDuplexStream({ // compose the inpage provider var inpageProvider = new MetamaskInpageProvider(metamaskStream) +// Augment the provider with its enable method +inpageProvider.enable = function (options = {}) { + return new Promise((resolve, reject) => { + if (options.mockRejection) { + reject('User rejected account access') + } else { + inpageProvider.sendAsync({ method: 'eth_accounts', params: [] }, (error, response) => { + if (error) { + reject(error) + } else { + resolve(response.result) + } + }) + } + }) +} + +window.ethereum = inpageProvider + // // setup web3 // -- cgit v1.2.3 From 9359fc875df061c39807d90c3ca92356960ec4c3 Mon Sep 17 00:00:00 2001 From: Paul Bouchon Date: Wed, 26 Sep 2018 10:48:17 -0400 Subject: EIP-1102: Add deprecation message (#5353) --- app/scripts/inpage.js | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'app/scripts/inpage.js') diff --git a/app/scripts/inpage.js b/app/scripts/inpage.js index d9fda1feb..d924be516 100644 --- a/app/scripts/inpage.js +++ b/app/scripts/inpage.js @@ -9,6 +9,11 @@ restoreContextAfterImports() log.setDefaultLevel(process.env.METAMASK_DEBUG ? 'debug' : 'warn') +console.warn('ATTENTION: In an effort to improve user privacy, MetaMask will ' + +'stop exposing user accounts to dapps by default beginning November 2nd, 2018. ' + +'Dapps should call provider.enable() in order to view and use accounts. Please see ' + +'https://bit.ly/2QQHXvF for complete information and up-to-date example code.') + // // setup plugin communication // @@ -52,6 +57,7 @@ if (typeof window.web3 !== 'undefined') { or MetaMask and another web3 extension. Please remove one and try again.`) } + var web3 = new Web3(inpageProvider) web3.setProvider = function () { log.debug('MetaMask - overrode web3.setProvider') -- cgit v1.2.3 From 45feb43f306f4b21ef007e0c8897cda384c28fc5 Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 8 Oct 2018 16:54:13 -0400 Subject: workaround - fix for drizzle --- app/scripts/inpage.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'app/scripts/inpage.js') diff --git a/app/scripts/inpage.js b/app/scripts/inpage.js index d924be516..431702d63 100644 --- a/app/scripts/inpage.js +++ b/app/scripts/inpage.js @@ -5,6 +5,7 @@ const log = require('loglevel') const LocalMessageDuplexStream = require('post-message-stream') const setupDappAutoReload = require('./lib/auto-reload.js') const MetamaskInpageProvider = require('metamask-inpage-provider') + restoreContextAfterImports() log.setDefaultLevel(process.env.METAMASK_DEBUG ? 'debug' : 'warn') @@ -44,7 +45,15 @@ inpageProvider.enable = function (options = {}) { }) } -window.ethereum = inpageProvider +// Work around for web3@1.0 deleting the bound `sendAsync` but not the unbound +// `sendAsync` method on the prototype, causing `this` reference issues with drizzle +const proxiedInpageProvider = new Proxy(inpageProvider, { + // straight up lie that we deleted the property so that it doesnt + // throw an error in strict mode + deleteProperty: () => true, +}) + +window.ethereum = proxiedInpageProvider // // setup web3 @@ -58,7 +67,7 @@ if (typeof window.web3 !== 'undefined') { and try again.`) } -var web3 = new Web3(inpageProvider) +var web3 = new Web3(proxiedInpageProvider) web3.setProvider = function () { log.debug('MetaMask - overrode web3.setProvider') } -- cgit v1.2.3