parent
b3d46e02b8
commit
b8e36f41a2
@ -0,0 +1,49 @@ |
||||
const createId = require('hat') |
||||
const uiUtils = require('metamask-ui/app/util') |
||||
var notificationHandlers = {} |
||||
|
||||
module.exports = createTxNotification |
||||
|
||||
|
||||
// notification button press
|
||||
chrome.notifications.onButtonClicked.addListener(function(notificationId, buttonIndex){ |
||||
var handlers = notificationHandlers[notificationId] |
||||
if (buttonIndex === 0) { |
||||
handlers.confirm() |
||||
} else { |
||||
handlers.cancel() |
||||
} |
||||
chrome.notifications.clear(notificationId) |
||||
}) |
||||
|
||||
// notification teardown
|
||||
chrome.notifications.onClosed.addListener(function(notificationId){ |
||||
delete notificationHandlers[notificationId] |
||||
}) |
||||
|
||||
// creation helper
|
||||
function createTxNotification(opts){ |
||||
var message = [ |
||||
'to: '+uiUtils.addressSummary(opts.txParams.to), |
||||
'from: '+uiUtils.addressSummary(opts.txParams.from), |
||||
'value: '+uiUtils.formatBalance(opts.txParams.value), |
||||
'data: '+uiUtils.dataSize(opts.txParams.data), |
||||
].join('\n') |
||||
|
||||
var id = createId() |
||||
chrome.notifications.create(id, { |
||||
type: 'basic', |
||||
iconUrl: '/images/icon-128.png', |
||||
title: opts.title, |
||||
message: message, |
||||
buttons: [{ |
||||
title: 'confirm', |
||||
},{ |
||||
title: 'cancel', |
||||
}] |
||||
}) |
||||
notificationHandlers[id] = { |
||||
confirm: opts.confirm, |
||||
cancel: opts.cancel, |
||||
} |
||||
} |
@ -0,0 +1,39 @@ |
||||
Chrome notifications allow you to show an SVG image via a data-uri |
||||
|
||||
Taking advantage of this might allow us to show nicely formatted notifications |
||||
|
||||
Heres some utilities for preparing the data uri: |
||||
http://dopiaza.org/tools/datauri/index.php |
||||
provide text |
||||
no base64 |
||||
specify mime type: image/svg+xml |
||||
result should look like: |
||||
data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%0D%0A%20%20width%3D%271000px%27%20height%3D%27500px%27%20viewBox%3D%270%200%20200%20100%27%3E%0D%0A%20%20%3Crect%20x%3D%270%27%20y%3D%270%27%20width%3D%27100%25%27%20height%3D%27100%25%27%20fill%3D%27white%27%20%2F%3E%0D%0A%20%20%3Ctext%20x%3D%270%27%20y%3D%2720%27%20font-family%3D%27monospace%27%20font-size%3D%276%27%20fill%3D%27black%27%3E%0D%0A%20%20%20%20%3Ctspan%20x%3D%270%27%20dy%3D%271.2em%27%3EDomain%3A%20https%3A%2F%2Fboardroom.to%3C%2Ftspan%3E%0D%0A%20%20%20%20%3Ctspan%20x%3D%270%27%20dy%3D%271.2em%27%3EFrom%3A%20%200xabcdef%3C%2Ftspan%3E%0D%0A%20%20%20%20%3Ctspan%20x%3D%270%27%20dy%3D%271.2em%27%3ETo%3A%20%20%20%200xfedcba%3C%2Ftspan%3E%0D%0A%20%20%20%20%3Ctspan%20x%3D%270%27%20dy%3D%271.2em%27%3EValue%3A%201.025%20Ether%3C%2Ftspan%3E%0D%0A%20%20%20%20%3Ctspan%20x%3D%270%27%20dy%3D%271.2em%27%3EGas%3A%200.025%20Ether%3C%2Ftspan%3E%0D%0A%20%20%3C%2Ftext%3E%0D%0A%3C%2Fsvg%3E |
||||
|
||||
build a template using pure svg: |
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' |
||||
width='1000px' height='500px' viewBox='0 0 200 100'> |
||||
<rect x='0' y='0' width='100%' height='100%' fill='white' /> |
||||
<text x='0' y='20' font-family='monospace' font-size='6' fill='black'> |
||||
<tspan x='0' dy='1.2em'>Domain: https://boardroom.to</tspan> |
||||
<tspan x='0' dy='1.2em'>From: 0xabcdef</tspan> |
||||
<tspan x='0' dy='1.2em'>To: 0xfedcba</tspan> |
||||
<tspan x='0' dy='1.2em'>Value: 1.025 Ether</tspan> |
||||
<tspan x='0' dy='1.2em'>Gas: 0.025 Ether</tspan> |
||||
</text> |
||||
</svg> |
||||
|
||||
or svg-embedded html: |
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="500"> |
||||
<rect x='0' y='0' width='100%' height='100%' fill='white' /> |
||||
<foreignObject class="node" x="46" y="22" width="200" height="300"> |
||||
<body xmlns="http://www.w3.org/1999/xhtml"> |
||||
<div style="font-size: 120px"> |
||||
The quick brown fox jumps over the lazy dog. |
||||
Pack my box with five dozen liquor jugs |
||||
</div> |
||||
</body> |
||||
</foreignObject> |
||||
</svg> |
Loading…
Reference in new issue