Skip to content

Instantly share code, notes, and snippets.

@xavierlepretre
Created February 6, 2018 22:55
Show Gist options
  • Save xavierlepretre/8ee58bc9d49823a3343ccbcdc3a18298 to your computer and use it in GitHub Desktop.
Save xavierlepretre/8ee58bc9d49823a3343ccbcdc3a18298 to your computer and use it in GitHub Desktop.
"use strict";
const Rx = require('rx');
module.exports = function addFilterObservableToWeb3(web3) {
web3.eth.filterObservable = function(_options) {
const filter = web3.eth.filter(_options);
return Rx.Observable.create(function(observer) {
filter.watch(function(err, result) {
if (!err) {
observer.onNext(result);
} else {
observer.onError(err);
}
});
return function() {
try {
filter.stopWatching(() => { });
} catch (error) {
console.log("Geth probably disappeared early", error);
}
};
});
};
};
@xavierlepretre
Copy link
Author

xavierlepretre commented Feb 6, 2018

And you use it thus:

const Web3 = require("web3");
const web3 = new Web3(...);
const addFilterObservableToWeb3 = require("./addFilterObservableToWeb3.js");
addFilterObservableToWeb3(web3);

web3.eth.filterObservable(myContractInstance.LogThatEvent())
    .subscribe(anEvent => {
        console.log(anEvent);
    });

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment