diff options
author | frankiebee <frankie.diamond@gmail.com> | 2017-04-03 14:04:55 +0800 |
---|---|---|
committer | frankiebee <frankie.diamond@gmail.com> | 2017-04-03 14:04:55 +0800 |
commit | f81fdbc34ff037ab64a9f4c98100304e7b1132e4 (patch) | |
tree | 20f2a75068af1b4b13ecb9a9b6276e07af94de93 /app/scripts/lib/notification-manager.js | |
parent | 89c924101e3ff52849c5a82ced7e058e1fa39dfd (diff) | |
parent | 235a70b9392d8b87eae4fc141e7f0be1d7788ee2 (diff) | |
download | tangerine-wallet-browser-f81fdbc34ff037ab64a9f4c98100304e7b1132e4.tar tangerine-wallet-browser-f81fdbc34ff037ab64a9f4c98100304e7b1132e4.tar.gz tangerine-wallet-browser-f81fdbc34ff037ab64a9f4c98100304e7b1132e4.tar.bz2 tangerine-wallet-browser-f81fdbc34ff037ab64a9f4c98100304e7b1132e4.tar.lz tangerine-wallet-browser-f81fdbc34ff037ab64a9f4c98100304e7b1132e4.tar.xz tangerine-wallet-browser-f81fdbc34ff037ab64a9f4c98100304e7b1132e4.tar.zst tangerine-wallet-browser-f81fdbc34ff037ab64a9f4c98100304e7b1132e4.zip |
Merge branch 'master' into mascara
Diffstat (limited to 'app/scripts/lib/notification-manager.js')
-rw-r--r-- | app/scripts/lib/notification-manager.js | 74 |
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..55e5b8dd2 --- /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 + // + + 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, + }) + .catch((reason) => { + log.error('failed to create poupup', reason) + }) + } + }) + } + + 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
\ No newline at end of file |