aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md2
-rw-r--r--app/scripts/background.js4
-rw-r--r--circle.yml2
-rw-r--r--test/integration/index.js14
-rw-r--r--ui/app/components/token-list.js22
-rw-r--r--ui/app/info.js6
-rw-r--r--ui/app/keychains/hd/create-vault-complete.js2
7 files changed, 34 insertions, 18 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a60e1d93a..4c8522f02 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,8 @@
- Add a warning to JSON file import.
- Add "send" link to token list, which goes to TokenFactory.
- Fix bug where slowly mined txs would sometimes be incorrectly marked as failed.
+- Fix bug where badge count did not reflect personal_sign pending messages.
+- Seed word confirmation wording is now scarier.
## 3.7.8 2017-6-12
diff --git a/app/scripts/background.js b/app/scripts/background.js
index 1dbfb1b98..e8987394f 100644
--- a/app/scripts/background.js
+++ b/app/scripts/background.js
@@ -116,13 +116,15 @@ function setupController (initState) {
updateBadge()
controller.txController.on('updateBadge', updateBadge)
controller.messageManager.on('updateBadge', updateBadge)
+ controller.personalMessageManager.on('updateBadge', updateBadge)
// plugin badge text
function updateBadge () {
var label = ''
var unapprovedTxCount = controller.txController.unapprovedTxCount
var unapprovedMsgCount = controller.messageManager.unapprovedMsgCount
- var count = unapprovedTxCount + unapprovedMsgCount
+ var unapprovedPersonalMsgs = controller.personalMessageManager.unapprovedPersonalMsgCount
+ var count = unapprovedTxCount + unapprovedMsgCount + unapprovedPersonalMsgs
if (count) {
label = String(count)
}
diff --git a/circle.yml b/circle.yml
index 4305ca3b4..1f018ac24 100644
--- a/circle.yml
+++ b/circle.yml
@@ -1,6 +1,6 @@
machine:
node:
- version: 7.6.0
+ version: 8.0.0
dependencies:
pre:
- "npm i -g testem"
diff --git a/test/integration/index.js b/test/integration/index.js
index f2d656b0b..85f91d92b 100644
--- a/test/integration/index.js
+++ b/test/integration/index.js
@@ -9,13 +9,15 @@ var b = browserify()
// Remove old bundle
try {
fs.unlinkSync(bundlePath)
-} catch (e) {}
-var writeStream = fs.createWriteStream(bundlePath)
+ var writeStream = fs.createWriteStream(bundlePath)
-tests.forEach(function (fileName) {
- b.add(path.join(__dirname, 'lib', fileName))
-})
+ tests.forEach(function (fileName) {
+ b.add(path.join(__dirname, 'lib', fileName))
+ })
-b.bundle().pipe(writeStream)
+ b.bundle().pipe(writeStream)
+} catch (e) {
+ console.error('Integration build failure', e)
+}
diff --git a/ui/app/components/token-list.js b/ui/app/components/token-list.js
index 100e596ed..d2d83de26 100644
--- a/ui/app/components/token-list.js
+++ b/ui/app/components/token-list.js
@@ -29,13 +29,18 @@ function TokenList () {
TokenList.prototype.render = function () {
const state = this.state
- const { isLoading, tokens } = state
+ const { tokens, isLoading, error } = state
const { userAddress, network } = this.props
if (isLoading) {
return this.message('Loading')
}
+ if (error) {
+ log.error(error)
+ return this.message('There was a problem loading your token balances.')
+ }
+
const tokenViews = tokens.map((tokenData) => {
tokenData.network = network
tokenData.userAddress = userAddress
@@ -114,7 +119,10 @@ TokenList.prototype.componentDidMount = function () {
TokenList.prototype.createFreshTokenTracker = function () {
if (this.tracker) {
+ // Clean up old trackers when refreshing:
this.tracker.stop()
+ this.tracker.removeListener('update', this.balanceUpdater)
+ this.tracker.removeListener('error', this.showError)
}
if (!global.ethereumProvider) return
@@ -126,9 +134,15 @@ TokenList.prototype.createFreshTokenTracker = function () {
pollingInterval: 8000,
})
- this.tracker.on('update', (tokenData) => {
- this.updateBalances(tokenData)
- })
+
+ // Set up listener instances for cleaning up
+ this.balanceUpdater = this.updateBalances.bind(this)
+ this.showError = (error) => {
+ this.setState({ error, isLoading: false })
+ }
+ this.tracker.on('update', this.balanceUpdater)
+ this.tracker.on('error', this.showError)
+
this.tracker.updateBalances()
.then(() => {
this.updateBalances(this.tracker.serialize())
diff --git a/ui/app/info.js b/ui/app/info.js
index 825796ed6..e8470de97 100644
--- a/ui/app/info.js
+++ b/ui/app/info.js
@@ -101,14 +101,12 @@ InfoScreen.prototype.render = function () {
h('a.info', {
href: 'https://github.com/MetaMask/faq',
target: '_blank',
- onClick (event) { this.navigateTo(event.target.href) },
}, 'Need Help? Read our FAQ!'),
]),
h('div', [
h('a', {
href: 'https://metamask.io/',
target: '_blank',
- onClick (event) { this.navigateTo(event.target.href) },
}, [
h('img.icon-size', {
src: 'images/icon-128.png',
@@ -126,7 +124,6 @@ InfoScreen.prototype.render = function () {
h('a.info', {
href: 'http://slack.metamask.io',
target: '_blank',
- onClick (event) { this.navigateTo(event.target.href) },
}, 'Join the conversation on Slack'),
]),
@@ -134,7 +131,6 @@ InfoScreen.prototype.render = function () {
h('a.info', {
href: 'https://twitter.com/metamask_io',
target: '_blank',
- onClick (event) { this.navigateTo(event.target.href) },
}, 'Follow us on Twitter'),
]),
@@ -142,7 +138,7 @@ InfoScreen.prototype.render = function () {
h('a.info', {
target: '_blank',
style: { width: '85vw' },
- onClick () { this.navigateTo('mailto:help@metamask.io?subject=Feedback') },
+ href: 'mailto:help@metamask.io?subject=Feedback',
}, 'Email us!'),
]),
]),
diff --git a/ui/app/keychains/hd/create-vault-complete.js b/ui/app/keychains/hd/create-vault-complete.js
index 5230797ad..9741155f7 100644
--- a/ui/app/keychains/hd/create-vault-complete.js
+++ b/ui/app/keychains/hd/create-vault-complete.js
@@ -54,7 +54,7 @@ CreateVaultCompleteScreen.prototype.render = function () {
textAlign: 'center',
},
}, [
- h('span.error', 'These 12 words can restore all of your MetaMask accounts for this vault.\nSave them somewhere safe and secret.'),
+ h('span.error', 'These 12 words are the only way to restore your MetaMask accounts.\nSave them somewhere safe and secret.'),
]),
h('textarea.twelve-word-phrase', {