aboutsummaryrefslogblamecommitdiffstats
path: root/app/scripts/lib/notifications.js
blob: 3db1ac6b5925a25b69c998f566d2abf72dfdab21 (plain) (tree)
1
2
3
4
5
6
7
8
9
                                        
                  
                 
 
                       
       
           
             
 

                                        
 
                  

                            
 
                

                                                           
            




                                 

               
        
     
    
 
 
                          

                               
               

   
                                             


                     
 
                        


                                 


    
                               




                                          

 
                        

                            



                                                     
const extension = require('./extension')
const height = 520
const width = 360

const notifications = {
  show,
  getPopup,
  closePopup,
}
module.exports = notifications
window.METAMASK_NOTIFIER = notifications

function show () {
  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',
        focused: true,
        width,
        height,
      })
    }
  })
}

function getWindows (cb) {
  // Ignore in test environment
  if (!extension.windows) {
    return cb()
  }

  extension.windows.getAll({}, (windows) => {
    cb(null, windows)
  })
}

function getPopup (cb) {
  getWindows((err, windows) => {
    if (err) throw err
    cb(null, getPopupIn(windows))
  })
}

function getPopupIn (windows) {
  return windows ? windows.find((win) => {
    return (win && win.type === 'popup' &&
      win.height === height &&
      win.width === width)
  }) : null
}

function closePopup () {
  getPopup((err, popup) => {
    if (err) throw err
    if (!popup) return
    extension.windows.remove(popup.id, console.error)
  })
}