diff --git a/lib/ticker.js b/lib/ticker.js index c25e7478..221235e3 100644 --- a/lib/ticker.js +++ b/lib/ticker.js @@ -14,7 +14,8 @@ const FETCH_INTERVAL = 58000 const PEGGED_FIAT_CURRENCIES = { NAD: 'ZAR' } -const FALLBACK_TICKER = 'bitpay' +const getFallbackTicker = ticker => + _.difference(['bitpay', 'kraken', 'bitstamp'], [ticker])[0] const hasRatesOrReject = emsg => r => _.get(['rates'], r) ? r : @@ -31,16 +32,16 @@ const _getRates = (settings, fiatCode, cryptoCode) => Promise.resolve() .then(() => { const ticker = configManager.getWalletSettings(cryptoCode, settings.config).ticker const market = [cryptoCode, fiatCode].join('-') - const isMainFallback = ticker === FALLBACK_TICKER - const emsg = isMainFallback ? - "Failed to get ticker rates" : - "Failed to get rates with configured ticker, trying fallback" + const fallbackTicker = getFallbackTicker(ticker) + const emsg = fallbackTicker ? + "Failed to get rates with configured ticker, trying fallback" : + "Failed to get ticker rates" return get1(market, fiatCode, cryptoCode, ticker, emsg) .catch(err => { logger.error(err) - return isMainFallback ? - lastRate[market] : - get1(market, fiatCode, cryptoCode, FALLBACK_TICKER, "Failed to get rates with fallback ticker") + return fallbackTicker ? + get1(market, fiatCode, cryptoCode, fallbackTicker, "Failed to get rates with fallback ticker") : + lastRate[market] }) .then(hasRatesOrReject("Failed to get ticker rates")) })