mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
610ec2bdf5
Firefox does not support the `focused` parameter when opening a new window, and we don't actually require it for Chrome either, new popups are at the foreground by default already.
68 lines
1.3 KiB
JavaScript
68 lines
1.3 KiB
JavaScript
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',
|
|
width,
|
|
height,
|
|
})
|
|
.catch((reason) => {
|
|
log.error("failed to create poupup", reason)
|
|
})
|
|
}
|
|
})
|
|
}
|
|
|
|
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)
|
|
})
|
|
}
|