aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/lib/controllers/currency.js
diff options
context:
space:
mode:
authorkumavis <kumavis@users.noreply.github.com>2017-02-08 10:55:26 +0800
committerGitHub <noreply@github.com>2017-02-08 10:55:26 +0800
commitc9aab2084ec7dd8b81b02c9053a8fcbb6038e0b9 (patch)
tree139d5dfad53652b50e0af07c3aec37394b3b654b /app/scripts/lib/controllers/currency.js
parentffe588365cb2dd84906613d13ad8e35b08a08dbb (diff)
parentce57957aa0fdeb79efd6ede8b6e94b8f26131dcf (diff)
downloadtangerine-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.js70
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