Move contributors + proposals to service

With this change we have all the contributors + proposals all the time in one place and can update them via events.
This commit is contained in:
2018-04-15 19:02:57 +02:00
parent fdda30da67
commit 99bbcda709
11 changed files with 36 additions and 78 deletions
+2 -12
View File
@@ -15,24 +15,14 @@ export default Controller.extend({
// TODO: transfer on the token contract
},
contributors: alias('model.contributors'),
contributors: alias('kredits.contributors'),
contributorsWithKredits: filter('contributors', function(contributor) {
return contributor.get('balance') !== 0;
}),
contributorsSorting: ['balance:desc'],
contributorsSorted: sort('contributorsWithKredits', 'contributorsSorting'),
proposals: computed('model.proposals.[]', 'contributors.[]', function() {
return this.get('model.proposals')
.map((proposal) => {
let contributor = this.get('contributors')
.findBy('id', proposal.get('recipientId'));
proposal.set('contributor', contributor);
return proposal;
});
}),
proposals: alias('kredits.proposals'),
proposalsOpen: filterBy('proposals', 'isExecuted', false),
proposalsClosed: filterBy('proposals', 'isExecuted', true),
proposalsSorting: ['id:desc'],
+2 -2
View File
@@ -1,11 +1,11 @@
import Controller from 'ember-controller';
import { filterBy } from 'ember-computed';
import { alias, filterBy } from 'ember-computed';
import injectService from 'ember-service/inject';
export default Controller.extend({
kredits: injectService(),
contributors: [],
contributors: alias('kredits.contributors'),
minedContributors: filterBy('contributors', 'id'),
actions: {
+8 -2
View File
@@ -1,8 +1,11 @@
import EmberObject from 'ember-object';
import { alias } from 'ember-computed';
import computed, { alias } from 'ember-computed';
import injectService from 'ember-service/inject';
import bignumber from 'kredits-web/utils/cps/bignumber';
export default EmberObject.extend({
kredits: injectService(),
// Contract
id: bignumber('idRaw', 'toString'),
creatorAddress: null,
@@ -24,5 +27,8 @@ export default EmberObject.extend({
ipfsData: '',
// Relationships
contributor: null,
// TODO: Optimize it. We don't need to find the contributor every time we add a new one
contributor: computed('recipientId', 'kredits.contributors.[]', function() {
return this.get('kredits.contributors').findBy('id', this.get('recipientId'));
})
});
+4
View File
@@ -15,4 +15,8 @@ export default Route.extend({
}
});
},
afterModel() {
return this.get('kredits').loadContributorsAndProposals();
}
});
-22
View File
@@ -1,22 +0,0 @@
import Ember from 'ember';
export default Ember.Route.extend({
kredits: Ember.inject.service(),
model() {
let newContributor = Ember.getOwner(this).lookup('model:contributor');
newContributor.set('kind', 'person');
let kredits = this.get('kredits');
let totalSupply = kredits.get('kredits').Token.functions.totalSupply();
return Ember.RSVP.hash({
contributors: kredits.getContributors(),
proposals: kredits.getProposals(),
totalSupply,
newContributor: newContributor,
});
}
});
-15
View File
@@ -1,15 +0,0 @@
import injectService from 'ember-service/inject';
import Route from 'ember-route';
export default Route.extend({
kredits: injectService(),
setupController(controller) {
this._super(...arguments);
this.get('kredits').getContributors()
.then((contributors) => {
controller.set('contributors', contributors);
});
}
});
+17
View File
@@ -74,6 +74,23 @@ export default Service.extend({
});
},
totalSupply: computed(function() {
return this.get('kredits').Token.functions.totalSupply();
}),
contributors: [],
proposals: [],
loadContributorsAndProposals() {
return RSVP.hash({
contributors: this.getContributors(),
proposals: this.getProposals(),
}).then(({ contributors, proposals }) => {
this.set('contributors', contributors);
this.set('proposals', proposals);
});
},
// TODO: Only assign valid attributes
buildModel(name, attributes) {
debug('[kredits] build', name, attributes);
+2 -2
View File
@@ -18,7 +18,7 @@
{{contributor-list contributors=contributorsSorted}}
<p class="stats">
<span class="number">{{model.totalSupply}}</span> kredits issued and distributed among
<span class="number">{{await kredits.totalSupply}}</span> kredits issued and distributed among
<span class="number">{{contributorsWithKredits.length}}</span> contributors.
</p>
</div>
@@ -69,7 +69,7 @@
<div class="content">
{{#if kredits.currentUser.isCore}}
{{add-contributor contributors=model.contributors save=(action 'save')}}
{{add-contributor contributors=contributors save=(action 'save')}}
{{else}}
Only core team members can add new contributors. Please ask someone to set you up.
{{/if}}