diff --git a/app/components/add-contributor/component.js b/app/components/add-contributor/component.js index 646b4f3..32800c1 100644 --- a/app/components/add-contributor/component.js +++ b/app/components/add-contributor/component.js @@ -1,27 +1,12 @@ import Component from '@ember/component'; import { and, notEmpty } from '@ember/object/computed'; -import { inject as injectService } from '@ember/service'; +import { inject as service } from '@ember/service'; export default Component.extend({ - kredits: injectService(), + kredits: service(), - // Default attributes used by reset - attributes: { - account: null, - name: null, - kind: 'person', - url: null, - github_username: null, - github_uid: null, - wiki_username: null, - isCore: false, - }, - - didInsertElement() { - this._super(...arguments); - this.reset(); - }, + attributes: null, // TODO: add proper address validation isValidAccount: notEmpty('account'), @@ -36,6 +21,27 @@ export default Component.extend({ 'isValidGithubUID' ), + init () { + this._super(...arguments); + + // Default attributes used by reset + this.set('attributes', { + account: null, + name: null, + kind: 'person', + url: null, + github_username: null, + github_uid: null, + wiki_username: null, + isCore: false + }); + }, + + didInsertElement() { + this._super(...arguments); + this.reset(); + }, + reset: function() { this.setProperties(this.attributes); }, @@ -61,4 +67,5 @@ export default Component.extend({ }); } } + }); diff --git a/app/components/add-proposal/component.js b/app/components/add-proposal/component.js index 3c2ccb7..a915805 100644 --- a/app/components/add-proposal/component.js +++ b/app/components/add-proposal/component.js @@ -3,21 +3,9 @@ import { computed } from '@ember/object'; import { and, notEmpty } from '@ember/object/computed'; export default Component.extend({ - // Default attributes used by reset - attributes: { - contributorId: null, - kind: 'community', - amount: null, - description: null, - url: null, - }, - didInsertElement() { - this._super(...arguments); - this.reset(); - }, - - contributors: [], + attributes: null, + contributors: null, isValidContributor: notEmpty('contributorId'), isValidAmount: computed('amount', function() { @@ -29,6 +17,26 @@ export default Component.extend({ 'isValidAmount', 'isValidDescription'), + init () { + this._super(...arguments); + + // Default attributes used by reset + this.set('attributes', { + contributorId: null, + kind: 'community', + amount: null, + description: null, + url: null, + }); + + this.set('contributors', []); + }, + + didInsertElement() { + this._super(...arguments); + this.reset(); + }, + reset: function() { this.setProperties(this.attributes); }, @@ -54,4 +62,5 @@ export default Component.extend({ }); } } + }); diff --git a/app/components/chart-contributions-by-type/component.js b/app/components/chart-contributions-by-type/component.js index dc76db8..aae0374 100644 --- a/app/components/chart-contributions-by-type/component.js +++ b/app/components/chart-contributions-by-type/component.js @@ -12,6 +12,11 @@ let categoryColors = { export default Component.extend({ contributions: null, + chartOptions: Object.freeze({ + legend: { + display: false + } + }), chartData: computed('contributions', function() { let kredits = this.contributions @@ -52,12 +57,6 @@ export default Component.extend({ 'Documentation' ], } - }), - - chartOptions: { - legend: { - display: false - } - } + }) }); diff --git a/app/controllers/application.js b/app/controllers/application.js index 2fe85e2..03437cb 100644 --- a/app/controllers/application.js +++ b/app/controllers/application.js @@ -1,6 +1,6 @@ import Controller from '@ember/controller'; -import { inject as injectService } from '@ember/service'; +import { inject as service } from '@ember/service'; export default Controller.extend({ - kredits: injectService(), + kredits: service(), }); diff --git a/app/controllers/index.js b/app/controllers/index.js index 10c8920..0bd5926 100644 --- a/app/controllers/index.js +++ b/app/controllers/index.js @@ -1,21 +1,21 @@ import Controller from '@ember/controller'; import { alias, filter, filterBy, sort } from '@ember/object/computed'; -import { inject as injectService } from '@ember/service'; +import { inject as service } from '@ember/service'; export default Controller.extend({ - kredits: injectService(), + kredits: service(), contributors: alias('kredits.contributors'), contributorsWithKredits: filter('contributors', function(contributor) { return contributor.get('balance') !== 0; }), - contributorsSorting: ['balance:desc'], + contributorsSorting: Object.freeze(['balance:desc']), contributorsSorted: sort('contributorsWithKredits', 'contributorsSorting'), proposals: alias('kredits.proposals'), proposalsOpen: filterBy('proposals', 'isExecuted', false), proposalsClosed: filterBy('proposals', 'isExecuted', true), - proposalsSorting: ['id:desc'], + proposalsSorting: Object.freeze(['id:desc']), proposalsClosedSorted: sort('proposalsClosed', 'proposalsSorting'), proposalsOpenSorted: sort('proposalsOpen', 'proposalsSorting'), diff --git a/app/controllers/proposals/new.js b/app/controllers/proposals/new.js index 4765513..61c93ae 100644 --- a/app/controllers/proposals/new.js +++ b/app/controllers/proposals/new.js @@ -1,9 +1,9 @@ import Controller from '@ember/controller'; import { alias, filterBy } from '@ember/object/computed'; -import { inject as injectService } from '@ember/service'; +import { inject as service } from '@ember/service'; export default Controller.extend({ - kredits: injectService(), + kredits: service(), contributors: alias('kredits.contributors'), minedContributors: filterBy('contributors', 'id'), diff --git a/app/models/proposal.js b/app/models/proposal.js index 75d064f..6cd872e 100644 --- a/app/models/proposal.js +++ b/app/models/proposal.js @@ -3,6 +3,7 @@ import { alias } from '@ember/object/computed'; import bignumber from 'kredits-web/utils/cps/bignumber'; export default EmberObject.extend({ + // Contract id: bignumber('idRaw', 'toString'), creatorAccount: null, @@ -19,7 +20,13 @@ export default EmberObject.extend({ // IPFS kind: null, description: null, - details: {}, + details: null, url: null, ipfsData: '', + + init () { + this._super(...arguments); + this.set('details', {}); + } + }); diff --git a/app/routes/application.js b/app/routes/application.js index 6613704..2c633b0 100644 --- a/app/routes/application.js +++ b/app/routes/application.js @@ -1,8 +1,8 @@ -import { inject as injectService } from '@ember/service'; +import { inject as service } from '@ember/service'; import Route from '@ember/routing/route'; export default Route.extend({ - kredits: injectService(), + kredits: service(), beforeModel(transition) { const kredits = this.kredits; diff --git a/app/services/kredits.js b/app/services/kredits.js index 15ed22a..705c6bb 100644 --- a/app/services/kredits.js +++ b/app/services/kredits.js @@ -16,6 +16,8 @@ export default Service.extend({ currentUserAccounts: null, // default to not having an account. this is the wen web3 is loaded. currentUser: null, + contributors: null, + proposals: null, currentUserIsContributor: notEmpty('currentUser'), currentUserIsCore: alias('currentUser.isCore'), hasAccounts: notEmpty('currentUserAccounts'), @@ -23,6 +25,12 @@ export default Service.extend({ return this.currentUserAccounts && isEmpty(this.currentUserAccounts); }), + init () { + this._super(...arguments); + this.set('contributors', []); + this.set('proposals', []); + }, + // this is called in the routes beforeModel(). So it is initialized before everything else // and we can rely on the ethProvider and the potential currentUserAccounts to be available getEthProvider: function() { @@ -84,9 +92,6 @@ export default Service.extend({ return this.kredits.Token.functions.totalSupply(); }), - contributors: [], - proposals: [], - loadContributorsAndProposals() { return this.getContributors() .then(contributors => this.contributors.pushObjects(contributors))