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

                                        
 
                  

                            
 





                                                           
 









                                 
    
 
 
                         

                               
               

   
                                             


                     
 
                       


                                 


    
                              
                                                                     

 
                       

                            



                                                     
const extension = require('./extension')

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: 360,
        height: 500,
      })

    }
  })
}

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) => win.type === 'popup') : null
}

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