diff options
author | kumavis <kumavis@users.noreply.github.com> | 2016-06-25 08:29:38 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-25 08:29:38 +0800 |
commit | 36a183db94e66999421980f50c2ab2e8d1ce2c3b (patch) | |
tree | 27fc7720c82f88a935c5ba2c28e539f8bf115cbe /app | |
parent | 52518a5efc2f37881c2e88c8cb0649ad5bc41dd4 (diff) | |
parent | 770528d5380b9e30742130d986d196c192b2ac09 (diff) | |
download | tangerine-wallet-browser-36a183db94e66999421980f50c2ab2e8d1ce2c3b.tar tangerine-wallet-browser-36a183db94e66999421980f50c2ab2e8d1ce2c3b.tar.gz tangerine-wallet-browser-36a183db94e66999421980f50c2ab2e8d1ce2c3b.tar.bz2 tangerine-wallet-browser-36a183db94e66999421980f50c2ab2e8d1ce2c3b.tar.lz tangerine-wallet-browser-36a183db94e66999421980f50c2ab2e8d1ce2c3b.tar.xz tangerine-wallet-browser-36a183db94e66999421980f50c2ab2e8d1ce2c3b.tar.zst tangerine-wallet-browser-36a183db94e66999421980f50c2ab2e8d1ce2c3b.zip |
Merge pull request #326 from MetaMask/conf-tx-refactor
Tx/Msg Conf page + notifcation refactor
Diffstat (limited to 'app')
-rw-r--r-- | app/scripts/contentscript.js | 6 | ||||
-rw-r--r-- | app/scripts/lib/notifications.js | 126 |
2 files changed, 79 insertions, 53 deletions
diff --git a/app/scripts/contentscript.js b/app/scripts/contentscript.js index 5d31e3c38..f4f064163 100644 --- a/app/scripts/contentscript.js +++ b/app/scripts/contentscript.js @@ -1,7 +1,7 @@ const LocalMessageDuplexStream = require('./lib/local-message-stream.js') const PortStream = require('./lib/port-stream.js') const ObjectMultiplex = require('./lib/obj-multiplex') -const urlUtil = require('url') +// const urlUtil = require('url') if (shouldInjectWeb3()) { setupInjection() @@ -45,8 +45,6 @@ function setupInjection(){ } function shouldInjectWeb3(){ - var urlData = urlUtil.parse(window.location.href) - var extension = urlData.pathname.split('.').slice(-1)[0] - var shouldInject = (extension !== 'pdf') + var shouldInject = (window.location.href.indexOf('.pdf') === -1) return shouldInject }
\ No newline at end of file diff --git a/app/scripts/lib/notifications.js b/app/scripts/lib/notifications.js index 5762fd26b..a5746ae6e 100644 --- a/app/scripts/lib/notifications.js +++ b/app/scripts/lib/notifications.js @@ -1,10 +1,11 @@ const createId = require('hat') +const extend = require('xtend') const unmountComponentAtNode = require('react-dom').unmountComponentAtNode const findDOMNode = require('react-dom').findDOMNode const render = require('react-dom').render const h = require('react-hyperscript') -const uiUtils = require('../../../ui/app/util') -const renderPendingTx = require('../../../ui/app/components/pending-tx').prototype.renderGeneric +const PendingTxDetails = require('../../../ui/app/components/pending-tx-details') +const PendingMsgDetails = require('../../../ui/app/components/pending-msg-details') const MetaMaskUiCss = require('../../../ui/css') var notificationHandlers = {} @@ -56,29 +57,29 @@ function createTxNotification (opts) { // guard for chrome bug https://github.com/MetaMask/metamask-plugin/issues/236 if (!chrome.notifications) return console.error('Chrome notifications API missing...') - renderTransactionNotificationSVG(opts, function(err, source){ + var state = { + title: 'New Unsigned Transaction', + imageifyIdenticons: false, + txData: { + txParams: opts.txParams, + time: (new Date()).getTime(), + }, + identities: { + + }, + accounts: { + + }, + onConfirm: opts.confirm, + onCancel: opts.cancel, + } + + renderTxNotificationSVG(state, function(err, notificationSvgSource){ if (err) throw err - - var imageUrl = 'data:image/svg+xml;utf8,' + encodeURIComponent(source) - - var id = createId() - chrome.notifications.create(id, { - type: 'image', - // requireInteraction: true, - iconUrl: '/images/icon-128.png', - imageUrl: imageUrl, - title: opts.title, - message: '', - buttons: [{ - title: 'confirm', - }, { - title: 'cancel', - }], - }) - notificationHandlers[id] = { - confirm: opts.confirm, - cancel: opts.cancel, - } + + showNotification(extend(state, { + imageUrl: toSvgUri(notificationSvgSource), + })) }) } @@ -86,19 +87,46 @@ function createTxNotification (opts) { function createMsgNotification (opts) { // guard for chrome bug https://github.com/MetaMask/metamask-plugin/issues/236 if (!chrome.notifications) return console.error('Chrome notifications API missing...') - var message = [ - 'Submitted by ' + opts.msgParams.origin, - 'to be signed by: ' + uiUtils.addressSummary(opts.msgParams.from), - 'message:\n' + opts.msgParams.data, - ].join('\n') + + var state = { + title: 'New Unsigned Message', + imageifyIdenticons: false, + txData: { + msgParams: opts.msgParams, + time: (new Date()).getTime(), + }, + identities: { + + }, + accounts: { + + }, + onConfirm: opts.confirm, + onCancel: opts.cancel, + } + + renderMsgNotificationSVG(state, function(err, notificationSvgSource){ + if (err) throw err + + showNotification(extend(state, { + imageUrl: toSvgUri(notificationSvgSource), + })) + + }) +} + +function showNotification (state) { + // guard for chrome bug https://github.com/MetaMask/metamask-plugin/issues/236 + if (!chrome.notifications) return console.error('Chrome notifications API missing...') var id = createId() chrome.notifications.create(id, { - type: 'basic', + type: 'image', requireInteraction: true, iconUrl: '/images/icon-128.png', - title: opts.title, - message: message, + imageUrl: state.imageUrl, + title: state.title, + message: '', buttons: [{ title: 'confirm', }, { @@ -106,27 +134,23 @@ function createMsgNotification (opts) { }], }) notificationHandlers[id] = { - confirm: opts.confirm, - cancel: opts.cancel, + confirm: state.onConfirm, + cancel: state.onCancel, } -} -function renderTransactionNotificationSVG(opts, cb){ - var state = { - nonInteractive: true, - inlineIdenticons: true, - txData: { - txParams: opts.txParams, - time: (new Date()).getTime(), - }, - identities: { +} - }, - accounts: { +function renderTxNotificationSVG(state, cb){ + var content = h(PendingTxDetails, state) + renderNotificationSVG(content, cb) +} - }, - } +function renderMsgNotificationSVG(state, cb){ + var content = h(PendingMsgDetails, state) + renderNotificationSVG(content, cb) +} +function renderNotificationSVG(content, cb){ var container = document.createElement('div') var confirmView = h('div.app-primary', { style: { @@ -138,7 +162,7 @@ function renderTransactionNotificationSVG(opts, cb){ }, }, [ h('style', MetaMaskUiCss()), - renderPendingTx(h, state), + content, ]) render(confirmView, container, function ready(){ @@ -160,4 +184,8 @@ function svgWrapper(content){ </svg> ` return wrapperSource.split('{{content}}').join(content) +} + +function toSvgUri(content){ + return 'data:image/svg+xml;utf8,' + encodeURIComponent(content) }
\ No newline at end of file |