aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/lib/notification-manager.js
diff options
context:
space:
mode:
authorkumavis <kumavis@users.noreply.github.com>2017-06-13 04:27:04 +0800
committerGitHub <noreply@github.com>2017-06-13 04:27:04 +0800
commit27220b7bcd5ea1ebdae3bc1b494d28d9c828918c (patch)
treec9385fba3d742ca9cbfb9f3b4c6c9ef29c4f4a1b /app/scripts/lib/notification-manager.js
parent57d1a1f1860e50837104a10b7b9f86d398c795ec (diff)
parent8af41f1b0539e70cf4c6e1f4a9f4b10ad13656fc (diff)
downloadtangerine-wallet-browser-27220b7bcd5ea1ebdae3bc1b494d28d9c828918c.tar
tangerine-wallet-browser-27220b7bcd5ea1ebdae3bc1b494d28d9c828918c.tar.gz
tangerine-wallet-browser-27220b7bcd5ea1ebdae3bc1b494d28d9c828918c.tar.bz2
tangerine-wallet-browser-27220b7bcd5ea1ebdae3bc1b494d28d9c828918c.tar.lz
tangerine-wallet-browser-27220b7bcd5ea1ebdae3bc1b494d28d9c828918c.tar.xz
tangerine-wallet-browser-27220b7bcd5ea1ebdae3bc1b494d28d9c828918c.tar.zst
tangerine-wallet-browser-27220b7bcd5ea1ebdae3bc1b494d28d9c828918c.zip
Merge branch 'master' into i#1203MainNetSwitch
Diffstat (limited to 'app/scripts/lib/notification-manager.js')
-rw-r--r--app/scripts/lib/notification-manager.js71
1 files changed, 71 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..7846ef7f0
--- /dev/null
+++ b/app/scripts/lib/notification-manager.js
@@ -0,0 +1,71 @@
+const extension = require('extensionizer')
+const height = 520
+const width = 360
+
+
+class NotificationManager {
+
+ //
+ // Public
+ //
+
+ showPopup () {
+ 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,
+ })
+ }
+ })
+ }
+
+ closePopup () {
+ this._getPopup((err, popup) => {
+ if (err) throw err
+ if (!popup) return
+ extension.windows.remove(popup.id, console.error)
+ })
+ }
+
+ //
+ // Private
+ //
+
+ _getPopup (cb) {
+ this._getWindows((err, windows) => {
+ if (err) throw err
+ cb(null, this._getPopupIn(windows))
+ })
+ }
+
+ _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