From ac0d5a0958030133e82790b7b639fe5da9613322 Mon Sep 17 00:00:00 2001 From: Iuri Matias Date: Mon, 19 Aug 2019 12:49:11 -0400 Subject: [PATCH] respect filter conditions even if they are not indexed in the events --- src/eventSyncer.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/eventSyncer.js b/src/eventSyncer.js index 62eaac9..607eca3 100644 --- a/src/eventSyncer.js +++ b/src/eventSyncer.js @@ -72,8 +72,22 @@ class EventSyncer { // for e.g, it should start fromBlock, from the latest known block (which means it should store block info) // it should be able to do events X at the time to avoid slow downs as well as the 10k limit contractInstance.events[eventName].apply(contractInstance.events[eventName], [(filterConditions || {fromBlock: 0}), (err, event) => { - // let eventObject = event.returnValues; - // eventObject.id = event.id; + let propsToFilter = []; + for (let prop in filterConditions.filter) { + if (Object.keys(event.returnValues).indexOf(prop) >= 0) { + propsToFilter.push(prop) + } + } + if (propsToFilter.length === 0) { + return this.events.emit("event-" + eventName, event); + } + + for (let prop of propsToFilter) { + if (filterConditions.filter[prop] !== event.returnValues[prop]) { + return; + } + } + this.events.emit("event-" + eventName, event); }])