aboutsummaryrefslogblamecommitdiffstats
path: root/app/scripts/lib/notifications.js
blob: cd75352322c105245002333a0876c5fa17196ea4 (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)
  })
}