aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorkumavis <aaron@kumavis.me>2016-06-23 10:28:11 +0800
committerkumavis <aaron@kumavis.me>2016-06-23 10:28:11 +0800
commit122576a790b8621c0e32121d815850357c453a77 (patch)
treedc5929f83d07ca2230701f5da2f207d06450885d /app
parenta4ebb7656af0c11bf706689f4447ec0785d39c48 (diff)
downloadtangerine-wallet-browser-122576a790b8621c0e32121d815850357c453a77.tar
tangerine-wallet-browser-122576a790b8621c0e32121d815850357c453a77.tar.gz
tangerine-wallet-browser-122576a790b8621c0e32121d815850357c453a77.tar.bz2
tangerine-wallet-browser-122576a790b8621c0e32121d815850357c453a77.tar.lz
tangerine-wallet-browser-122576a790b8621c0e32121d815850357c453a77.tar.xz
tangerine-wallet-browser-122576a790b8621c0e32121d815850357c453a77.tar.zst
tangerine-wallet-browser-122576a790b8621c0e32121d815850357c453a77.zip
initial svg notifications
Diffstat (limited to 'app')
-rw-r--r--app/scripts/background.js7
-rw-r--r--app/scripts/lib/notifications.js117
2 files changed, 108 insertions, 16 deletions
diff --git a/app/scripts/background.js b/app/scripts/background.js
index 6934e9d3e..6952a1cc8 100644
--- a/app/scripts/background.js
+++ b/app/scripts/background.js
@@ -271,6 +271,13 @@ function newUnsignedMessage (msgParams, cb) {
}
}
+createTxNotification({
+ title: 'New Unsigned Transaction',
+ txParams: {to: '0xabc', from: '0xdef'},
+ // confirm: idStore.approveTransaction.bind(idStore, txData.id, noop),
+ // cancel: idStore.cancelTransaction.bind(idStore, txData.id),
+})
+
function addUnconfirmedTx (txParams, onTxDoneCb) {
idStore.addUnconfirmedTransaction(txParams, onTxDoneCb, function (err, txData) {
if (err) return onTxDoneCb(err)
diff --git a/app/scripts/lib/notifications.js b/app/scripts/lib/notifications.js
index af2dc2054..d1dd144be 100644
--- a/app/scripts/lib/notifications.js
+++ b/app/scripts/lib/notifications.js
@@ -1,5 +1,8 @@
const createId = require('hat')
+const svg = require('virtual-dom/virtual-hyperscript/svg')
+const stringifyVdom = require('virtual-dom-stringify')
const uiUtils = require('../../../ui/app/util')
+const renderPendingTx = require('../../../ui/app/components/pending-tx').prototype.renderGeneric
var notificationHandlers = {}
module.exports = {
@@ -57,23 +60,30 @@ function createTxNotification (opts) {
'data: ' + uiUtils.dataSize(opts.txParams.data),
].join('\n')
- var id = createId()
- chrome.notifications.create(id, {
- type: 'basic',
- requireInteraction: true,
- iconUrl: '/images/icon-128.png',
- title: opts.title,
- message: message,
- buttons: [{
- title: 'confirm',
- }, {
- title: 'cancel',
- }],
+ transactionNotificationSVG(opts, function(err, source){
+
+ 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: message,
+ buttons: [{
+ title: 'confirm',
+ }, {
+ title: 'cancel',
+ }],
+ })
+ notificationHandlers[id] = {
+ confirm: opts.confirm,
+ cancel: opts.cancel,
+ }
+
})
- notificationHandlers[id] = {
- confirm: opts.confirm,
- cancel: opts.cancel,
- }
}
function createMsgNotification (opts) {
@@ -103,3 +113,78 @@ function createMsgNotification (opts) {
cancel: opts.cancel,
}
}
+
+function transactionNotificationSVG(opts, cb){
+ var state = {
+ txData: {
+ txParams: {
+ from: '0xabcd',
+ },
+ },
+ identities: {
+
+ },
+ accounts: {
+
+ },
+ }
+
+ const unmountComponentAtNode = require('react-dom').unmountComponentAtNode
+ const findDOMNode = require('react-dom').findDOMNode
+ const render = require('react-dom').render
+ const h = require('react-hyperscript')
+ const MetaMaskUiCss = require('../../../ui/css')
+ var css = MetaMaskUiCss()
+
+ var container = document.createElement('div')
+ var confirmView = h('div', [
+ h('style', css),
+ renderPendingTx(h, state),
+ ])
+
+ render(confirmView, container, function ready(){
+ var rootElement = findDOMNode(this)
+ var source = rootElement.outerHTML
+ unmountComponentAtNode(container)
+ var vnode = svgWrapper()
+ var tagSource = stringifyVdom(vnode)
+ // workaround for https://github.com/alexmingoia/virtual-dom-stringify/issues/26
+ tagSource = tagSource.split('foreignobject').join('foreignObject')
+ // insert content into svg wrapper
+ tagSource = tagSource.split('{{content}}').join(source)
+ cb(null, tagSource)
+ })
+}
+
+function svgWrapper(){
+ var h = svg
+ return (
+
+ h('svg', {
+ 'xmlns': 'http://www.w3.org/2000/svg',
+ // 'width': '300',
+ // 'height': '200',
+ 'width': '450',
+ 'height': '300',
+ }, [
+ h('rect', {
+ 'x': '0',
+ 'y': '0',
+ 'width': '100%',
+ 'height': '100%',
+ 'fill': 'white',
+ }),
+ h('foreignObject', {
+ 'x': '0',
+ 'y': '0',
+ 'width': '100%',
+ 'height': '100%',
+ }, [
+ h('body', {
+ xmlns: 'http://www.w3.org/1999/xhtml',
+ },'{{content}}')
+ ])
+ ])
+
+ )
+} \ No newline at end of file