From 5d6cc78b3714fb2ca58ac671c052d25422ba2439 Mon Sep 17 00:00:00 2001 From: Josh Harvey Date: Sat, 15 Oct 2016 17:27:07 +0300 Subject: [PATCH] fix fiatBalance callers --- lib/plugins.js | 21 ++++++++++++--------- lib/routes.js | 6 +++--- todo.txt | 6 +++++- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/lib/plugins.js b/lib/plugins.js index a03ce040..aa6852ac 100644 --- a/lib/plugins.js +++ b/lib/plugins.js @@ -788,17 +788,20 @@ function checkNotification () { function checkBalances () { const cryptoCodes = exports.getCryptoCodes() + return db.devices() + .then(rows => { + const balances = [] + cryptoCodes.forEach(cryptoCode => { + const minBalance = rows.map(r => exports.fiatBalance(cryptoCode, r.device_id).balance) + .reduce((min, cur) => Math.min(min, cur), Infinity) - const balances = [] - cryptoCodes.forEach(cryptoCode => { - const balanceRec = exports.fiatBalance(cryptoCode) - if (!balanceRec) return - const rec = {fiatBalance: balanceRec.balance, cryptoCode, - fiatCode: deviceCurrency} - balances.push(rec) + if (!balanceRec) return + const rec = {fiatBalance: minBalance, cryptoCode, fiatCode: deviceCurrency} + balances.push(rec) + }) + + return balances }) - - return balances } exports.startCheckingNotification = function startCheckingNotification () { diff --git a/lib/routes.js b/lib/routes.js index d5ff1c28..08f741ea 100644 --- a/lib/routes.js +++ b/lib/routes.js @@ -41,12 +41,12 @@ function buildRates (deviceId) { return rates } -function buildBalances () { +function buildBalances (deviceId) { const cryptoCodes = plugins.getCryptoCodes() const _balances = {} cryptoCodes.forEach(cryptoCode => { - const balanceRec = plugins.fiatBalance(cryptoCode) + const balanceRec = plugins.fiatBalance(cryptoCode, deviceId) if (!balanceRec) return logger.warn('No balance for ' + cryptoCode + ' yet') if (Date.now() - balanceRec.timestamp > STALE_BALANCE) return logger.warn('Stale balance for ' + cryptoCode) _balances[cryptoCode] = balanceRec.balance @@ -69,7 +69,7 @@ function poll (req, res) { let balances = {} rates = buildRates(deviceId) - balances = buildBalances() + balances = buildBalances(deviceId) const config = plugins.getConfig(deviceId) diff --git a/todo.txt b/todo.txt index c46be579..600bd7e3 100644 --- a/todo.txt +++ b/todo.txt @@ -98,4 +98,8 @@ options: configure per machine; configure per crypto/fiat - what to do if validation fails? - need to rethink cachedConfig, don't use global variables [later] -- add notifications to admin + +------------- + +- fiatBalance should really be per machine +