diff --git a/lib/contracts/contribution.js b/lib/contracts/contribution.js index 373b983..e49591a 100644 --- a/lib/contracts/contribution.js +++ b/lib/contracts/contribution.js @@ -1,9 +1,21 @@ -const Record = require('./record'); -const ContributionSerializer = require('../serializers/contribution'); +const ethers = require('ethers'); -class Contribution extends Record { - get count () { - return this.functions.contributionsCount(); +const ContributionSerializer = require('../serializers/contribution'); +const Base = require('./base'); + +class Contribution extends Base { + all() { + return this.functions.contributionsCount() + .then(async (count) => { + let contributions = []; + + for (let id = 1; id <= count; id++) { + const contribution = await this.getById(id) + contributions.push(contribution); + } + + return contributions; + }); } getById(id) { diff --git a/lib/contracts/contributor.js b/lib/contracts/contributor.js index 8afb820..d207773 100644 --- a/lib/contracts/contributor.js +++ b/lib/contracts/contributor.js @@ -1,9 +1,20 @@ -const Record = require('./record'); -const ContributorSerializer = require('../serializers/contributor'); +const RSVP = require('rsvp'); -class Contributor extends Record { - get count () { - return this.functions.contributorsCount(); +const ContributorSerializer = require('../serializers/contributor'); +const Base = require('./base'); + +class Contributor extends Base { + all() { + return this.functions.contributorsCount() + .then(count => { + let contributors = []; + + for (let id = 1; id <= count; id++) { + contributors.push(this.getById(id)); + } + + return RSVP.all(contributors); + }); } getById(id) { diff --git a/lib/contracts/proposal.js b/lib/contracts/proposal.js index 71bbacc..3caccba 100644 --- a/lib/contracts/proposal.js +++ b/lib/contracts/proposal.js @@ -1,9 +1,20 @@ -const Record = require('./record'); -const ContributionSerializer = require('../serializers/contribution'); +const RSVP = require('rsvp'); -class Proposal extends Record { - get count () { - return this.functions.proposalsCount(); +const ContributionSerializer = require('../serializers/contribution'); +const Base = require('./base'); + +class Proposal extends Base { + all() { + return this.functions.proposalsCount() + .then(count => { + let proposals = []; + + for (let id = 1; id <= count; id++) { + proposals.push(this.getById(id)); + } + + return RSVP.all(proposals); + }); } getById(id) { diff --git a/lib/kredits.js b/lib/kredits.js index fc1c168..ef47795 100644 --- a/lib/kredits.js +++ b/lib/kredits.js @@ -1,4 +1,5 @@ const ethers = require('ethers'); +const RSVP = require('rsvp'); const Preflight = require('./utils/preflight'); @@ -56,8 +57,7 @@ class Kredits { ); }); }); - - return Promise.all(addressPromises).then(() => { return this }); + return RSVP.all(addressPromises).then(() => { return this }); }); }