aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/lib/notification-manager.js
diff options
context:
space:
mode:
authorFrankie <frankie.diamond@gmail.com>2017-04-03 14:04:21 +0800
committerGitHub <noreply@github.com>2017-04-03 14:04:21 +0800
commit235a70b9392d8b87eae4fc141e7f0be1d7788ee2 (patch)
treee7db8e909888506a21fa6c2fbfa04a3fa2cbcfc1 /app/scripts/lib/notification-manager.js
parent0a5c634081656c9450d4341b96bab6b4134a0b7a (diff)
parent86e882c51afca3a44bf20bcd1025161e214e6998 (diff)
downloadtangerine-wallet-browser-235a70b9392d8b87eae4fc141e7f0be1d7788ee2.tar
tangerine-wallet-browser-235a70b9392d8b87eae4fc141e7f0be1d7788ee2.tar.gz
tangerine-wallet-browser-235a70b9392d8b87eae4fc141e7f0be1d7788ee2.tar.bz2
tangerine-wallet-browser-235a70b9392d8b87eae4fc141e7f0be1d7788ee2.tar.lz
tangerine-wallet-browser-235a70b9392d8b87eae4fc141e7f0be1d7788ee2.tar.xz
tangerine-wallet-browser-235a70b9392d8b87eae4fc141e7f0be1d7788ee2.tar.zst
tangerine-wallet-browser-235a70b9392d8b87eae4fc141e7f0be1d7788ee2.zip
Merge pull request #1300 from MetaMask/platform
Introduce Platform API
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..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