From 69f707762ed5939c5f52bf6dce5c5513aaf6fa1d Mon Sep 17 00:00:00 2001 From: Richard Moore Date: Wed, 15 Apr 2020 16:46:15 -0400 Subject: [PATCH] Fixed WebSocketProvider filter events (#784). --- packages/providers/src.ts/base-provider.ts | 10 ++++++++++ packages/providers/src.ts/websocket-provider.ts | 14 ++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/packages/providers/src.ts/base-provider.ts b/packages/providers/src.ts/base-provider.ts index 4e0ef3b7e..a89e9fb1e 100644 --- a/packages/providers/src.ts/base-provider.ts +++ b/packages/providers/src.ts/base-provider.ts @@ -123,6 +123,16 @@ export class Event { defineReadOnly(this, "once", once); } + get event(): EventType { + switch (this.type) { + case "tx": + return this.hash; + case "filter": + return this.filter; + } + return this.tag; + } + get type(): string { return this.tag.split(":")[0] } diff --git a/packages/providers/src.ts/websocket-provider.ts b/packages/providers/src.ts/websocket-provider.ts index 3cc962e53..d82414fda 100644 --- a/packages/providers/src.ts/websocket-provider.ts +++ b/packages/providers/src.ts/websocket-provider.ts @@ -13,7 +13,6 @@ import { Logger } from "@ethersproject/logger"; import { version } from "./_version"; const logger = new Logger(version); - /** * Notes: * @@ -40,11 +39,11 @@ export type Subscription = { tag: string; processFunc: (payload: any) => void; }; -/* -function subscribable(tag: string): boolean { - return (tag === "block" || tag === "pending"); -} -*/ + + +// For more info about the Real-time Event API see: +// https://geth.ethereum.org/docs/rpc/pubsub + export class WebSocketProvider extends JsonRpcProvider { readonly _websocket: any; readonly _requests: { [ name: string ]: InflightRequest }; @@ -237,7 +236,7 @@ export class WebSocketProvider extends JsonRpcProvider { return; } tag = "tx"; - } else if (this.listenerCount(event.tag)) { + } else if (this.listenerCount(event.event)) { // There are remaining event listeners return; } @@ -252,5 +251,4 @@ export class WebSocketProvider extends JsonRpcProvider { this.send("eth_unsubscribe", [ subId ]); }); } - }