From db068134047f1553b926e9b949cb6a6e7100c7be Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Thu, 6 Oct 2016 03:23:47 -0700 Subject: Add new functions for storing TOS hashes in config manager. --- app/scripts/lib/config-manager.js | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'app') diff --git a/app/scripts/lib/config-manager.js b/app/scripts/lib/config-manager.js index 715efb42e..8d37afd29 100644 --- a/app/scripts/lib/config-manager.js +++ b/app/scripts/lib/config-manager.js @@ -277,6 +277,17 @@ ConfigManager.prototype.getConfirmed = function () { return ('isConfirmed' in data) && data.isConfirmed } +ConfigManager.prototype.setTOSHash = function (version) { + var data = this.getData() + data.TOSHash = version + this.setData(data) +} + +ConfigManager.prototype.getTOSHash = function () { + var data = this.getData() + return ('TOSHash' in data) && data.TOSHash +} + ConfigManager.prototype.setCurrentFiat = function (currency) { var data = this.getData() data.fiatCurrency = currency -- cgit v1.2.3 From 4ea3246912306ac52d520b8c34180392c0afcba7 Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Thu, 6 Oct 2016 03:24:28 -0700 Subject: Add controller functions for storing and checking TOS hashes. --- app/scripts/metamask-controller.js | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to 'app') diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 03082013a..0a37bf292 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -25,6 +25,7 @@ module.exports = class MetamaskController { var currentFiat = this.configManager.getCurrentFiat() || 'USD' this.configManager.setCurrentFiat(currentFiat) this.configManager.updateConversionRate() + this.configManager.setTOSHash(0) this.scheduleConversionInterval() } @@ -45,8 +46,11 @@ module.exports = class MetamaskController { setProviderType: this.setProviderType.bind(this), useEtherscanProvider: this.useEtherscanProvider.bind(this), agreeToDisclaimer: this.agreeToDisclaimer.bind(this), + resetDisclaimer: this.resetDisclaimer.bind(this), setCurrentFiat: this.setCurrentFiat.bind(this), agreeToEthWarning: this.agreeToEthWarning.bind(this), + setTOSHash: this.setTOSHash.bind(this), + checkTOSChange: this.checkTOSChange.bind(this), // forward directly to idStore createNewVault: idStore.createNewVault.bind(idStore), @@ -261,6 +265,26 @@ module.exports = class MetamaskController { // config // + setTOSHash (hash, cb) { + try { + this.configManager.setTOSHash(hash) + cb(this.configManager.getTOSHash()) + } catch (e) { + cb(null, e) + } + } + + checkTOSChange (newHash, cb) { + try { + var currentHash = this.configManager.getTOSHash() + var change = !(currentHash === newHash) + cb(change) + } catch (e) { + cb(null, e) + } + + } + agreeToDisclaimer (cb) { try { this.configManager.setConfirmed(true) @@ -270,6 +294,14 @@ module.exports = class MetamaskController { } } + resetDisclaimer () { + try { + this.configManager.setConfirmed(false) + } catch (e) { + console.error(e) + } + } + setCurrentFiat (fiat, cb) { try { this.configManager.setCurrentFiat(fiat) @@ -304,6 +336,8 @@ module.exports = class MetamaskController { } } + + // called from popup setRpcTarget (rpcTarget) { this.configManager.setRpcTarget(rpcTarget) @@ -341,4 +375,3 @@ module.exports = class MetamaskController { this.configManager.createShapeShiftTx(depositAddress, depositType) } } - -- cgit v1.2.3 From 0a9b814f11cc423ab1e5541c5f4e0b0b1385a3dd Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Thu, 6 Oct 2016 03:25:03 -0700 Subject: On update, check whether the TOS has changed using hashes. --- app/scripts/background.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'app') diff --git a/app/scripts/background.js b/app/scripts/background.js index 652acc113..92a76b31e 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -8,6 +8,9 @@ const messageManager = require('./lib/message-manager') const setupMultiplex = require('./lib/stream-utils.js').setupMultiplex const MetamaskController = require('./metamask-controller') const extension = require('./lib/extension') +const fs = require('fs') +const disclaimer = fs.readFileSync(path.join(__dirname, '..', '..', 'USER_AGREEMENT.md')).toString() +const stringHash = require('string-hash') const STORAGE_KEY = 'metamask-config' var popupIsOpen = false @@ -29,8 +32,20 @@ function triggerUi () { // On first install, open a window to MetaMask website to how-it-works. extension.runtime.onInstalled.addListener(function (details) { + const newTOSHash = stringHash(disclaimer) if (details.reason === 'install') { - extension.tabs.create({url: 'https://metamask.io/#how-it-works'}) + controller.setTOSHash(newTOSHash, () => { + extension.tabs.create({url: 'https://metamask.io/#how-it-works'}) + }) + } else if (details.reason === 'update') { + controller.checkTOSChange(newTOSHash, (hasChanged) => { + if (hasChanged) { + controller.resetDisclaimer() + controller.setTOSHash(newTOSHash, () => { + extension.tabs.create({url: 'https://metamask.io/terms.html'}) + }) + } + }) } }) -- cgit v1.2.3 From d200ef4a10fdfeda0c3e9b1f0db816e57dbf802c Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Fri, 7 Oct 2016 01:14:25 -0700 Subject: Add missing path require statement. --- app/scripts/background.js | 1 + 1 file changed, 1 insertion(+) (limited to 'app') diff --git a/app/scripts/background.js b/app/scripts/background.js index 92a76b31e..adde3a87f 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -9,6 +9,7 @@ const setupMultiplex = require('./lib/stream-utils.js').setupMultiplex const MetamaskController = require('./metamask-controller') const extension = require('./lib/extension') const fs = require('fs') +const path = require('path') const disclaimer = fs.readFileSync(path.join(__dirname, '..', '..', 'USER_AGREEMENT.md')).toString() const stringHash = require('string-hash') -- cgit v1.2.3 From 7c5ebb6a534dffdf08a45d96a9b53ee54ffc74b0 Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Fri, 7 Oct 2016 01:41:27 -0700 Subject: Renamed variables to make more sense. --- app/scripts/lib/config-manager.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app') diff --git a/app/scripts/lib/config-manager.js b/app/scripts/lib/config-manager.js index 8d37afd29..ecc9bc5f7 100644 --- a/app/scripts/lib/config-manager.js +++ b/app/scripts/lib/config-manager.js @@ -277,9 +277,9 @@ ConfigManager.prototype.getConfirmed = function () { return ('isConfirmed' in data) && data.isConfirmed } -ConfigManager.prototype.setTOSHash = function (version) { +ConfigManager.prototype.setTOSHash = function (hash) { var data = this.getData() - data.TOSHash = version + data.TOSHash = hash this.setData(data) } -- cgit v1.2.3 From e4f2cd2e092d421f93fd9e6678f6f916a33f9760 Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Fri, 7 Oct 2016 01:42:13 -0700 Subject: Fix retention of terms of service hash across reloads of plugin. --- app/scripts/metamask-controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 0a37bf292..7b7bd1c1b 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -25,7 +25,7 @@ module.exports = class MetamaskController { var currentFiat = this.configManager.getCurrentFiat() || 'USD' this.configManager.setCurrentFiat(currentFiat) this.configManager.updateConversionRate() - this.configManager.setTOSHash(0) + var currentHash = this.configManager.getTOSHash() || 0 this.scheduleConversionInterval() } -- cgit v1.2.3 From 21d19594356a5725976180f00bb07468465c8a54 Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Fri, 7 Oct 2016 01:54:12 -0700 Subject: Fix linting and guarantees set TOS hash. --- app/scripts/metamask-controller.js | 1 + 1 file changed, 1 insertion(+) (limited to 'app') diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 7b7bd1c1b..c763d571c 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -26,6 +26,7 @@ module.exports = class MetamaskController { this.configManager.setCurrentFiat(currentFiat) this.configManager.updateConversionRate() var currentHash = this.configManager.getTOSHash() || 0 + this.configManager.setTOSHash(currentHash) this.scheduleConversionInterval() } -- cgit v1.2.3 From ed03b89e266ab25444d69f23e5f9f0070f0080d7 Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Tue, 11 Oct 2016 14:32:03 -0700 Subject: Move tos hash logic to build phase. Create dynamic global variables based on build. --- app/scripts/config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'app') diff --git a/app/scripts/config.js b/app/scripts/config.js index b7e72eb64..e40b5e104 100644 --- a/app/scripts/config.js +++ b/app/scripts/config.js @@ -2,7 +2,8 @@ const MAINET_RPC_URL = 'https://mainnet.infura.io/metamask' const TESTNET_RPC_URL = 'https://morden.infura.io/metamask' const DEFAULT_RPC_URL = TESTNET_RPC_URL -global.METAMASK_DEBUG = false +global.METAMASK_DEBUG = 'GULP_METAMASK_DEBUG' +global.TOS_HASH = 'GULP_TOS_HASH' module.exports = { network: { -- cgit v1.2.3 From 79a99ac93bf1655b431471cf084bb718063c9928 Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Tue, 11 Oct 2016 14:33:30 -0700 Subject: Move tos hash comparison logic from background to mm controller. --- app/scripts/background.js | 18 +----------------- app/scripts/metamask-controller.js | 25 +++++++++++++++---------- 2 files changed, 16 insertions(+), 27 deletions(-) (limited to 'app') diff --git a/app/scripts/background.js b/app/scripts/background.js index adde3a87f..652acc113 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -8,10 +8,6 @@ const messageManager = require('./lib/message-manager') const setupMultiplex = require('./lib/stream-utils.js').setupMultiplex const MetamaskController = require('./metamask-controller') const extension = require('./lib/extension') -const fs = require('fs') -const path = require('path') -const disclaimer = fs.readFileSync(path.join(__dirname, '..', '..', 'USER_AGREEMENT.md')).toString() -const stringHash = require('string-hash') const STORAGE_KEY = 'metamask-config' var popupIsOpen = false @@ -33,20 +29,8 @@ function triggerUi () { // On first install, open a window to MetaMask website to how-it-works. extension.runtime.onInstalled.addListener(function (details) { - const newTOSHash = stringHash(disclaimer) if (details.reason === 'install') { - controller.setTOSHash(newTOSHash, () => { - extension.tabs.create({url: 'https://metamask.io/#how-it-works'}) - }) - } else if (details.reason === 'update') { - controller.checkTOSChange(newTOSHash, (hasChanged) => { - if (hasChanged) { - controller.resetDisclaimer() - controller.setTOSHash(newTOSHash, () => { - extension.tabs.create({url: 'https://metamask.io/terms.html'}) - }) - } - }) + extension.tabs.create({url: 'https://metamask.io/#how-it-works'}) } }) diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index c763d571c..29c62a85d 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -7,6 +7,7 @@ const HostStore = require('./lib/remote-store.js').HostStore const Web3 = require('web3') const ConfigManager = require('./lib/config-manager') const extension = require('./lib/extension') +const newTOSHash = global.TOS_HASH module.exports = class MetamaskController { @@ -22,12 +23,15 @@ module.exports = class MetamaskController { this.idStore.setStore(this.ethStore) this.messageManager = messageManager this.publicConfigStore = this.initPublicConfigStore() + var currentFiat = this.configManager.getCurrentFiat() || 'USD' this.configManager.setCurrentFiat(currentFiat) this.configManager.updateConversionRate() - var currentHash = this.configManager.getTOSHash() || 0 - this.configManager.setTOSHash(currentHash) + + this.checkTOSChange() + this.scheduleConversionInterval() + } getState () { @@ -266,22 +270,23 @@ module.exports = class MetamaskController { // config // - setTOSHash (hash, cb) { + setTOSHash (hash) { try { this.configManager.setTOSHash(hash) - cb(this.configManager.getTOSHash()) } catch (e) { - cb(null, e) + console.error('Error in setting terms of service hash.') } } - checkTOSChange (newHash, cb) { + checkTOSChange () { try { - var currentHash = this.configManager.getTOSHash() - var change = !(currentHash === newHash) - cb(change) + const storedHash = this.configManager.getTOSHash() || 0 + if (storedHash !== global.newTOSHash) { + this.resetDisclaimer() + this.setTOSHash(global.newTOSHash) + } } catch (e) { - cb(null, e) + console.error("Error in checking TOS change.") } } -- cgit v1.2.3 From f7361d9654b1a55d0c21ba37b11e1575e7a555ca Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Tue, 11 Oct 2016 14:49:24 -0700 Subject: lint --- app/scripts/metamask-controller.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'app') diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 29c62a85d..7ce84018e 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -7,7 +7,6 @@ const HostStore = require('./lib/remote-store.js').HostStore const Web3 = require('web3') const ConfigManager = require('./lib/config-manager') const extension = require('./lib/extension') -const newTOSHash = global.TOS_HASH module.exports = class MetamaskController { @@ -286,7 +285,7 @@ module.exports = class MetamaskController { this.setTOSHash(global.newTOSHash) } } catch (e) { - console.error("Error in checking TOS change.") + console.error('Error in checking TOS change.') } } -- cgit v1.2.3 From 5c9476e57d27c0fd38518cc0f5a671f310366920 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Tue, 11 Oct 2016 15:29:12 -0700 Subject: Fix bug where new vaults had no nicknames --- app/scripts/lib/idStore.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'app') diff --git a/app/scripts/lib/idStore.js b/app/scripts/lib/idStore.js index 89c0c3abc..6837a1e8d 100644 --- a/app/scripts/lib/idStore.js +++ b/app/scripts/lib/idStore.js @@ -60,6 +60,8 @@ IdentityStore.prototype.createNewVault = function (password, entropy, cb) { this.configManager.setShowSeedWords(true) var seedWords = this._idmgmt.getSeed() + this._loadIdentities() + cb(null, seedWords) }) } -- cgit v1.2.3 From 5e9bc31c58aff4b9d1d0d1bd54416ffb0a1b14d3 Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Tue, 11 Oct 2016 15:50:02 -0700 Subject: Cleanup. --- app/scripts/metamask-controller.js | 2 -- 1 file changed, 2 deletions(-) (limited to 'app') diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 7ce84018e..550531d6e 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -341,8 +341,6 @@ module.exports = class MetamaskController { } } - - // called from popup setRpcTarget (rpcTarget) { this.configManager.setRpcTarget(rpcTarget) -- cgit v1.2.3