From 5036263f88a1f61957982b64d27472a516c28def Mon Sep 17 00:00:00 2001 From: kumavis Date: Thu, 30 Mar 2017 18:33:19 -0700 Subject: introduce platform api and rename notifications to notification-manager --- app/scripts/lib/notification-manager.js | 74 +++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 app/scripts/lib/notification-manager.js (limited to 'app/scripts/lib/notification-manager.js') 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 -- cgit v1.2.3 From 86e882c51afca3a44bf20bcd1025161e214e6998 Mon Sep 17 00:00:00 2001 From: kumavis Date: Fri, 31 Mar 2017 18:41:51 -0700 Subject: notification-manager - rename show -> showPoup + make getPopup private --- app/scripts/lib/notification-manager.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'app/scripts/lib/notification-manager.js') diff --git a/app/scripts/lib/notification-manager.js b/app/scripts/lib/notification-manager.js index ff8a4b2e5..55e5b8dd2 100644 --- a/app/scripts/lib/notification-manager.js +++ b/app/scripts/lib/notification-manager.js @@ -9,8 +9,8 @@ class NotificationManager { // Public // - show () { - this.getPopup((err, popup) => { + showPopup () { + this._getPopup((err, popup) => { if (err) throw err if (popup) { @@ -31,15 +31,8 @@ class NotificationManager { }) } - getPopup (cb) { - this._getWindows((err, windows) => { - if (err) throw err - cb(null, this._getPopupIn(windows)) - }) - } - closePopup () { - this.getPopup((err, popup) => { + this._getPopup((err, popup) => { if (err) throw err if (!popup) return extension.windows.remove(popup.id, console.error) @@ -50,6 +43,13 @@ class NotificationManager { // 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) { -- cgit v1.2.3