From 275c31855da73299f4e0838d9ecbcc4278b8431c Mon Sep 17 00:00:00 2001 From: Jenny Pollack Date: Wed, 6 Jun 2018 18:10:05 -0700 Subject: first language - add check for brave browser on getAcceptLanguages --- app/scripts/lib/get-first-preferred-lang-code.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'app/scripts/lib') diff --git a/app/scripts/lib/get-first-preferred-lang-code.js b/app/scripts/lib/get-first-preferred-lang-code.js index 1e6a83ba6..5e524f9eb 100644 --- a/app/scripts/lib/get-first-preferred-lang-code.js +++ b/app/scripts/lib/get-first-preferred-lang-code.js @@ -1,8 +1,14 @@ const extension = require('extensionizer') const promisify = require('pify') const allLocales = require('../../_locales/index.json') +const log = require('loglevel') +// as far as i can tell, this is truthy in the case of Brave browser +// where extension.i18n.getAcceptLanguages throws due to not being implemented +// Unchecked runtime.lastError while running i18n.getAcceptLanguages: Access to extension API denied. +// https://stackoverflow.com/questions/28431505/unchecked-runtime-lasterror-when-using-chrome-api const isSupported = extension.i18n && extension.i18n.getAcceptLanguages + const getPreferredLocales = isSupported ? promisify( extension.i18n.getAcceptLanguages, { errorFirst: false } @@ -18,7 +24,11 @@ const existingLocaleCodes = allLocales.map(locale => locale.code.toLowerCase().r * */ async function getFirstPreferredLangCode () { - const userPreferredLocaleCodes = await getPreferredLocales() + let userPreferredLocaleCodes = await getPreferredLocales() + if(!userPreferredLocaleCodes){ + userPreferredLocaleCodes = [] + } + log.debug(`user preferredLocaleCodes: ${userPreferredLocaleCodes}`) const firstPreferredLangCode = userPreferredLocaleCodes .map(code => code.toLowerCase()) .find(code => existingLocaleCodes.includes(code)) -- cgit From 7edde61c1231b1df6023ac458559b8a008bf300d Mon Sep 17 00:00:00 2001 From: Jenny Pollack Date: Wed, 6 Jun 2018 18:24:45 -0700 Subject: preferred first languauge - check for Brave --- app/scripts/lib/get-first-preferred-lang-code.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'app/scripts/lib') diff --git a/app/scripts/lib/get-first-preferred-lang-code.js b/app/scripts/lib/get-first-preferred-lang-code.js index 5e524f9eb..89239a013 100644 --- a/app/scripts/lib/get-first-preferred-lang-code.js +++ b/app/scripts/lib/get-first-preferred-lang-code.js @@ -3,13 +3,7 @@ const promisify = require('pify') const allLocales = require('../../_locales/index.json') const log = require('loglevel') -// as far as i can tell, this is truthy in the case of Brave browser -// where extension.i18n.getAcceptLanguages throws due to not being implemented -// Unchecked runtime.lastError while running i18n.getAcceptLanguages: Access to extension API denied. -// https://stackoverflow.com/questions/28431505/unchecked-runtime-lasterror-when-using-chrome-api -const isSupported = extension.i18n && extension.i18n.getAcceptLanguages - -const getPreferredLocales = isSupported ? promisify( +const getPreferredLocales = extension.i18n ? promisify( extension.i18n.getAcceptLanguages, { errorFirst: false } ) : async () => [] @@ -25,10 +19,13 @@ const existingLocaleCodes = allLocales.map(locale => locale.code.toLowerCase().r */ async function getFirstPreferredLangCode () { let userPreferredLocaleCodes = await getPreferredLocales() + + // safeguard for Brave Browser until they implement chrome.i18n.getAcceptLanguages + // https://github.com/MetaMask/metamask-extension/issues/4270 if(!userPreferredLocaleCodes){ userPreferredLocaleCodes = [] } - log.debug(`user preferredLocaleCodes: ${userPreferredLocaleCodes}`) + const firstPreferredLangCode = userPreferredLocaleCodes .map(code => code.toLowerCase()) .find(code => existingLocaleCodes.includes(code)) -- cgit From 01a1eff8a82167217b4d805e8c09f49ad0109aae Mon Sep 17 00:00:00 2001 From: Jenny Pollack Date: Wed, 6 Jun 2018 18:35:41 -0700 Subject: remove loglevel --- app/scripts/lib/get-first-preferred-lang-code.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'app/scripts/lib') diff --git a/app/scripts/lib/get-first-preferred-lang-code.js b/app/scripts/lib/get-first-preferred-lang-code.js index 89239a013..4d4d9df9a 100644 --- a/app/scripts/lib/get-first-preferred-lang-code.js +++ b/app/scripts/lib/get-first-preferred-lang-code.js @@ -1,7 +1,6 @@ const extension = require('extensionizer') const promisify = require('pify') const allLocales = require('../../_locales/index.json') -const log = require('loglevel') const getPreferredLocales = extension.i18n ? promisify( extension.i18n.getAcceptLanguages, @@ -25,7 +24,7 @@ async function getFirstPreferredLangCode () { if(!userPreferredLocaleCodes){ userPreferredLocaleCodes = [] } - + const firstPreferredLangCode = userPreferredLocaleCodes .map(code => code.toLowerCase()) .find(code => existingLocaleCodes.includes(code)) -- cgit From fd8bcc9cb1b9f9c1cc5ef48eda4952182b23e499 Mon Sep 17 00:00:00 2001 From: Jenny Pollack Date: Wed, 6 Jun 2018 22:08:32 -0700 Subject: lint --- app/scripts/lib/get-first-preferred-lang-code.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/scripts/lib') diff --git a/app/scripts/lib/get-first-preferred-lang-code.js b/app/scripts/lib/get-first-preferred-lang-code.js index 4d4d9df9a..2384e655e 100644 --- a/app/scripts/lib/get-first-preferred-lang-code.js +++ b/app/scripts/lib/get-first-preferred-lang-code.js @@ -21,7 +21,7 @@ async function getFirstPreferredLangCode () { // safeguard for Brave Browser until they implement chrome.i18n.getAcceptLanguages // https://github.com/MetaMask/metamask-extension/issues/4270 - if(!userPreferredLocaleCodes){ + if (!userPreferredLocaleCodes){ userPreferredLocaleCodes = [] } -- cgit From f461bd881259183b1f76af27e7662d1c37da672f Mon Sep 17 00:00:00 2001 From: Erik Marks Date: Tue, 12 Jun 2018 09:28:50 -0700 Subject: wip --- app/scripts/lib/auto-reload.js | 40 ++-------------------------------------- 1 file changed, 2 insertions(+), 38 deletions(-) (limited to 'app/scripts/lib') diff --git a/app/scripts/lib/auto-reload.js b/app/scripts/lib/auto-reload.js index cce31c3d2..63dc3e921 100644 --- a/app/scripts/lib/auto-reload.js +++ b/app/scripts/lib/auto-reload.js @@ -1,11 +1,9 @@ -module.exports = setupDappAutoReload +module.exports = exportWeb3Global -function setupDappAutoReload (web3, observable) { +function exportWeb3Global (web3) { // export web3 as a global, checking for usage let hasBeenWarned = false - let reloadInProgress = false let lastTimeUsed - let lastSeenNetwork global.web3 = new Proxy(web3, { get: (_web3, key) => { @@ -24,38 +22,4 @@ function setupDappAutoReload (web3, observable) { _web3[key] = value }, }) - - observable.subscribe(function (state) { - // if reload in progress, no need to check reload logic - if (reloadInProgress) return - - const currentNetwork = state.networkVersion - - // set the initial network - if (!lastSeenNetwork) { - lastSeenNetwork = currentNetwork - return - } - - // skip reload logic if web3 not used - if (!lastTimeUsed) return - - // if network did not change, exit - if (currentNetwork === lastSeenNetwork) return - - // initiate page reload - reloadInProgress = true - const timeSinceUse = Date.now() - lastTimeUsed - // if web3 was recently used then delay the reloading of the page - if (timeSinceUse > 500) { - triggerReset() - } else { - setTimeout(triggerReset, 500) - } - }) -} - -// reload the page -function triggerReset () { - global.location.reload() } -- cgit From b98296138146fcd304a21637ea83a13670cff6ed Mon Sep 17 00:00:00 2001 From: Erik Marks Date: Tue, 12 Jun 2018 11:04:37 -0700 Subject: removed auto-reload.js, moved global web3 export to inpage.js --- app/scripts/lib/auto-reload.js | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 app/scripts/lib/auto-reload.js (limited to 'app/scripts/lib') diff --git a/app/scripts/lib/auto-reload.js b/app/scripts/lib/auto-reload.js deleted file mode 100644 index 63dc3e921..000000000 --- a/app/scripts/lib/auto-reload.js +++ /dev/null @@ -1,25 +0,0 @@ -module.exports = exportWeb3Global - -function exportWeb3Global (web3) { - // export web3 as a global, checking for usage - let hasBeenWarned = false - let lastTimeUsed - - global.web3 = new Proxy(web3, { - get: (_web3, key) => { - // show warning once on web3 access - if (!hasBeenWarned && key !== 'currentProvider') { - console.warn('MetaMask: web3 will be deprecated in the near future in favor of the ethereumProvider \nhttps://github.com/MetaMask/faq/blob/master/detecting_metamask.md#web3-deprecation') - hasBeenWarned = true - } - // get the time of use - lastTimeUsed = Date.now() - // return value normally - return _web3[key] - }, - set: (_web3, key, value) => { - // set value normally - _web3[key] = value - }, - }) -} -- cgit From 7b414f3ed08b8eb35ce7a8e076e4ffd75fea3d30 Mon Sep 17 00:00:00 2001 From: kumavis Date: Wed, 13 Jun 2018 16:45:18 -0700 Subject: background - persistence pipeline - fix persistence bug --- app/scripts/lib/createStreamSink.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 app/scripts/lib/createStreamSink.js (limited to 'app/scripts/lib') diff --git a/app/scripts/lib/createStreamSink.js b/app/scripts/lib/createStreamSink.js new file mode 100644 index 000000000..cf9416fea --- /dev/null +++ b/app/scripts/lib/createStreamSink.js @@ -0,0 +1,24 @@ +const WritableStream = require('readable-stream').Writable +const promiseToCallback = require('promise-to-callback') + +module.exports = createStreamSink + + +function createStreamSink(asyncWriteFn, _opts) { + return new AsyncWritableStream(asyncWriteFn, _opts) +} + +class AsyncWritableStream extends WritableStream { + + constructor (asyncWriteFn, _opts) { + const opts = Object.assign({ objectMode: true }, _opts) + super(opts) + this._asyncWriteFn = asyncWriteFn + } + + // write from incomming stream to state + _write (chunk, encoding, callback) { + promiseToCallback(this._asyncWriteFn(chunk, encoding))(callback) + } + +} -- cgit From 11bfdf444dca3917479cff82f807cc0d4c217191 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Thu, 14 Jun 2018 10:09:45 -0700 Subject: Handle brave throws --- app/scripts/lib/get-first-preferred-lang-code.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'app/scripts/lib') diff --git a/app/scripts/lib/get-first-preferred-lang-code.js b/app/scripts/lib/get-first-preferred-lang-code.js index 2384e655e..41a886d74 100644 --- a/app/scripts/lib/get-first-preferred-lang-code.js +++ b/app/scripts/lib/get-first-preferred-lang-code.js @@ -17,12 +17,19 @@ const existingLocaleCodes = allLocales.map(locale => locale.code.toLowerCase().r * */ async function getFirstPreferredLangCode () { - let userPreferredLocaleCodes = await getPreferredLocales() - + let userPreferredLocaleCodes + + try { + userPreferredLocaleCodes = await getPreferredLocales() + } catch (e) { + // Brave currently throws when calling getAcceptLanguages, so this handles that. + userPreferredLocaleCodes = [] + } + // safeguard for Brave Browser until they implement chrome.i18n.getAcceptLanguages // https://github.com/MetaMask/metamask-extension/issues/4270 if (!userPreferredLocaleCodes){ - userPreferredLocaleCodes = [] + userPreferredLocaleCodes = [] } const firstPreferredLangCode = userPreferredLocaleCodes @@ -32,3 +39,4 @@ async function getFirstPreferredLangCode () { } module.exports = getFirstPreferredLangCode + -- cgit From 3a6cc3c8fd1cf16b744af61104472887d6d37fb3 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Thu, 14 Jun 2018 15:15:23 -0700 Subject: Re-enable dapp reload on network change We want to give devs some time to digest [this blog post](https://medium.com/metamask/breaking-change-no-longer-reloading-pages-on-network-change-4a3e1fd2f5e7) before we making a breaking change to our platform. Makes it easy to re-implement the change. --- app/scripts/lib/auto-reload.js | 61 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 app/scripts/lib/auto-reload.js (limited to 'app/scripts/lib') diff --git a/app/scripts/lib/auto-reload.js b/app/scripts/lib/auto-reload.js new file mode 100644 index 000000000..cce31c3d2 --- /dev/null +++ b/app/scripts/lib/auto-reload.js @@ -0,0 +1,61 @@ +module.exports = setupDappAutoReload + +function setupDappAutoReload (web3, observable) { + // export web3 as a global, checking for usage + let hasBeenWarned = false + let reloadInProgress = false + let lastTimeUsed + let lastSeenNetwork + + global.web3 = new Proxy(web3, { + get: (_web3, key) => { + // show warning once on web3 access + if (!hasBeenWarned && key !== 'currentProvider') { + console.warn('MetaMask: web3 will be deprecated in the near future in favor of the ethereumProvider \nhttps://github.com/MetaMask/faq/blob/master/detecting_metamask.md#web3-deprecation') + hasBeenWarned = true + } + // get the time of use + lastTimeUsed = Date.now() + // return value normally + return _web3[key] + }, + set: (_web3, key, value) => { + // set value normally + _web3[key] = value + }, + }) + + observable.subscribe(function (state) { + // if reload in progress, no need to check reload logic + if (reloadInProgress) return + + const currentNetwork = state.networkVersion + + // set the initial network + if (!lastSeenNetwork) { + lastSeenNetwork = currentNetwork + return + } + + // skip reload logic if web3 not used + if (!lastTimeUsed) return + + // if network did not change, exit + if (currentNetwork === lastSeenNetwork) return + + // initiate page reload + reloadInProgress = true + const timeSinceUse = Date.now() - lastTimeUsed + // if web3 was recently used then delay the reloading of the page + if (timeSinceUse > 500) { + triggerReset() + } else { + setTimeout(triggerReset, 500) + } + }) +} + +// reload the page +function triggerReset () { + global.location.reload() +} -- cgit