From aac810b1eb3414c907010c30537b7014f303d20f Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Thu, 21 Jul 2016 08:47:03 -0700 Subject: Progress on config manager. Plus tests. --- app/scripts/lib/config-manager.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'app/scripts') diff --git a/app/scripts/lib/config-manager.js b/app/scripts/lib/config-manager.js index caaae8a75..a5b319325 100644 --- a/app/scripts/lib/config-manager.js +++ b/app/scripts/lib/config-manager.js @@ -1,6 +1,7 @@ const Migrator = require('pojo-migrator') const MetamaskConfig = require('../config.js') const migrations = require('./migrations') +const rp = require('request-promise') const TESTNET_RPC = MetamaskConfig.network.testnet const MAINNET_RPC = MetamaskConfig.network.mainnet @@ -270,3 +271,29 @@ ConfigManager.prototype.getConfirmed = function () { return ('isConfirmed' in data) && data.isConfirmed } +ConfigManager.prototype.setCurrentFiat = function (currency) { + var data = this.getData() + data.fiatCurrency = currency + this.setData(data) +} + +ConfigManager.prototype.getCurrentFiat = function () { + var data = this.getData() + return ('fiatCurrency' in data) && data.fiatCurrency +} + +ConfigManager.prototype.setConversionRate = function () { + var data = this.getData() + return rp(`https://www.cryptonator.com/api/ticker/eth-${data.fiatCurrency}`) + .then(function (response) { + data.conversionRate = Number(JSON.parse(response).ticker.price) + this.setData(data) + }.bind(this)).catch(function (err) { + console.log('Error in conversion.', err) + }) +} + +ConfigManager.prototype.getConversionRate = function () { + var data = this.getData() + return ('conversionRate' in data) && data.conversionRate +} -- cgit From 491b9cddc5fe1a7d0899d29c9a53aa71f04b9b28 Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Thu, 21 Jul 2016 09:30:58 -0700 Subject: Add fiat actions to metamask controllere and actions. --- app/scripts/metamask-controller.js | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'app/scripts') diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 63970799d..bcf5203fe 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -39,6 +39,7 @@ module.exports = class MetamaskController { setProviderType: this.setProviderType.bind(this), useEtherscanProvider: this.useEtherscanProvider.bind(this), agreeToDisclaimer: this.agreeToDisclaimer.bind(this), + setCurrentFiat: this.setCurrentFiat.bind(this), // forward directly to idStore createNewVault: idStore.createNewVault.bind(idStore), recoverFromSeed: idStore.recoverFromSeed.bind(idStore), @@ -236,6 +237,15 @@ module.exports = class MetamaskController { } } + setCurrentFiat (fiat, cb) { + try { + this.configManager.setCurrentFiat(fiat) + this.configManager.setConversionRate() + } catch (e) { + cb(e) + } + } + // called from popup setRpcTarget (rpcTarget) { this.configManager.setRpcTarget(rpcTarget) -- cgit From 4a9d5b1c258912acedd6f1e89fb632526d9c910b Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Thu, 21 Jul 2016 10:15:34 -0700 Subject: Add data field to pass up parameters up to reducer. --- app/scripts/lib/idStore.js | 4 +++- app/scripts/metamask-controller.js | 7 ++++++- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'app/scripts') diff --git a/app/scripts/lib/idStore.js b/app/scripts/lib/idStore.js index 2c8e9108b..94aaad1d1 100644 --- a/app/scripts/lib/idStore.js +++ b/app/scripts/lib/idStore.js @@ -99,6 +99,8 @@ IdentityStore.prototype.getState = function () { unconfMsgs: messageManager.unconfirmedMsgs(), messages: messageManager.getMsgList(), selectedAddress: configManager.getSelectedAccount(), + currentFiat: configManager.getCurrentFiat(), + currentConversion: configManager.getConversionRate(), })) } @@ -199,7 +201,7 @@ IdentityStore.prototype.addUnconfirmedTransaction = function (txParams, onTxDone time: time, status: 'unconfirmed', } - + console.log('addUnconfirmedTransaction:', txData) // keep the onTxDoneCb around for after approval/denial (requires user interaction) diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index bcf5203fe..1b3b69932 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -241,8 +241,13 @@ module.exports = class MetamaskController { try { this.configManager.setCurrentFiat(fiat) this.configManager.setConversionRate() + const data = { + conversionRate: this.configManager.getConversionRate, + currentFiat: this.configManager.getCurrentFiat, + } + cb(data) } catch (e) { - cb(e) + cb(null,e) } } -- cgit From 66941f0808cd8052bd5a90b10900e49e071ba727 Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Thu, 21 Jul 2016 13:33:22 -0700 Subject: Provide date access. --- app/scripts/lib/config-manager.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'app/scripts') diff --git a/app/scripts/lib/config-manager.js b/app/scripts/lib/config-manager.js index a5b319325..cd0d37e98 100644 --- a/app/scripts/lib/config-manager.js +++ b/app/scripts/lib/config-manager.js @@ -286,7 +286,9 @@ ConfigManager.prototype.setConversionRate = function () { var data = this.getData() return rp(`https://www.cryptonator.com/api/ticker/eth-${data.fiatCurrency}`) .then(function (response) { - data.conversionRate = Number(JSON.parse(response).ticker.price) + const parsedResponse = JSON.parse(response) + data.conversionRate = Number(parsedResponse.ticker.price) + data.conversionLastUpdated = new Date(parsedResponse.timestamp).toString() this.setData(data) }.bind(this)).catch(function (err) { console.log('Error in conversion.', err) @@ -297,3 +299,8 @@ ConfigManager.prototype.getConversionRate = function () { var data = this.getData() return ('conversionRate' in data) && data.conversionRate } + +ConfigManager.prototype.getConversionLastUpdated = function () { + var data = this.getData() + return ('conversionLastUpdated' in data) && data.conversionLastUpdated +} -- cgit From 716e65424d2ba490a384bfc1f0591685eb2867fa Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Thu, 21 Jul 2016 14:08:26 -0700 Subject: Add date access throughout the data flow. --- app/scripts/lib/config-manager.js | 6 +++--- app/scripts/lib/idStore.js | 3 ++- app/scripts/metamask-controller.js | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) (limited to 'app/scripts') diff --git a/app/scripts/lib/config-manager.js b/app/scripts/lib/config-manager.js index cd0d37e98..03f8c054d 100644 --- a/app/scripts/lib/config-manager.js +++ b/app/scripts/lib/config-manager.js @@ -288,7 +288,7 @@ ConfigManager.prototype.setConversionRate = function () { .then(function (response) { const parsedResponse = JSON.parse(response) data.conversionRate = Number(parsedResponse.ticker.price) - data.conversionLastUpdated = new Date(parsedResponse.timestamp).toString() + data.conversionDate = new Date(parsedResponse.timestamp).toString() this.setData(data) }.bind(this)).catch(function (err) { console.log('Error in conversion.', err) @@ -300,7 +300,7 @@ ConfigManager.prototype.getConversionRate = function () { return ('conversionRate' in data) && data.conversionRate } -ConfigManager.prototype.getConversionLastUpdated = function () { +ConfigManager.prototype.getConversionDate = function () { var data = this.getData() - return ('conversionLastUpdated' in data) && data.conversionLastUpdated + return ('conversionDate' in data) && data.conversionDate } diff --git a/app/scripts/lib/idStore.js b/app/scripts/lib/idStore.js index 94aaad1d1..b6c136b8f 100644 --- a/app/scripts/lib/idStore.js +++ b/app/scripts/lib/idStore.js @@ -100,7 +100,8 @@ IdentityStore.prototype.getState = function () { messages: messageManager.getMsgList(), selectedAddress: configManager.getSelectedAccount(), currentFiat: configManager.getCurrentFiat(), - currentConversion: configManager.getConversionRate(), + conversionRate: configManager.getConversionRate(), + conversionDate: configManager.getConversionDate(), })) } diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 7bf8fd5ea..99769fa3c 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -245,6 +245,7 @@ module.exports = class MetamaskController { const data = { conversionRate: this.configManager.getConversionRate, currentFiat: this.configManager.getCurrentFiat, + conversionDate: this.configManager.getConversionDate, } cb(data) } catch (e) { -- cgit From a612fcee64422ca43c470d7832a263f5e490611d Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Thu, 21 Jul 2016 16:44:50 -0700 Subject: Change function names. Add interval polling for api. Refactor functions. --- app/scripts/lib/config-manager.js | 25 ++++++++++++++++++------- app/scripts/metamask-controller.js | 14 +++++++++++++- 2 files changed, 31 insertions(+), 8 deletions(-) (limited to 'app/scripts') 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) -- cgit From 22528002e1edef84ade67d5bc30b2580e6542c05 Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Fri, 22 Jul 2016 10:15:39 -0700 Subject: Linting! --- app/scripts/lib/config-manager.js | 2 +- app/scripts/metamask-controller.js | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) (limited to 'app/scripts') diff --git a/app/scripts/lib/config-manager.js b/app/scripts/lib/config-manager.js index 14caa80c8..e0f389ed4 100644 --- a/app/scripts/lib/config-manager.js +++ b/app/scripts/lib/config-manager.js @@ -296,7 +296,7 @@ ConfigManager.prototype.updateConversionRate = function () { ConfigManager.prototype.setConversionPrice = function(price) { var data = this.getData() - data.conversionRate = Number(parsedResponse.ticker.price) + data.conversionRate = Number(price) this.setData(data) } diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index e121fad6a..0537bda97 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -251,7 +251,7 @@ module.exports = class MetamaskController { } cb(data) } catch (e) { - cb(null,e) + cb(null, e) } } @@ -260,7 +260,9 @@ module.exports = class MetamaskController { clearInterval(this.conversionInterval) } this.conversionInterval = setInterval(() => { - console.log("Updated currency!") + console.log('=================') + console.log('Updated currency!') + console.log('=================') this.configManager.updateConversionRate() }, 1000) } -- cgit From 260de6532c50dceebee93acab70a3319afdb16fb Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Fri, 5 Aug 2016 12:18:44 -0700 Subject: Get fiat numbers rendering on tooltip. Need to find way to create line breaks. --- app/scripts/lib/config-manager.js | 6 ------ 1 file changed, 6 deletions(-) (limited to 'app/scripts') diff --git a/app/scripts/lib/config-manager.js b/app/scripts/lib/config-manager.js index 9c37a2c6f..49eb7be4f 100644 --- a/app/scripts/lib/config-manager.js +++ b/app/scripts/lib/config-manager.js @@ -293,12 +293,6 @@ ConfigManager.prototype.updateConversionRate = function () { const parsedResponse = JSON.parse(response) this.setConversionPrice(parsedResponse.ticker.price) this.setConversionDate(parsedResponse.timestamp) - console.log('=================') - console.log('Updated currency!') - console.log('=================') - console.log(this.getConversionRate()) - console.log(this.getCurrentFiat()) - console.log(parsedResponse) }).catch((err) => { console.error('Error in conversion.', err) }) -- cgit From 637d3978b716a7f32cf603b70155d8db90509af2 Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Tue, 9 Aug 2016 16:33:58 -0700 Subject: Fix default value. Add loading indication for async. --- app/scripts/metamask-controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/scripts') diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 45305ee8f..1550f0937 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -21,7 +21,7 @@ module.exports = class MetamaskController { this.idStore.setStore(this.ethStore) this.messageManager = messageManager this.publicConfigStore = this.initPublicConfigStore - this.configManager.setCurrentFiat('usd') + this.configManager.setCurrentFiat('USD') this.configManager.updateConversionRate() this.scheduleConversionInterval() } -- cgit From cb0c1f25bacab5f6ee9348dbc3dc112f4d77560f Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Tue, 9 Aug 2016 16:49:15 -0700 Subject: Did not previously call functions before! --- app/scripts/metamask-controller.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'app/scripts') diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 1550f0937..b5052e438 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -252,9 +252,9 @@ module.exports = class MetamaskController { this.configManager.updateConversionRate() this.scheduleConversionInterval() const data = { - conversionRate: this.configManager.getConversionRate, - currentFiat: this.configManager.getCurrentFiat, - conversionDate: this.configManager.getConversionDate, + conversionRate: this.configManager.getConversionRate(), + currentFiat: this.configManager.getCurrentFiat(), + conversionDate: this.configManager.getConversionDate(), } cb(data) } catch (e) { -- cgit From 58e3042a3b105d9481cddc3f1c6253ccc6f19565 Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Tue, 16 Aug 2016 13:21:16 -0700 Subject: Remove logging. Clean up duplicate entries in currency list. --- app/scripts/metamask-controller.js | 1 - 1 file changed, 1 deletion(-) (limited to 'app/scripts') diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 6dbc5e50e..d7f3df534 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -271,7 +271,6 @@ module.exports = class MetamaskController { clearInterval(this.conversionInterval) } this.conversionInterval = setInterval(() => { - console.log('started update conversion rate.') this.configManager.updateConversionRate() }, 300000) } -- cgit From 6041ba1ed24b16ec2614c954b05ab03488301d72 Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Tue, 16 Aug 2016 14:07:06 -0700 Subject: Add fallback to API failure. --- app/scripts/lib/config-manager.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'app/scripts') diff --git a/app/scripts/lib/config-manager.js b/app/scripts/lib/config-manager.js index f3164ec09..44617f0ed 100644 --- a/app/scripts/lib/config-manager.js +++ b/app/scripts/lib/config-manager.js @@ -291,6 +291,8 @@ ConfigManager.prototype.updateConversionRate = function () { this.setConversionDate(parsedResponse.timestamp) }).catch((err) => { console.error('Error in conversion.', err) + this.setConversionPrice('N/A') + this.setConversionDate('N/A') }) } -- cgit From d43ac808ff3a0891fc3de5f370c3ebe1efbd86b2 Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Tue, 16 Aug 2016 14:28:32 -0700 Subject: Fix uncalled fn. --- app/scripts/metamask-controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/scripts') diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index d7f3df534..d21eb5fc1 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -20,7 +20,7 @@ module.exports = class MetamaskController { this.ethStore = new EthStore(this.provider) this.idStore.setStore(this.ethStore) this.messageManager = messageManager - this.publicConfigStore = this.initPublicConfigStore + this.publicConfigStore = this.initPublicConfigStore() this.configManager.setCurrentFiat('USD') this.configManager.updateConversionRate() this.scheduleConversionInterval() -- cgit From 666f3cd66ce56013e5688d514e3c1fc3ec8a6ac4 Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Tue, 16 Aug 2016 15:11:40 -0700 Subject: Added compliance for tests and properly accounts for N/A conversions. --- app/scripts/lib/config-manager.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'app/scripts') diff --git a/app/scripts/lib/config-manager.js b/app/scripts/lib/config-manager.js index 44617f0ed..c56f52e48 100644 --- a/app/scripts/lib/config-manager.js +++ b/app/scripts/lib/config-manager.js @@ -291,7 +291,7 @@ ConfigManager.prototype.updateConversionRate = function () { this.setConversionDate(parsedResponse.timestamp) }).catch((err) => { console.error('Error in conversion.', err) - this.setConversionPrice('N/A') + this.setConversionPrice(0) this.setConversionDate('N/A') }) } @@ -310,12 +310,12 @@ ConfigManager.prototype.setConversionDate = function (datestring) { ConfigManager.prototype.getConversionRate = function () { var data = this.getData() - return ('conversionRate' in data) && data.conversionRate + return (('conversionRate' in data) && data.conversionRate) || 0 } ConfigManager.prototype.getConversionDate = function () { var data = this.getData() - return ('conversionDate' in data) && data.conversionDate + return (('conversionDate' in data) && data.conversionDate) || 'N/A' } ConfigManager.prototype.setShouldntShowWarning = function () { -- cgit