diff --git a/app/models/proposal.js b/app/models/proposal.js new file mode 100644 index 0000000..27cd21f --- /dev/null +++ b/app/models/proposal.js @@ -0,0 +1,14 @@ +import Ember from 'ember'; + +export default Ember.Object.extend({ + + creator: null, + recipient: null, + votesCount: null, + votesNeeded: null, + amount: null, + executed: null, + url: null, + ipfsHash: null + +}); diff --git a/app/routes/index.js b/app/routes/index.js index e9a9ae4..00069d6 100644 --- a/app/routes/index.js +++ b/app/routes/index.js @@ -5,10 +5,13 @@ export default Ember.Route.extend({ kredits: Ember.inject.service(), model() { + let kredits = this.get('kredits'); + return Ember.RSVP.hash({ - contributors: this.get('kredits').getContributors(), - totalSupply: this.get('kredits').getValueFromContract('totalSupply'), - contributorsCount: this.get('kredits').getValueFromContract('contributorsCount') + contributors: kredits.getContributors(), + totalSupply: kredits.getValueFromContract('totalSupply'), + contributorsCount: kredits.getValueFromContract('contributorsCount'), + proposals: kredits.getProposals() }); } diff --git a/app/services/kredits.js b/app/services/kredits.js index fc99961..d959f84 100644 --- a/app/services/kredits.js +++ b/app/services/kredits.js @@ -2,6 +2,7 @@ import Ember from 'ember'; import Web3 from 'npm:web3'; import config from 'kredits-web/config/environment'; import Contributor from 'kredits-web/models/contributor'; +import Proposal from 'kredits-web/models/proposal'; export default Ember.Service.extend({ @@ -82,6 +83,38 @@ export default Ember.Service.extend({ }); }, + getProposalData(i) { + let promise = new Ember.RSVP.Promise((resolve, reject) => { + this.getValueFromContract('proposals', i).then(p => { + let proposal = Proposal.create({ + creatorAddress : p[0], + recipientAddress : p[1], + votesCount : p[2].toNumber(), + votesNeeded : p[3].toNumber(), + amount : p[4].toNumber(), + executed : p[5], + url : p[6], + ipfsHash : p[7] + }); + Ember.Logger.debug('[kredits] proposal', proposal); + resolve(proposal); + }).catch(err => reject(err)); + }); + return promise; + }, + + getProposals() { + return this.getValueFromContract('proposalsCount').then(proposalsCount => { + let proposals = []; + + for(var i = 0; i < proposalsCount.toNumber(); i++) { + proposals.push(this.getProposalData(i)); + } + + return Ember.RSVP.all(proposals); + }); + }, + logKreditsContract: function() { Ember.Logger.debug('[kredits] kreditsContract', this.get('kreditsContract')); }.on('init') diff --git a/tests/unit/models/proposal-test.js b/tests/unit/models/proposal-test.js new file mode 100644 index 0000000..d91008f --- /dev/null +++ b/tests/unit/models/proposal-test.js @@ -0,0 +1,9 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('model:proposal', 'Unit | Model | proposal'); + +test('it exists', function(assert) { + let model = this.subject(); + // let store = this.store(); + assert.ok(!!model); +});