diff --git a/CHANGELOG.md b/CHANGELOG.md index 959524c06..c4438c3cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## Current Master +- Fixed bug where if you send a transaction from within MetaMask extension the +popup notification opens up. + ## 2.12.0 2016-09-14 - Add a QR button to the Account detail screen diff --git a/app/scripts/background.js b/app/scripts/background.js index 58228a41a..652acc113 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -10,31 +10,22 @@ const MetamaskController = require('./metamask-controller') const extension = require('./lib/extension') const STORAGE_KEY = 'metamask-config' - +var popupIsOpen = false const controller = new MetamaskController({ // User confirmation callbacks: - showUnconfirmedMessage, - unlockAccountMessage, - showUnconfirmedTx, + showUnconfirmedMessage: triggerUi, + unlockAccountMessage: triggerUi, + showUnconfirmedTx: triggerUi, // Persistence Methods: setData, loadData, }) const idStore = controller.idStore -function unlockAccountMessage () { - notification.show() -} - -function showUnconfirmedMessage (msgParams, msgId) { - notification.show() +function triggerUi () { + if (!popupIsOpen) notification.show() } - -function showUnconfirmedTx (txParams, txData, onTxDoneCb) { - notification.show() -} - // On first install, open a window to MetaMask website to how-it-works. extension.runtime.onInstalled.addListener(function (details) { @@ -53,7 +44,8 @@ function connectRemote (remotePort) { var portStream = new PortStream(remotePort) if (isMetaMaskInternalProcess) { // communication with popup - setupTrustedCommunication(portStream, 'MetaMask') + popupIsOpen = remotePort.name === 'popup' + setupTrustedCommunication(portStream, 'MetaMask', remotePort.name) } else { // communication with page var originDomain = urlUtil.parse(remotePort.sender.url).hostname @@ -95,6 +87,7 @@ function setupControllerConnection (stream) { // teardown on disconnect eos(stream, () => { controller.ethStore.removeListener('update', controller.sendUpdate.bind(controller)) + popupIsOpen = false }) }) } diff --git a/ui/app/conf-tx.js b/ui/app/conf-tx.js index 99b4bc9f1..f02b6be78 100644 --- a/ui/app/conf-tx.js +++ b/ui/app/conf-tx.js @@ -140,7 +140,9 @@ ConfirmTxScreen.prototype.goHome = function (event) { } function warningIfExists (warning) { - if (warning) { + if (warning && + // Do not display user rejections on this screen: + warning.indexOf('User denied transaction signature') === -1) { return h('span.error', { style: { margin: 'auto' } }, warning) } }