diff --git a/src/api/common/constants.js b/src/api/common/constants.js index 807348c4..64ee69ee 100644 --- a/src/api/common/constants.js +++ b/src/api/common/constants.js @@ -33,7 +33,7 @@ const AccountFields = { WalletSize: {name: 'walletSize', defaults: 0}, MessageKey: {name: 'messageKey'}, Domain: {name: 'domain', encoding: 'hex'}, - TransferRate: {name: 'transferRate', defaults: 0}, + TransferRate: {name: 'transferRate', defaults: 0, shift: 9}, Signers: {name: 'signers'} }; diff --git a/src/api/common/schemas/get-settings.json b/src/api/common/schemas/get-settings.json index d3c38f89..16c44ece 100644 --- a/src/api/common/schemas/get-settings.json +++ b/src/api/common/schemas/get-settings.json @@ -27,7 +27,12 @@ "walletSize": {"type": ["integer", "null"]}, "messageKey": {"type": "string"}, "domain": {"type": "string"}, - "transferRate": {"type": ["integer", "null"]}, + "transferRate": { + "oneOf": [ + {"type": "null"}, + {"type": "number", "minimum": 1, "maximum": 4.294967295} + ] + }, "signers": {"type": "string"}, "regularKey": {"$ref": "address"} }, diff --git a/src/api/ledger/parse/fields.js b/src/api/ledger/parse/fields.js index 132fcf82..ed006248 100644 --- a/src/api/ledger/parse/fields.js +++ b/src/api/ledger/parse/fields.js @@ -1,11 +1,15 @@ /* @flow */ 'use strict'; +const BigNumber = require('bignumber.js'); const AccountFields = require('./utils').constants.AccountFields; function parseField(info, value) { if (info.encoding === 'hex' && !info.length) { return new Buffer(value, 'hex').toString('ascii'); } + if (info.shift) { + return (new BigNumber(value)).shift(-info.shift).toNumber(); + } return value; } diff --git a/src/api/transaction/settings.js b/src/api/transaction/settings.js index 89646cf0..5d8237ee 100644 --- a/src/api/transaction/settings.js +++ b/src/api/transaction/settings.js @@ -1,7 +1,7 @@ /* @flow */ 'use strict'; -const _ = require('lodash'); const assert = require('assert'); +const BigNumber = require('bignumber.js'); const utils = require('./utils'); const validate = utils.common.validate; const AccountFlagIndices = utils.common.constants.AccountFlagIndices; @@ -64,7 +64,7 @@ function setTransactionFields(transaction, input) { */ function convertTransferRate(transferRate) { - return _.isNumber(transferRate) ? transferRate * 1e9 : transferRate; + return (new BigNumber(transferRate)).shift(9).toNumber(); } function createSettingsTransaction(account, settings) { diff --git a/test/fixtures/api/responses/get-settings.json b/test/fixtures/api/responses/get-settings.json index 847898ae..ba8d7c19 100644 --- a/test/fixtures/api/responses/get-settings.json +++ b/test/fixtures/api/responses/get-settings.json @@ -4,5 +4,5 @@ "emailHash": "23463B99B62A72F26ED677CC556C44E8", "walletLocator": "00000000000000000000000000000000000000000000000000000000DEADBEEF", "domain": "example.com", - "transferRate": 1002000000 + "transferRate": 1.002 }