From cc6f658ef146ec1175bbccba42a82ffd6d56c1c9 Mon Sep 17 00:00:00 2001 From: Richard Moore Date: Mon, 30 Jul 2018 23:14:07 -0400 Subject: [PATCH] Added support for Web3 v1.0 providers. --- src.ts/providers/web3-provider.ts | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src.ts/providers/web3-provider.ts b/src.ts/providers/web3-provider.ts index 03fbccd8c..98936145c 100644 --- a/src.ts/providers/web3-provider.ts +++ b/src.ts/providers/web3-provider.ts @@ -15,7 +15,8 @@ export type AsyncSendable = { isMetaMask?: boolean; host?: string; path?: string; - sendAsync: (request: any, callback: (error: any, response: any) => void) => void + sendAsync?: (request: any, callback: (error: any, response: any) => void) => void + send?: (request: any, callback: (error: any, response: any) => void) => void } /* @@ -28,10 +29,22 @@ utils.defineProperty(Web3Signer, 'onchange', { export class Web3Provider extends JsonRpcProvider { readonly _web3Provider: AsyncSendable; + private _sendAsync: (request: any, callback: (error: any, response: any) => void) => void; constructor(web3Provider: AsyncSendable, network?: Networkish) { + // HTTP has a host; IPC has a path. + super(web3Provider.host || web3Provider.path || '', network); + errors.checkNew(this, Web3Provider); - if (!web3Provider || !web3Provider.sendAsync) { + if (web3Provider) { + if (web3Provider.sendAsync) { + this._sendAsync = web3Provider.sendAsync.bind(web3Provider); + } else if (web3Provider.send) { + this._sendAsync = web3Provider.send.bind(web3Provider); + } + } + + if (!web3Provider || !this._sendAsync) { errors.throwError( 'invalid web3Provider', errors.INVALID_ARGUMENT, @@ -39,12 +52,6 @@ export class Web3Provider extends JsonRpcProvider { ); } - // HTTP has a host; IPC has a path. - var url = web3Provider.host || web3Provider.path || ''; - - super(url, network); - errors.checkNew(this, Web3Provider); - defineReadOnly(this, '_web3Provider', web3Provider); } @@ -65,7 +72,7 @@ export class Web3Provider extends JsonRpcProvider { jsonrpc: "2.0" }; - this._web3Provider.sendAsync(request, function(error, result) { + this._sendAsync(request, function(error, result) { if (error) { reject(error); return;