aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/lib/notification-manager.js
diff options
context:
space:
mode:
authorkumavis <aaron@kumavis.me>2017-03-31 09:33:19 +0800
committerkumavis <aaron@kumavis.me>2017-03-31 09:33:19 +0800
commit5036263f88a1f61957982b64d27472a516c28def (patch)
tree1aa3ea47b8dc9032e165ee988da38279252729ce /app/scripts/lib/notification-manager.js
parentbe88c87b2560f0ae2afd668d9c10cadde0a4ebc3 (diff)
downloadtangerine-wallet-browser-5036263f88a1f61957982b64d27472a516c28def.tar
tangerine-wallet-browser-5036263f88a1f61957982b64d27472a516c28def.tar.gz
tangerine-wallet-browser-5036263f88a1f61957982b64d27472a516c28def.tar.bz2
tangerine-wallet-browser-5036263f88a1f61957982b64d27472a516c28def.tar.lz
tangerine-wallet-browser-5036263f88a1f61957982b64d27472a516c28def.tar.xz
tangerine-wallet-browser-5036263f88a1f61957982b64d27472a516c28def.tar.zst
tangerine-wallet-browser-5036263f88a1f61957982b64d27472a516c28def.zip
introduce platform api and rename notifications to notification-manager
Diffstat (limited to 'app/scripts/lib/notification-manager.js')
-rw-r--r--app/scripts/lib/notification-manager.js74
1 files changed, 74 insertions, 0 deletions
diff --git a/app/scripts/lib/notification-manager.js b/app/scripts/lib/notification-manager.js
new file mode 100644
index 000000000..ff8a4b2e5
--- /dev/null
+++ b/app/scripts/lib/notification-manager.js
@@ -0,0 +1,74 @@
+const extension = require('extensionizer')
+const height = 520
+const width = 360
+
+
+class NotificationManager {
+
+ //
+ // Public
+ //
+
+ show () {
+ this.getPopup((err, popup) => {
+ if (err) throw err
+
+ if (popup) {
+ // bring focus to existing popup
+ extension.windows.update(popup.id, { focused: true })
+ } else {
+ // create new popup
+ extension.windows.create({
+ url: 'notification.html',
+ type: 'popup',
+ width,
+ height,
+ })
+ .catch((reason) => {
+ log.error('failed to create poupup', reason)
+ })
+ }
+ })
+ }
+
+ getPopup (cb) {
+ this._getWindows((err, windows) => {
+ if (err) throw err
+ cb(null, this._getPopupIn(windows))
+ })
+ }
+
+ closePopup () {
+ this.getPopup((err, popup) => {
+ if (err) throw err
+ if (!popup) return
+ extension.windows.remove(popup.id, console.error)
+ })
+ }
+
+ //
+ // Private
+ //
+
+ _getWindows (cb) {
+ // Ignore in test environment
+ if (!extension.windows) {
+ return cb()
+ }
+
+ extension.windows.getAll({}, (windows) => {
+ cb(null, windows)
+ })
+ }
+
+ _getPopupIn (windows) {
+ return windows ? windows.find((win) => {
+ return (win && win.type === 'popup' &&
+ win.height === height &&
+ win.width === width)
+ }) : null
+ }
+
+}
+
+module.exports = NotificationManager \ No newline at end of file