aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/lib/notifications.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/scripts/lib/notifications.js')
-rw-r--r--app/scripts/lib/notifications.js75
1 files changed, 75 insertions, 0 deletions
diff --git a/app/scripts/lib/notifications.js b/app/scripts/lib/notifications.js
new file mode 100644
index 000000000..2b7cbfe66
--- /dev/null
+++ b/app/scripts/lib/notifications.js
@@ -0,0 +1,75 @@
+const createId = require('hat')
+const uiUtils = require('../../../ui/app/util')
+var notificationHandlers = {}
+
+module.exports = {
+ createTxNotification: createTxNotification,
+ createMsgNotification: createMsgNotification,
+}
+
+// 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,
+ }
+}
+
+function createMsgNotification(opts){
+ var message = [
+ 'to be signed by: '+uiUtils.addressSummary(opts.msgParams.from),
+ 'message:\n'+opts.msgParams.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,
+ }
+} \ No newline at end of file