diff --git a/app/browser/api/ledger.js b/app/browser/api/ledger.js index 13f0415bf49..e9f43ba2820 100644 --- a/app/browser/api/ledger.js +++ b/app/browser/api/ledger.js @@ -1005,7 +1005,7 @@ const onWalletRecovery = (state, error, result) => { // we reset ledgerInfo.error to what it was before (likely null) // if ledgerInfo.error is not null, the wallet info will not display in UI // logError sets ledgerInfo.error, so we must we clear it or UI will show an error - state = logError(error, 'recoveryWallet') + state = logError(state, error, 'recoveryWallet') state = ledgerState.setInfoProp(state, 'error', existingLedgerError) state = ledgerState.setRecoveryStatus(state, false) } else { @@ -1526,6 +1526,8 @@ const generatePaymentData = (state) => { case 'LTC': url = `litecoin:${address}` break + default: + return } try { @@ -1539,7 +1541,7 @@ const generatePaymentData = (state) => { appActions.onLedgerQRGenerated(index, paymentIMG) }) } catch (ex) { - console.error('qr.imageSync error: ' + ex.toString()) + console.error('qr.imageSync (for url ' + url + ') error: ' + ex.toString()) } }) @@ -1563,7 +1565,6 @@ const getPaymentInfo = (state) => { client.getWalletProperties(amount, currency, function (err, body) { if (err) { - logError(err, 'getWalletProperties') return } @@ -1579,30 +1580,7 @@ const getPaymentInfo = (state) => { } const onWalletProperties = (state, body) => { - let newInfo = { - probi: body.get('probi'), - addresses: body.get('addresses') - } - - state = ledgerState.mergeInfoProp(state, newInfo) - - const info = ledgerState.getInfoProps(state) - - const amount = info.get('balance') - const currency = info.getIn(['bravery', 'fee', 'currency']) - - if (currency) { - const rate = body.getIn(['rates', currency]) - state = ledgerState.setInfoProp(state, 'currentRate', rate) - - if (amount) { - if (rate) { - const converted = new BigNumber(newInfo.probi.toString()).times(new BigNumber(rate.toString())).toFixed(2) - state = ledgerState.setInfoProp(state, 'converted', converted) - } - } - } - + state = ledgerState.setInfoProp(state, 'addresses', body.get('addresses')) state = generatePaymentData(state) return state @@ -1654,6 +1632,7 @@ const onBraveryProperties = (state, error, result) => { } const getBalance = (state) => { + console.log('getBalance') if (!client) return const addresses = ledgerState.getInfoProp(state, 'addresses') @@ -1670,13 +1649,47 @@ const getBalance = (state) => { if (err) { return console.warn('ledger balance warning: ' + JSON.stringify(err, null, 2)) } - appActions.onLedgerBalanceReceived(result.balance, result.unconfirmed) + appActions.onLedgerBalanceReceived(result) }) } -const balanceReceived = (state, balance, unconfirmed) => { - state = ledgerState.setInfoProp(state, 'balance', balance) +// TODO we are still not getting this data from bat-client +const balanceReceived = (state, result) => { + // Balance + const balance = parseFloat(result.get('balance')) + if (balance > 0) { + state = ledgerState.setInfoProp(state, 'balance', balance) + } + + // Rates + const rates = result.get('rates') + if (rates != null) { + state = ledgerState.setInfoProp(state, 'rates', rates) + } + + // Probi + const probi = parseFloat(result.get('probi')) + if (probi > 0) { + state = ledgerState.setInfoProp(state, 'probi', probi) + + const info = ledgerState.getInfoProps(state) + const amount = info.get('balance') + const infoRates = info.get('rates') + const currency = info.getIn(['bravery', 'fee', 'currency']) + + if (currency) { + const rate = infoRates.get(currency) + state = ledgerState.setInfoProp(state, 'currentRate', rate) + + if (amount && rate) { + const converted = new BigNumber(probi.toString()).times(new BigNumber(rate.toString())).toFixed(2) + state = ledgerState.setInfoProp(state, 'converted', converted) + } + } + } + // unconfirmed amount + const unconfirmed = parseFloat(result.get('unconfirmed')) if (unconfirmed > 0) { const result = (unconfirmed / 1e8).toFixed(4) if (ledgerState.getInfoProp(state, 'unconfirmed') === result) { @@ -1917,7 +1930,7 @@ const onInitRead = (state, parsedData) => { } const onTimeUntilReconcile = (state, stateResult) => { - state = getStateInfo(stateResult) + state = getStateInfo(state, stateResult.toJS()) // TODO optimize muonWriter(stateResult) return state diff --git a/app/browser/reducers/ledgerReducer.js b/app/browser/reducers/ledgerReducer.js index 529ce8b67c8..fda35906d43 100644 --- a/app/browser/reducers/ledgerReducer.js +++ b/app/browser/reducers/ledgerReducer.js @@ -249,7 +249,7 @@ const ledgerReducer = (state, action, immutableAction) => { } case appConstants.APP_ON_LEDGER_BALANCE_RECEIVED: { - state = ledgerApi.balanceReceived(state, action.get('balance'), action.get('unconfirmed')) + state = ledgerApi.balanceReceived(state, action.get('result')) break } case appConstants.APP_ON_WALLET_PROPERTIES: diff --git a/app/browser/tabs.js b/app/browser/tabs.js index d88651670e4..87ab493c740 100644 --- a/app/browser/tabs.js +++ b/app/browser/tabs.js @@ -182,14 +182,16 @@ const updateAboutDetails = (tab, tabValue) => { // TODO save this into values into the sate so that we don't call this app action on every state change // this should be saved in app state when windows will be refactored #11151 + /* if (url === 'about:preferences#payments') { tab.on('destroyed', () => { appActions.ledgerPaymentsPresent(tabValue.get('tabId'), false) }) - appActions.ledgerPaymentsPresent(tabValue.get('tabId'), false) + appActions.ledgerPaymentsPresent(tabValue.get('tabId'), true) } else { appActions.ledgerPaymentsPresent(tabValue.get('tabId'), false) } + */ if (location === 'about:preferences' || location === 'about:contributions' || location === aboutUrls.get('about:contributions')) { const ledgerData = ledgerInfo diff --git a/app/common/lib/ledgerUtil.js b/app/common/lib/ledgerUtil.js index a7dcd194eb8..0ccb2b213ba 100644 --- a/app/common/lib/ledgerUtil.js +++ b/app/common/lib/ledgerUtil.js @@ -87,7 +87,7 @@ const formatCurrentBalance = (ledgerData) => { converted = Number.parseFloat(ledgerData.get('converted')) || 0 } - balance = Math.floor(balance) + balance = balance.toFixed(2) converted = converted.toFixed(2) return `${balance} BAT (${converted} ${currency})` diff --git a/app/extensions.js b/app/extensions.js index 43251873f62..08ffb271108 100644 --- a/app/extensions.js +++ b/app/extensions.js @@ -170,7 +170,7 @@ let generateBraveManifest = () => { 'form-action': '\'none\'', 'style-src': '\'self\' \'unsafe-inline\'', 'img-src': '* data: file://*', - 'frame-src': '\'self\' https://buy.coinbase.com https://brave.com' + 'frame-src': '\'self\' https://brave.com' } if (process.env.NODE_ENV === 'development') { diff --git a/app/renderer/components/preferences/payment/enabledContent.js b/app/renderer/components/preferences/payment/enabledContent.js index b941755cd8a..59d5238efe4 100644 --- a/app/renderer/components/preferences/payment/enabledContent.js +++ b/app/renderer/components/preferences/payment/enabledContent.js @@ -183,9 +183,13 @@ class EnabledContent extends ImmutableComponent { value={getSetting(settings.PAYMENTS_CONTRIBUTION_AMOUNT, this.props.settings)} onChange={changeSetting.bind(null, this.props.onChangeSetting, settings.PAYMENTS_CONTRIBUTION_AMOUNT)}> { - [25, 50, 75, 100].map((amount) => - - ) + [25, 50, 75, 100].map((amount) => { + let alternative = '' + if (ledgerData.has('currentRate')) { + alternative = `(${batToCurrencyString(amount, ledgerData)})` + } + return + }) } diff --git a/app/sessionStore.js b/app/sessionStore.js index 67dd3df224f..91554a2dfb2 100644 --- a/app/sessionStore.js +++ b/app/sessionStore.js @@ -414,6 +414,16 @@ module.exports.cleanAppData = (immutableData, isShutdown) => { immutableData = immutableData.deleteIn(['extensions', extensionId, 'tabs']) }) } + + // Leader cleanup + if (immutableData.has('pageData')) { + immutableData = immutableData.delete('pageData') + } + + if (immutableData.hasIn(['ledger', 'locations'])) { + immutableData = immutableData.deleteIn(['ledger', 'locations']) + } + return immutableData } diff --git a/js/actions/appActions.js b/js/actions/appActions.js index 34826e637a0..3f71e941a82 100644 --- a/js/actions/appActions.js +++ b/js/actions/appActions.js @@ -1606,11 +1606,10 @@ const appActions = { }) }, - onLedgerBalanceReceived: function (balance, unconfirmed) { + onLedgerBalanceReceived: function (result) { dispatch({ actionType: appConstants.APP_ON_LEDGER_BALANCE_RECEIVED, - balance, - unconfirmed + result }) }, diff --git a/package-lock.json b/package-lock.json index a0d53e1aad4..8bc41694869 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1441,12 +1441,13 @@ } }, "bat-client": { - "version": "0.9.12", - "resolved": "https://registry.npmjs.org/bat-client/-/bat-client-0.9.12.tgz", - "integrity": "sha1-hUICQ0JhdwoENKKgPFV8snjfdAM=", + "version": "0.9.14", + "resolved": "https://registry.npmjs.org/bat-client/-/bat-client-0.9.14.tgz", + "integrity": "sha1-4avXQ8KaChL5QKmlimP9loEb0PM=", "requires": { + "bat-balance": "0.9.6", "bat-publisher": "0.9.4", - "bitgo": "4.6.0", + "bitgo": "4.7.0", "http-request-signature": "github:uphold/http-request-signature#fcbc1b4ff5c8c9e38553c86051d9ce61e6b00aea", "joi": "11.1.1", "json-stable-stringify": "1.0.1", @@ -1458,61 +1459,113 @@ "uuid": "3.1.0" }, "dependencies": { - "big.js": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", - "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=" + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, - "bitgo": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/bitgo/-/bitgo-4.6.0.tgz", - "integrity": "sha1-o9yXie9gsciecf8n5/oyeAQo2ck=", - "requires": { - "argparse": "0.1.16", - "assert": "0.4.9", - "bcashjs-lib": "git+https://github.com/BitGo/bcashjs-lib.git#a49702b12f06729ab80756d1c6dba880f0c64295", - "big.js": "3.1.3", - "bigi": "1.4.0", - "bignumber.js": "4.0.4", - "bitcoinjs-lib": "2.1.4", - "bluebird": "3.5.0", - "body-parser": "1.17.2", - "bs58": "2.0.1", - "bs58check": "1.0.4", - "create-hmac": "1.1.6", - "ecurve": "1.0.5", - "eol": "0.5.0", - "ethereumjs-abi": "0.6.4", - "ethereumjs-util": "4.4.1", - "express": "4.15.5", - "http-proxy": "1.11.1", - "lodash": "4.13.1", - "minimist": "0.2.0", - "moment": "2.18.1", - "morgan": "1.5.3", - "prova-lib": "0.2.8", - "ripple-lib": "0.17.7", - "sanitize-html": "1.13.0", - "secp256k1": "3.2.5", - "superagent": "3.5.2", - "superagent-proxy": "1.0.2", - "underscore.string": "2.4.0" + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.0" } }, - "form-data": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", - "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "chalk": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", + "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.4.0" } }, - "formidable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.1.1.tgz", - "integrity": "sha1-lriIb3w8NQi5Mta9cMTTqI818ak=" + "color-convert": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "requires": { + "color-name": "1.1.3" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", + "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + }, + "eslint": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.8.0.tgz", + "integrity": "sha1-Ip7w41Tg5h2DfHqA/fuoJeGZgV4=", + "requires": { + "ajv": "5.2.3", + "babel-code-frame": "6.26.0", + "chalk": "2.1.0", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.0.0", + "eslint-scope": "3.7.1", + "espree": "3.5.1", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.5", + "imurmurhash": "0.1.4", + "inquirer": "3.0.6", + "is-resolvable": "1.0.0", + "js-yaml": "3.10.0", + "json-stable-stringify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.4.1", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.2.0" + } + }, + "http-request-signature": { + "version": "github:uphold/http-request-signature#fcbc1b4ff5c8c9e38553c86051d9ce61e6b00aea", + "requires": { + "debugnyan": "2.0.1", + "eslint": "4.8.0", + "lodash": "4.17.4", + "standard-http-error": "2.0.1", + "validator.js": "2.0.3", + "validator.js-asserts": "3.1.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "isarray": { "version": "1.0.0", @@ -1529,58 +1582,60 @@ "topo": "2.0.2" } }, - "lodash": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.13.1.tgz", - "integrity": "sha1-g+SxCRP0hJbU0W/sSlYK8u50S2g=" + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==" }, - "minimist": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.2.0.tgz", - "integrity": "sha1-Tf/lJdriuGTGbC4jxicdev3s784=" + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=" }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "requires": { + "is-fullwidth-code-point": "2.0.0" + } }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" } }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "safe-buffer": "5.1.1" + "ansi-regex": "3.0.0" } }, - "superagent": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.5.2.tgz", - "integrity": "sha1-M2GjlxVnUEw1EGOr6q4PqiPb8/g=", + "supports-color": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", + "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", "requires": { - "component-emitter": "1.2.1", - "cookiejar": "2.0.6", - "debug": "2.6.9", - "extend": "3.0.0", - "form-data": "2.3.1", - "formidable": "1.1.1", - "methods": "1.1.2", - "mime": "1.3.4", - "qs": "6.5.1", - "readable-stream": "2.3.3" + "has-flag": "2.0.0" + } + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "requires": { + "ajv": "5.2.3", + "ajv-keywords": "2.1.0", + "chalk": "2.1.0", + "lodash": "4.17.4", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" } }, "tweetnacl": { @@ -1822,6 +1877,123 @@ "resolved": "https://registry.npmjs.org/bitfield/-/bitfield-1.1.2.tgz", "integrity": "sha1-pUd/AOM/Knbtwgmq8mvwk5SjeM8=" }, + "bitgo": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/bitgo/-/bitgo-4.7.0.tgz", + "integrity": "sha512-ibPNges48EnIvjGBR7GSTxq9wh5oaBJSAnC9kmbgG4V8V1QmHwue9cGp0VENA5oqZSvaO9bZZ+o3DVAB6T7pfg==", + "requires": { + "argparse": "0.1.16", + "assert": "0.4.9", + "bcashjs-lib": "git+https://github.com/BitGo/bcashjs-lib.git#a49702b12f06729ab80756d1c6dba880f0c64295", + "big.js": "3.1.3", + "bigi": "1.4.0", + "bignumber.js": "4.0.4", + "bitcoinjs-lib": "2.1.4", + "bluebird": "3.5.0", + "body-parser": "1.17.2", + "bs58": "2.0.1", + "bs58check": "1.0.4", + "create-hmac": "1.1.6", + "ecurve": "1.0.5", + "eol": "0.5.0", + "ethereumjs-abi": "0.6.4", + "ethereumjs-util": "4.4.1", + "express": "4.15.5", + "http-proxy": "1.11.1", + "lodash": "4.13.1", + "minimist": "0.2.0", + "moment": "2.18.1", + "morgan": "1.5.3", + "prova-lib": "0.2.8", + "ripple-lib": "0.17.7", + "sanitize-html": "1.13.0", + "secp256k1": "3.2.5", + "superagent": "3.5.2", + "superagent-proxy": "1.0.2", + "underscore.string": "2.4.0" + }, + "dependencies": { + "big.js": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", + "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=" + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "formidable": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.1.1.tgz", + "integrity": "sha1-lriIb3w8NQi5Mta9cMTTqI818ak=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "lodash": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.13.1.tgz", + "integrity": "sha1-g+SxCRP0hJbU0W/sSlYK8u50S2g=" + }, + "minimist": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.2.0.tgz", + "integrity": "sha1-Tf/lJdriuGTGbC4jxicdev3s784=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "superagent": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.5.2.tgz", + "integrity": "sha1-M2GjlxVnUEw1EGOr6q4PqiPb8/g=", + "requires": { + "component-emitter": "1.2.1", + "cookiejar": "2.0.6", + "debug": "2.6.9", + "extend": "3.0.0", + "form-data": "2.3.1", + "formidable": "1.1.1", + "methods": "1.1.2", + "mime": "1.3.4", + "qs": "6.5.1", + "readable-stream": "2.3.3" + } + } + } + }, "bittorrent-dht": { "version": "7.6.0", "resolved": "https://registry.npmjs.org/bittorrent-dht/-/bittorrent-dht-7.6.0.tgz", @@ -8749,177 +8921,6 @@ } } }, - "http-request-signature": { - "version": "github:uphold/http-request-signature#fcbc1b4ff5c8c9e38553c86051d9ce61e6b00aea", - "requires": { - "debugnyan": "2.0.1", - "eslint": "4.8.0", - "lodash": "4.17.4", - "standard-http-error": "2.0.1", - "validator.js": "2.0.3", - "validator.js-asserts": "3.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" - } - }, - "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", - "requires": { - "color-name": "1.1.3" - } - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", - "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - }, - "eslint": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.8.0.tgz", - "integrity": "sha1-Ip7w41Tg5h2DfHqA/fuoJeGZgV4=", - "requires": { - "ajv": "5.2.3", - "babel-code-frame": "6.26.0", - "chalk": "2.1.0", - "concat-stream": "1.6.0", - "cross-spawn": "5.1.0", - "debug": "3.1.0", - "doctrine": "2.0.0", - "eslint-scope": "3.7.1", - "espree": "3.5.1", - "esquery": "1.0.0", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "functional-red-black-tree": "1.0.1", - "glob": "7.1.2", - "globals": "9.18.0", - "ignore": "3.3.5", - "imurmurhash": "0.1.4", - "inquirer": "3.0.6", - "is-resolvable": "1.0.0", - "js-yaml": "3.10.0", - "json-stable-stringify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "7.0.0", - "progress": "2.0.0", - "require-uncached": "1.0.3", - "semver": "5.4.1", - "strip-ansi": "4.0.0", - "strip-json-comments": "2.0.1", - "table": "4.0.2", - "text-table": "0.2.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==" - }, - "progress": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", - "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=" - }, - "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", - "requires": { - "is-fullwidth-code-point": "2.0.0" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "3.0.0" - } - }, - "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", - "requires": { - "has-flag": "2.0.0" - } - }, - "table": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", - "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", - "requires": { - "ajv": "5.2.3", - "ajv-keywords": "2.1.0", - "chalk": "2.1.0", - "lodash": "4.17.4", - "slice-ansi": "1.0.0", - "string-width": "2.1.1" - } - } - } - }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", diff --git a/package.json b/package.json index 5d3f114dad4..39661ebfd1b 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "aphrodite": "1.1.0", "async": "^2.0.1", "bat-balance": "^0.9.6", - "bat-client": "^0.9.0", + "bat-client": "^0.9.14", "bat-publisher": "^0.9.0", "bignumber.js": "^4.0.4", "bloodhound-js": "brave/bloodhound", diff --git a/test/unit/app/browser/reducers/ledgerReducerTest.js b/test/unit/app/browser/reducers/ledgerReducerTest.js index f697fd776a3..c7c6491d34d 100644 --- a/test/unit/app/browser/reducers/ledgerReducerTest.js +++ b/test/unit/app/browser/reducers/ledgerReducerTest.js @@ -282,20 +282,24 @@ describe('ledgerReducer unit tests', function () { }) describe('APP_ON_LEDGER_BALANCE_RECEIVED', function () { - let balanceReceivedSpy + let balanceReceivedSpy, result before(function () { + result = { + balance: 10, + unconfirmed: 20, + probi: 10.0000000000 + } balanceReceivedSpy = sinon.spy(fakeLedgerApi, 'balanceReceived') returnedState = ledgerReducer(appState, Immutable.fromJS({ actionType: appConstants.APP_ON_LEDGER_BALANCE_RECEIVED, - balance: 10, - unconfirmed: 20 + result: result })) }) after(function () { balanceReceivedSpy.restore() }) it('calls ledgerApi.balanceReceived', function () { - assert(balanceReceivedSpy.withArgs(appState, 10, 20).calledOnce) + assert(balanceReceivedSpy.withArgs(appState, Immutable.fromJS(result)).calledOnce) }) it('returns a modified state', function () { assert.notDeepEqual(returnedState, appState)