From 32846194b6ba8bf1712ae3bcc0fd7419f1db0e5e Mon Sep 17 00:00:00 2001 From: bumi Date: Mon, 9 Apr 2018 20:31:34 +0200 Subject: [PATCH] Handle bignumber conversions The kredits module always returns raw data from the contract. For uint values these are bignumbers. To handle those in the ember app we need to convert them to string or to number. --- app/controllers/index.js | 4 ++-- app/models/contributor.js | 5 +++-- app/models/proposal.js | 11 ++++++----- app/utils/cps/bignumber.js | 13 +++++++++++++ 4 files changed, 24 insertions(+), 9 deletions(-) create mode 100644 app/utils/cps/bignumber.js diff --git a/app/controllers/index.js b/app/controllers/index.js index 6d0195c..5b0727e 100644 --- a/app/controllers/index.js +++ b/app/controllers/index.js @@ -17,7 +17,7 @@ export default Controller.extend({ contributors: alias('model.contributors'), contributorsWithKredits: filter('contributors', function(contributor) { - return contributor.get('balance').toString() !== "0"; + return contributor.get('balance') !== 0; }), contributorsSorting: ['balance:desc'], contributorsSorted: sort('contributorsWithKredits', 'contributorsSorting'), @@ -68,7 +68,7 @@ export default Controller.extend({ this.get('contributors') .findBy('id', recipientId.toString()) - .incrementProperty('balance', amount.toNumber()); + .incrementProperty('balance', amount); }, _handleProposalVoted(proposalId, voter, totalVotes) { diff --git a/app/models/contributor.js b/app/models/contributor.js index 1c3801a..127f44f 100644 --- a/app/models/contributor.js +++ b/app/models/contributor.js @@ -1,12 +1,13 @@ import computed from 'ember-computed'; import EmberObject from 'ember-object'; +import bignumber from 'kredits-web/utils/cps/bignumber'; export default EmberObject.extend({ // Contract - id: null, + id: bignumber('idRaw', 'toString'), // TODO: Should we rename it to account like in the contract? address: null, - balance: 0, + balance: bignumber('balanceRaw', 'toNumber'), isCore: false, ipfsHash: null, diff --git a/app/models/proposal.js b/app/models/proposal.js index c52d162..88594e4 100644 --- a/app/models/proposal.js +++ b/app/models/proposal.js @@ -1,14 +1,15 @@ import EmberObject from 'ember-object'; import { alias } from 'ember-computed'; +import bignumber from 'kredits-web/utils/cps/bignumber'; export default EmberObject.extend({ // Contract - id: null, + id: bignumber('idRaw', 'toString'), creatorAddress: null, - recipientId: null, - amount: null, - votesCount: null, - votesNeeded: null, + recipientId: bignumber('recipientIdRaw', 'toString'), + amount: bignumber('amountRaw', 'toNumber'), + votesCount: bignumber('votesCountRaw', 'toNumber'), + votesNeeded: bignumber('votesNeededRaw', 'toNumber'), executed: null, ipfsHash: null, diff --git a/app/utils/cps/bignumber.js b/app/utils/cps/bignumber.js new file mode 100644 index 0000000..701eed1 --- /dev/null +++ b/app/utils/cps/bignumber.js @@ -0,0 +1,13 @@ +import computed from 'ember-computed'; + +export default function(dependentKey, converterMethod) { + return computed(dependentKey, { + get () { + return this.get(dependentKey)[converterMethod](); + }, + set (key, value) { + this.set(dependentKey, value); + return value[converterMethod](); + } + }); +}