Don't inject kredits service in models

This commit is contained in:
2018-04-16 19:23:28 +02:00
parent ba3c707da3
commit c0b5c36115
4 changed files with 24 additions and 36 deletions
-3
View File
@@ -1,11 +1,8 @@
import Component from '@ember/component';
import { computed } from '@ember/object';
import { and, notEmpty } from '@ember/object/computed';
import { inject as injectService } from '@ember/service';
export default Component.extend({
kredits: injectService(),
// Default attributes used by reset
attributes: {
contributorId: null,
-10
View File
@@ -1,12 +1,8 @@
import EmberObject from '@ember/object';
import { computed } from '@ember/object';
import { alias } from '@ember/object/computed';
import { inject as injectService } from '@ember/service';
import bignumber from 'kredits-web/utils/cps/bignumber';
export default EmberObject.extend({
kredits: injectService(),
// Contract
id: bignumber('idRaw', 'toString'),
creatorAccount: null,
@@ -26,10 +22,4 @@ export default EmberObject.extend({
details: {},
url: null,
ipfsData: '',
// Relationships
// TODO: Optimize it. We don't need to find the contributor every time we add a new one
contributor: computed('contributorId', 'kredits.contributors.[]', function() {
return this.get('kredits.contributors').findBy('id', this.contributorId);
})
});
+23 -22
View File
@@ -1,15 +1,17 @@
import { getOwner } from '@ember/application';
import ethers from 'npm:ethers';
import Kredits from 'kredits-web/lib/kredits';
import RSVP from 'rsvp';
import Service from '@ember/service';
import { computed } from '@ember/object';
import { alias } from '@ember/object/computed';
import { isEmpty, isPresent } from '@ember/utils';
import RSVP from 'rsvp';
import Kredits from 'kredits-web/lib/kredits';
import Contributor from 'kredits-web/models/contributor'
import Proposal from 'kredits-web/models/proposal'
import ethers from 'npm:ethers';
import config from 'kredits-web/config/environment';
export default Service.extend({
ethProvider: null,
currentUserAccounts: null, // default to not having an account. this is the wen web3 is loaded.
currentUser: null,
@@ -76,23 +78,20 @@ export default Service.extend({
proposals: [],
loadContributorsAndProposals() {
return RSVP.hash({
contributors: this.getContributors(),
proposals: this.getProposals(),
}).then(({ contributors, proposals }) => {
this.contributors.pushObjects(contributors);
this.proposals.pushObjects(proposals);
});
return this.getContributors()
.then(contributors => this.contributors.pushObjects(contributors))
.then(() => this.getProposals())
.then(proposals => this.proposals.pushObjects(proposals))
},
// TODO: Only assign valid attributes
buildModel(name, attributes) {
console.debug('[kredits] build', name, attributes);
let model = getOwner(this).lookup(`model:${name}`);
model.setProperties(attributes);
return model;
},
// buildModel(name, attributes) {
// console.debug('[kredits] build', name, attributes);
// let model = getOwner(this).lookup(`model:${name}`);
//
// model.setProperties(attributes);
// return model;
// },
addContributor(attributes) {
console.debug('[kredits] add contributor', attributes);
@@ -100,7 +99,7 @@ export default Service.extend({
return this.kredits.Contributor.add(attributes)
.then((data) => {
console.debug('[kredits] add contributor response', data);
return this.buildModel('contributor', attributes);
return Contributor.create(attributes);
});
},
@@ -108,7 +107,7 @@ export default Service.extend({
return this.kredits.Contributor.all()
.then((contributors) => {
return contributors.map((contributor) => {
return this.buildModel('contributor', contributor);
return Contributor.create(contributor);
});
});
},
@@ -119,7 +118,8 @@ export default Service.extend({
return this.kredits.Operator.addProposal(attributes)
.then((data) => {
console.debug('[kredits] add proposal response', data);
return this.buildModel('proposal', attributes);
attributes.contributor = this.contributors.findBy('id', attributes.contributorId);
return Proposal.create(attributes);
});
},
@@ -127,7 +127,8 @@ export default Service.extend({
return this.kredits.Operator.all()
.then((proposals) => {
return proposals.map((proposal) => {
return this.buildModel('proposal', proposal);
proposal.contributor = this.contributors.findBy('id', proposal.contributorId.toString());
return Proposal.create(proposal);
});
});
},
+1 -1
View File
@@ -1,7 +1,7 @@
import { isEmpty, isPresent } from '@ember/utils';
import Contributor from 'kredits-web/models/contributor';
import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
import Contributor from 'kredits-web/models/contributor';
module('Unit | Controller | index', function(hooks) {
setupTest(hooks);