diff options
author | kumavis <kumavis@users.noreply.github.com> | 2017-02-08 10:55:26 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-08 10:55:26 +0800 |
commit | c9aab2084ec7dd8b81b02c9053a8fcbb6038e0b9 (patch) | |
tree | 139d5dfad53652b50e0af07c3aec37394b3b654b /app/scripts/lib/controllers/currency.js | |
parent | ffe588365cb2dd84906613d13ad8e35b08a08dbb (diff) | |
parent | ce57957aa0fdeb79efd6ede8b6e94b8f26131dcf (diff) | |
download | tangerine-wallet-browser-c9aab2084ec7dd8b81b02c9053a8fcbb6038e0b9.tar tangerine-wallet-browser-c9aab2084ec7dd8b81b02c9053a8fcbb6038e0b9.tar.gz tangerine-wallet-browser-c9aab2084ec7dd8b81b02c9053a8fcbb6038e0b9.tar.bz2 tangerine-wallet-browser-c9aab2084ec7dd8b81b02c9053a8fcbb6038e0b9.tar.lz tangerine-wallet-browser-c9aab2084ec7dd8b81b02c9053a8fcbb6038e0b9.tar.xz tangerine-wallet-browser-c9aab2084ec7dd8b81b02c9053a8fcbb6038e0b9.tar.zst tangerine-wallet-browser-c9aab2084ec7dd8b81b02c9053a8fcbb6038e0b9.zip |
Merge pull request #1094 from MetaMask/dev
Version 3.2.0
Diffstat (limited to 'app/scripts/lib/controllers/currency.js')
-rw-r--r-- | app/scripts/lib/controllers/currency.js | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/app/scripts/lib/controllers/currency.js b/app/scripts/lib/controllers/currency.js new file mode 100644 index 000000000..c4904f8ac --- /dev/null +++ b/app/scripts/lib/controllers/currency.js @@ -0,0 +1,70 @@ +const ObservableStore = require('obs-store') +const extend = require('xtend') + +// every ten minutes +const POLLING_INTERVAL = 600000 + +class CurrencyController { + + constructor (opts = {}) { + const initState = extend({ + currentCurrency: 'USD', + conversionRate: 0, + conversionDate: 'N/A', + }, opts.initState) + this.store = new ObservableStore(initState) + } + + // + // PUBLIC METHODS + // + + getCurrentCurrency () { + return this.store.getState().currentCurrency + } + + setCurrentCurrency (currentCurrency) { + this.store.updateState({ currentCurrency }) + } + + getConversionRate () { + return this.store.getState().conversionRate + } + + setConversionRate (conversionRate) { + this.store.updateState({ conversionRate }) + } + + getConversionDate () { + return this.store.getState().conversionDate + } + + setConversionDate (conversionDate) { + this.store.updateState({ conversionDate }) + } + + updateConversionRate () { + const currentCurrency = this.getCurrentCurrency() + return fetch(`https://www.cryptonator.com/api/ticker/eth-${currentCurrency}`) + .then(response => response.json()) + .then((parsedResponse) => { + this.setConversionRate(Number(parsedResponse.ticker.price)) + this.setConversionDate(Number(parsedResponse.timestamp)) + }).catch((err) => { + console.warn('MetaMask - Failed to query currency conversion.') + this.setConversionRate(0) + this.setConversionDate('N/A') + }) + } + + scheduleConversionInterval () { + if (this.conversionInterval) { + clearInterval(this.conversionInterval) + } + this.conversionInterval = setInterval(() => { + this.updateConversionRate() + }, POLLING_INTERVAL) + } +} + +module.exports = CurrencyController |