From a612fcee64422ca43c470d7832a263f5e490611d Mon Sep 17 00:00:00 2001
From: Kevin Serrano <kevgagser@gmail.com>
Date: Thu, 21 Jul 2016 16:44:50 -0700
Subject: [PATCH] Change function names. Add interval polling for api. Refactor
 functions.

---
 app/scripts/lib/config-manager.js  | 25 ++++++++++++++++++-------
 app/scripts/metamask-controller.js | 14 +++++++++++++-
 test/unit/config-manager-test.js   |  6 +++---
 3 files changed, 34 insertions(+), 11 deletions(-)

diff --git a/app/scripts/lib/config-manager.js b/app/scripts/lib/config-manager.js
index 03f8c054d..14caa80c8 100644
--- a/app/scripts/lib/config-manager.js
+++ b/app/scripts/lib/config-manager.js
@@ -282,19 +282,30 @@ ConfigManager.prototype.getCurrentFiat = function () {
   return ('fiatCurrency' in data) && data.fiatCurrency
 }
 
-ConfigManager.prototype.setConversionRate = function () {
+ConfigManager.prototype.updateConversionRate = function () {
   var data = this.getData()
   return rp(`https://www.cryptonator.com/api/ticker/eth-${data.fiatCurrency}`)
-  .then(function (response) {
+  .then((response) => {
     const parsedResponse = JSON.parse(response)
-    data.conversionRate = Number(parsedResponse.ticker.price)
-    data.conversionDate = new Date(parsedResponse.timestamp).toString()
-    this.setData(data)
-  }.bind(this)).catch(function (err) {
-    console.log('Error in conversion.', err)
+    this.setConversionPrice(parsedResponse.ticker.price)
+    this.setConversionDate(parsedResponse.timestamp)
+  }).catch((err) => {
+    console.error('Error in conversion.', err)
   })
 }
 
+ConfigManager.prototype.setConversionPrice = function(price) {
+  var data = this.getData()
+  data.conversionRate = Number(parsedResponse.ticker.price)
+  this.setData(data)
+}
+
+ConfigManager.prototype.setConversionDate = function (datestring) {
+  var data = this.getData()
+  data.conversionDate = datestring
+  this.setData(data)
+}
+
 ConfigManager.prototype.getConversionRate = function () {
   var data = this.getData()
   return ('conversionRate' in data) && data.conversionRate
diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js
index 99769fa3c..e121fad6a 100644
--- a/app/scripts/metamask-controller.js
+++ b/app/scripts/metamask-controller.js
@@ -21,6 +21,7 @@ module.exports = class MetamaskController {
     this.idStore.setStore(this.ethStore)
     this.messageManager = messageManager
     this.publicConfigStore = this.initPublicConfigStore()
+    this.scheduleConversionInterval()
   }
 
   getState () {
@@ -241,7 +242,8 @@ module.exports = class MetamaskController {
   setCurrentFiat (fiat, cb) {
     try {
       this.configManager.setCurrentFiat(fiat)
-      this.configManager.setConversionRate()
+      this.configManager.updateConversionRate()
+      this.scheduleConversionInterval()
       const data = {
         conversionRate: this.configManager.getConversionRate,
         currentFiat: this.configManager.getCurrentFiat,
@@ -253,6 +255,16 @@ module.exports = class MetamaskController {
     }
   }
 
+  scheduleConversionInterval () {
+    if (this.conversionInterval) {
+      clearInterval(this.conversionInterval)
+    }
+    this.conversionInterval = setInterval(() => {
+      console.log("Updated currency!")
+      this.configManager.updateConversionRate()
+    }, 1000)
+  }
+
   // called from popup
   setRpcTarget (rpcTarget) {
     this.configManager.setRpcTarget(rpcTarget)
diff --git a/test/unit/config-manager-test.js b/test/unit/config-manager-test.js
index cf8362108..eba663975 100644
--- a/test/unit/config-manager-test.js
+++ b/test/unit/config-manager-test.js
@@ -44,14 +44,14 @@ describe('config-manager', function() {
       })
     })
 
-    describe('#setConversionRate', function() {
+    describe('#updateConversionRate', function() {
       it('should retrieve an update for ETH to USD and set it in memory', function(done) {
         this.timeout(15000)
         assert.equal(configManager.getConversionRate(), false)
         var promise = new Promise(
           function (resolve, reject) {
             configManager.setCurrentFiat('usd')
-            configManager.setConversionRate().then(function() {
+            configManager.updateConversionRate().then(function() {
               resolve()
             })
         })
@@ -72,7 +72,7 @@ describe('config-manager', function() {
         var promise = new Promise(
           function (resolve, reject) {
             configManager.setCurrentFiat('jpy')
-            configManager.setConversionRate().then(function() {
+            configManager.updateConversionRate().then(function() {
               resolve()
             })
         })