Merge pull request #363 from 0xProject/refactor/subproviders/injected-provider-constructor

Change the InjectedWeb3Subprovider to accept Web3.Provider
This commit is contained in:
Jacob Evans
2018-02-05 17:16:34 -08:00
committed by GitHub
4 changed files with 13 additions and 7 deletions

View File

@@ -1,6 +1,10 @@
# CHANGELOG
## v0.4.0 - _January 28, 2017_
## v0.4.0 - _Feburary 02, 2018_
* InjectedWeb3Subprovider accepts a Provider in the constructor, previously it was a Web3 object.
## v0.3.5 - _January 28, 2018_
* Return a transaction hash from `_sendTransactionAsync` (#303)

View File

@@ -2,6 +2,8 @@
A few useful web3 subproviders including a LedgerSubprovider useful for adding Ledger Nano S support.
We have written up a [Wiki](https://0xproject.com/wiki#Web3-Provider-Examples) article detailing some use cases of this subprovider package.
## Installation
```

View File

@@ -1,17 +1,16 @@
import * as _ from 'lodash';
import Web3 = require('web3');
import Web3ProviderEngine = require('web3-provider-engine');
/*
* This class implements the web3-provider-engine subprovider interface and forwards
* requests involving user accounts (getAccounts, sendTransaction, etc...) to the injected
* web3 instance in their browser.
* provider instance in their browser.
* Source: https://github.com/MetaMask/provider-engine/blob/master/subproviders/subprovider.js
*/
export class InjectedWeb3Subprovider {
private _injectedWeb3: Web3;
constructor(injectedWeb3: Web3) {
this._injectedWeb3 = injectedWeb3;
constructor(subprovider: Web3.Provider) {
this._injectedWeb3 = new Web3(subprovider);
}
public handleRequest(
payload: Web3.JSONRPCRequestPayload,
@@ -42,8 +41,9 @@ export class InjectedWeb3Subprovider {
}
}
// Required to implement this method despite not needing it for this subprovider
// This type is Web3ProviderEngine, but there is no need to import this for a noop.
// tslint:disable-next-line:prefer-function-over-method
public setEngine(engine: Web3ProviderEngine) {
public setEngine(engine: any) {
// noop
}
}

View File

@@ -100,7 +100,7 @@ export class Blockchain {
// We catch all requests involving a users account and send it to the injectedWeb3
// instance. All other requests go to the public hosted node.
provider = new ProviderEngine();
provider.addProvider(new InjectedWeb3Subprovider(injectedWeb3));
provider.addProvider(new InjectedWeb3Subprovider(injectedWeb3.currentProvider));
provider.addProvider(new FilterSubprovider());
provider.addProvider(new RedundantRPCSubprovider(publicNodeUrlsIfExistsForNetworkId));
provider.start();