aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/popup.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/scripts/popup.js')
-rw-r--r--app/scripts/popup.js69
1 files changed, 8 insertions, 61 deletions
diff --git a/app/scripts/popup.js b/app/scripts/popup.js
index 012ced951..8485b5081 100644
--- a/app/scripts/popup.js
+++ b/app/scripts/popup.js
@@ -1,75 +1,22 @@
-const EventEmitter = require('events').EventEmitter
-const Dnode = require('dnode')
-const Web3 = require('web3')
-const MetaMaskUi = require('../../ui')
-const MetaMaskUiCss = require('../../ui/css')
const injectCss = require('inject-css')
+const MetaMaskUiCss = require('../../ui/css')
const PortStream = require('./lib/port-stream.js')
-const StreamProvider = require('web3-stream-provider')
-const setupMultiplex = require('./lib/stream-utils.js').setupMultiplex
+const startPopup = require('./popup-core')
const isPopupOrNotification = require('./lib/is-popup-or-notification')
const extension = require('./lib/extension')
const notification = require('./lib/notifications')
-// setup app
var css = MetaMaskUiCss()
injectCss(css)
-connectToAccountManager(setupApp)
-
-function connectToAccountManager (cb) {
- // setup communication with background
-
- var name = isPopupOrNotification()
- closePopupIfOpen(name)
- window.METAMASK_UI_TYPE = name
- var pluginPort = extension.runtime.connect({ name })
- var portStream = new PortStream(pluginPort)
- // setup multiplexing
- var mx = setupMultiplex(portStream)
- // connect features
- setupControllerConnection(mx.createStream('controller'), cb)
- setupWeb3Connection(mx.createStream('provider'))
-}
-
-function setupWeb3Connection (connectionStream) {
- var providerStream = new StreamProvider()
- providerStream.pipe(connectionStream).pipe(providerStream)
- connectionStream.on('error', console.error.bind(console))
- providerStream.on('error', console.error.bind(console))
- global.web3 = new Web3(providerStream)
-}
-
-function setupControllerConnection (connectionStream, cb) {
- // this is a really sneaky way of adding EventEmitter api
- // to a bi-directional dnode instance
- var eventEmitter = new EventEmitter()
- var accountManagerDnode = Dnode({
- sendUpdate: function (state) {
- eventEmitter.emit('update', state)
- },
- })
- connectionStream.pipe(accountManagerDnode).pipe(connectionStream)
- accountManagerDnode.once('remote', function (accountManager) {
- // setup push events
- accountManager.on = eventEmitter.on.bind(eventEmitter)
- cb(null, accountManager)
- })
-}
+var name = isPopupOrNotification()
+closePopupIfOpen(name)
+window.METAMASK_UI_TYPE = name
-function setupApp (err, accountManager) {
- if (err) {
- alert(err.stack)
- throw err
- }
-
- var container = document.getElementById('app-content')
+var pluginPort = extension.runtime.connect({ name })
+var portStream = new PortStream(pluginPort)
- MetaMaskUi({
- container: container,
- accountManager: accountManager,
- })
-}
+startPopup(portStream)
function closePopupIfOpen(name) {
if (name !== 'notification') {