mirror of https://github.com/status-im/web3.js.git
eth.filter works
This commit is contained in:
parent
9da9bfdbd4
commit
190f9815d9
|
@ -24,7 +24,6 @@
|
||||||
* @date 2014
|
* @date 2014
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var RequestManager = require('./requestmanager');
|
|
||||||
var formatters = require('./formatters');
|
var formatters = require('./formatters');
|
||||||
var utils = require('../utils/utils');
|
var utils = require('../utils/utils');
|
||||||
|
|
||||||
|
@ -124,19 +123,21 @@ var pollFilter = function(self) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
RequestManager.getInstance().startPolling({
|
self.requestManager.startPolling({
|
||||||
method: self.implementation.poll.call,
|
method: self.implementation.poll.call,
|
||||||
params: [self.filterId],
|
params: [self.filterId],
|
||||||
}, self.filterId, onMessage, self.stopWatching.bind(self));
|
}, self.filterId, onMessage, self.stopWatching.bind(self));
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var Filter = function (options, methods, formatter, callback) {
|
var Filter = function (web3, options, methods, formatter, callback) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var implementation = {};
|
var implementation = {};
|
||||||
methods.forEach(function (method) {
|
methods.forEach(function (method) {
|
||||||
method.attachToObject(implementation);
|
method.attachToObject(implementation);
|
||||||
|
method.setRequestManager(web3._requestManager);
|
||||||
});
|
});
|
||||||
|
this.requestManager = web3._requestManager;
|
||||||
this.options = getOptions(options);
|
this.options = getOptions(options);
|
||||||
this.implementation = implementation;
|
this.implementation = implementation;
|
||||||
this.filterId = null;
|
this.filterId = null;
|
||||||
|
@ -188,7 +189,7 @@ Filter.prototype.watch = function (callback) {
|
||||||
};
|
};
|
||||||
|
|
||||||
Filter.prototype.stopWatching = function () {
|
Filter.prototype.stopWatching = function () {
|
||||||
RequestManager.getInstance().stopPolling(this.filterId);
|
this.requestManager.stopPolling(this.filterId);
|
||||||
// remove filter async
|
// remove filter async
|
||||||
this.implementation.uninstallFilter(this.filterId, function(){});
|
this.implementation.uninstallFilter(this.filterId, function(){});
|
||||||
this.callbacks = [];
|
this.callbacks = [];
|
||||||
|
|
|
@ -123,7 +123,7 @@ Method.prototype.toPayload = function (args) {
|
||||||
|
|
||||||
Method.prototype.attachToObject = function (obj) {
|
Method.prototype.attachToObject = function (obj) {
|
||||||
var func = this.buildCall();
|
var func = this.buildCall();
|
||||||
// func.call = this.call; // that's ugly. filter.js uses it
|
func.call = this.call; // TODO!!! that's ugly. filter.js uses it
|
||||||
var name = this.name.split('.');
|
var name = this.name.split('.');
|
||||||
if (name.length > 1) {
|
if (name.length > 1) {
|
||||||
obj[name[0]] = obj[name[0]] || {};
|
obj[name[0]] = obj[name[0]] || {};
|
||||||
|
|
|
@ -29,6 +29,8 @@ var Method = require('../method');
|
||||||
var Property = require('../property');
|
var Property = require('../property');
|
||||||
var c = require('../../utils/config');
|
var c = require('../../utils/config');
|
||||||
var Contract = require('../contract');
|
var Contract = require('../contract');
|
||||||
|
var watches = require('./watches');
|
||||||
|
var Filter = require('../filter');
|
||||||
|
|
||||||
var blockCall = function (args) {
|
var blockCall = function (args) {
|
||||||
return (utils.isString(args[0]) && args[0].indexOf('0x') === 0) ? "eth_getBlockByHash" : "eth_getBlockByNumber";
|
return (utils.isString(args[0]) && args[0].indexOf('0x') === 0) ? "eth_getBlockByHash" : "eth_getBlockByNumber";
|
||||||
|
@ -305,5 +307,9 @@ Eth.prototype.contract = function (abi) {
|
||||||
return factory;
|
return factory;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Eth.prototype.filter = function (fil, callback) {
|
||||||
|
return new Filter(this.web3, fil, watches.eth(), formatters.outputLogFormatter, callback);
|
||||||
|
};
|
||||||
|
|
||||||
module.exports = Eth;
|
module.exports = Eth;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
var chai = require('chai');
|
var chai = require('chai');
|
||||||
var assert = chai.assert;
|
var assert = chai.assert;
|
||||||
var web3 = require('../index');
|
var Web3 = require('../index');
|
||||||
|
var web3 = new Web3();
|
||||||
var FakeHttpProvider = require('./helpers/FakeHttpProvider');
|
var FakeHttpProvider = require('./helpers/FakeHttpProvider');
|
||||||
var utils = require('../lib/utils/utils');
|
var utils = require('../lib/utils/utils');
|
||||||
|
|
||||||
|
@ -31,7 +32,6 @@ var tests = [{
|
||||||
}
|
}
|
||||||
}];
|
}];
|
||||||
|
|
||||||
/*
|
|
||||||
var testPolling = function (tests) {
|
var testPolling = function (tests) {
|
||||||
|
|
||||||
describe('web3.eth.filter.polling', function () {
|
describe('web3.eth.filter.polling', function () {
|
||||||
|
@ -60,7 +60,7 @@ var testPolling = function (tests) {
|
||||||
});
|
});
|
||||||
|
|
||||||
// when
|
// when
|
||||||
var filter = web3[test.protocol].filter.apply(null, test.args);
|
var filter = web3[test.protocol].filter.apply(web3[test.protocol], test.args);
|
||||||
provider.injectBatchResults([test.secondResult]);
|
provider.injectBatchResults([test.secondResult]);
|
||||||
filter.watch(function (err, result) {
|
filter.watch(function (err, result) {
|
||||||
if (test.err) {
|
if (test.err) {
|
||||||
|
@ -109,7 +109,7 @@ var testPolling = function (tests) {
|
||||||
});
|
});
|
||||||
|
|
||||||
// when
|
// when
|
||||||
var filter = web3[test.protocol].filter.apply(null, test.args);
|
var filter = web3[test.protocol].filter.apply(web3[test.protocol], test.args);
|
||||||
provider.injectBatchResults([test.secondResult]);
|
provider.injectBatchResults([test.secondResult]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -117,5 +117,3 @@ var testPolling = function (tests) {
|
||||||
};
|
};
|
||||||
|
|
||||||
testPolling(tests);
|
testPolling(tests);
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
Loading…
Reference in New Issue