1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-10-22 11:22:43 +02:00

Add new inpage provider package (#8442)

* add @metamask/inpage-provider

* fix failing e2e tests

Co-authored-by: Mark Stacey <markjstacey@gmail.com>
This commit is contained in:
Erik Marks 2020-04-28 17:14:51 -07:00 committed by GitHub
parent da373713da
commit c011c0406b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 32 additions and 48 deletions

View File

@ -34,9 +34,9 @@ cleanContextForImports()
import log from 'loglevel'
import LocalMessageDuplexStream from 'post-message-stream'
import MetamaskInpageProvider from 'metamask-inpage-provider'
import { initProvider } from '@metamask/inpage-provider'
// TODO:deprecate:Q1-2020
// TODO:deprecate:2020
import 'web3/dist/web3.min.js'
import setupDappAutoReload from './lib/auto-reload.js'
@ -55,22 +55,12 @@ const metamaskStream = new LocalMessageDuplexStream({
target: 'contentscript',
})
// compose the inpage provider
const inpageProvider = new MetamaskInpageProvider(metamaskStream)
// set a high max listener count to avoid unnecesary warnings
inpageProvider.setMaxListeners(100)
// Work around for web3@1.0 deleting the bound `sendAsync` but not the unbound
// `sendAsync` method on the prototype, causing `this` reference issues
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,
initProvider({
connectionStream: metamaskStream,
})
//
// TODO:deprecate:Q1-2020
// TODO:deprecate:2020
//
// setup web3
@ -83,19 +73,13 @@ if (typeof window.web3 !== 'undefined') {
and try again.`)
}
const web3 = new Web3(proxiedInpageProvider)
const web3 = new Web3(window.ethereum)
web3.setProvider = function () {
log.debug('MetaMask - overrode web3.setProvider')
}
log.debug('MetaMask - injected web3')
proxiedInpageProvider._web3Ref = web3.eth
window.ethereum._web3Ref = web3.eth
// setup dapp auto reload AND proxy web3
setupDappAutoReload(web3, inpageProvider._publicConfigStore)
//
// end deprecate:Q1-2020
//
window.ethereum = proxiedInpageProvider
setupDappAutoReload(web3, window.ethereum._publicConfigStore)

View File

@ -1,5 +1,5 @@
// TODO:deprecate:Q1-2020
// TODO:deprecate:2020
export default setupDappAutoReload
@ -16,7 +16,7 @@ function setupDappAutoReload (web3, observable) {
lastTimeUsed = Date.now()
// show warning once on web3 access
if (!hasBeenWarned && key !== 'currentProvider') {
console.warn(`MetaMask: In Q1 2020, MetaMask will no longer inject web3. For more information, see: https://medium.com/metamask/no-longer-injecting-web3-js-4a899ad6e59e`)
console.warn(`MetaMask: We will soon stop injecting web3. For more information, see: https://medium.com/metamask/no-longer-injecting-web3-js-4a899ad6e59e`)
hasBeenWarned = true
}
// return value normally

View File

@ -76,6 +76,7 @@
"@metamask/eth-ledger-bridge-keyring": "^0.2.6",
"@metamask/eth-token-tracker": "^2.0.0",
"@metamask/etherscan-link": "^1.1.0",
"@metamask/inpage-provider": "^5.0.0",
"@sentry/browser": "^5.11.1",
"@sentry/integrations": "^5.11.1",
"@zxing/library": "^0.8.0",
@ -130,7 +131,6 @@
"lodash": "^4.17.15",
"loglevel": "^1.4.1",
"luxon": "^1.23.0",
"metamask-inpage-provider": "^4.1.2",
"metamask-logo": "^2.1.4",
"multihashes": "^0.4.12",
"nanoid": "^2.1.6",

View File

@ -89,7 +89,7 @@ const initialize = () => {
}
const onClickConnect = async () => {
await window.ethereum.enable()
await window.ethereum.request({ method: 'eth_requestAccounts' })
}
const updateButtons = () => {
@ -324,7 +324,7 @@ const initialize = () => {
getAccountsButton.addEventListener('click', async () => {
try {
const accounts = await ethereum.send({ method: 'eth_accounts' })
const accounts = await ethereum.request({ method: 'eth_accounts' })
getAccountsResults.innerHTML = accounts[0] || 'Not able to get accounts'
} catch (error) {
console.error(error)
@ -340,7 +340,7 @@ const initialize = () => {
ethereum.on('networkChanged', (networkId) => {
networkDiv.innerHTML = networkId
})
ethereum.on('chainIdChanged', (chainId) => {
ethereum.on('chainChanged', (chainId) => {
chainIdDiv.innerHTML = chainId
})
ethereum.on('accountsChanged', (newAccounts) => {

View File

@ -1888,6 +1888,21 @@
resolved "https://registry.yarnpkg.com/@metamask/forwarder/-/forwarder-1.1.0.tgz#13829d8244bbf19ea658c0b20d21a77b67de0bdd"
integrity sha512-Hggj4y0QIjDzKGTXzarhEPIQyFSB2bi2y6YLJNwaT4JmP30UB5Cj6gqoY0M4pj3QT57fzp0BUuGp7F/AUe28tw==
"@metamask/inpage-provider@^5.0.0":
version "5.0.0"
resolved "https://registry.yarnpkg.com/@metamask/inpage-provider/-/inpage-provider-5.0.0.tgz#f3961ceb02821255785fe20b1b676bfd944532d7"
integrity sha512-DjQy/hJPKwEhk+L/XPHfR6bSTWsGGXjHCQ3Q/LgieQX/Kv91yyMu+QUu+tWuVi0qX0dSRmaTnFNCF9FWNV1XgA==
dependencies:
eth-json-rpc-errors "^2.0.2"
fast-deep-equal "^2.0.1"
json-rpc-engine "^5.1.5"
json-rpc-middleware-stream "^2.1.1"
loglevel "^1.6.1"
obj-multiplex "^1.0.0"
obs-store "^4.0.3"
pump "^3.0.0"
safe-event-emitter "^1.0.1"
"@metamask/onboarding@^0.2.0":
version "0.2.0"
resolved "https://registry.yarnpkg.com/@metamask/onboarding/-/onboarding-0.2.0.tgz#9594f6a9a1c779083d71434b9f5e6a973af941f7"
@ -18396,9 +18411,9 @@ loglevel@^1.4.1, loglevel@^1.5.0:
integrity sha1-rgyqVhERSYxboTcj1vtjHSQAOTQ=
loglevel@^1.6.1:
version "1.6.3"
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.3.tgz#77f2eb64be55a404c9fd04ad16d57c1d6d6b1280"
integrity sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA==
version "1.6.8"
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171"
integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==
logplease@^1.2.14, logplease@~1.2.14, logplease@~1.2.15:
version "1.2.15"
@ -18927,21 +18942,6 @@ mersenne-twister@^1.0.1, mersenne-twister@^1.1.0:
resolved "https://registry.yarnpkg.com/mersenne-twister/-/mersenne-twister-1.1.0.tgz#f916618ee43d7179efcf641bec4531eb9670978a"
integrity sha1-+RZhjuQ9cXnvz2Qb7EUx65Zwl4o=
metamask-inpage-provider@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/metamask-inpage-provider/-/metamask-inpage-provider-4.1.2.tgz#8068004d51160dc5869c5aa881074284b8db03da"
integrity sha512-HLCW4DdvubLGntez5yB6kOqvptnpgUcUaRenEwzqN+hHQMnA2+1mNLp5IYks30kvX/fI2ACJgekFwIRDFWA9gQ==
dependencies:
eth-json-rpc-errors "^2.0.2"
fast-deep-equal "^2.0.1"
json-rpc-engine "^5.1.5"
json-rpc-middleware-stream "^2.1.1"
loglevel "^1.6.1"
obj-multiplex "^1.0.0"
obs-store "^4.0.3"
pump "^3.0.0"
safe-event-emitter "^1.0.1"
metamask-logo@^2.1.4:
version "2.1.4"
resolved "https://registry.yarnpkg.com/metamask-logo/-/metamask-logo-2.1.4.tgz#0612b2b0ffc7eeb6be480c310785426ad9599e3c"