diff --git a/app/scripts/background.js b/app/scripts/background.js index 8c6adff04..313dbbc66 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -8,6 +8,7 @@ const handleRequestsFromStream = require('web3-stream-provider/handler') const ObjectMultiplex = require('./lib/obj-multiplex') const PortStream = require('./lib/port-stream.js') const IdentityStore = require('./lib/idStore') +const createUnlockRequestNotification = require('./lib/notifications.js').createUnlockRequestNotification const createTxNotification = require('./lib/notifications.js').createTxNotification const createMsgNotification = require('./lib/notifications.js').createMsgNotification const configManager = require('./lib/config-manager-singleton') @@ -65,10 +66,10 @@ var providerOpts = { cb(null, result) }, // tx signing - approveTransaction: addUnconfirmedTx, + approveTransaction: approveTransaction, signTransaction: idStore.signTransaction.bind(idStore), // msg signing - approveMessage: addUnconfirmedMsg, + approveMessage: approveMessage, signMessage: idStore.signMessage.bind(idStore), } var provider = MetaMaskProvider(providerOpts) @@ -217,6 +218,30 @@ function updateBadge(state){ // Add unconfirmed Tx + Msg // +function approveTransaction(txParams, cb){ + var state = idStore.getState() + if (!state.isUnlocked) { + createUnlockRequestNotification({ + title: 'Account Unlock Request', + }) + var txId = idStore.addUnconfirmedTransaction(txParams, cb) + } else { + addUnconfirmedTx(txParams, cb) + } +} + +function approveMessage(msgParams, cb){ + var state = idStore.getState() + if (!state.isUnlocked) { + createUnlockRequestNotification({ + title: 'Account Unlock Request', + }) + var msgId = idStore.addUnconfirmedMessage(msgParams, cb) + } else { + addUnconfirmedMsg(msgParams, cb) + } +} + function addUnconfirmedTx(txParams, cb){ var txId = idStore.addUnconfirmedTransaction(txParams, cb) createTxNotification({ diff --git a/app/scripts/lib/notifications.js b/app/scripts/lib/notifications.js index 2b7cbfe66..0b55417b2 100644 --- a/app/scripts/lib/notifications.js +++ b/app/scripts/lib/notifications.js @@ -3,6 +3,7 @@ const uiUtils = require('../../../ui/app/util') var notificationHandlers = {} module.exports = { + createUnlockRequestNotification: createUnlockRequestNotification, createTxNotification: createTxNotification, createMsgNotification: createMsgNotification, } @@ -24,6 +25,19 @@ chrome.notifications.onClosed.addListener(function(notificationId){ }) // creation helper +function createUnlockRequestNotification(opts){ + var message = 'An Ethereum app has requested a signature. Please unlock your account.' + + var id = createId() + chrome.notifications.create(id, { + type: 'basic', + iconUrl: '/images/icon-128.png', + title: opts.title, + message: message, + }) + +} + function createTxNotification(opts){ var message = [ 'to: '+uiUtils.addressSummary(opts.txParams.to),