parent
970e9e2113
commit
7bbb624540
@ -1,38 +1,65 @@ |
|||||||
|
const url = require('url') |
||||||
const EventEmitter = require('events').EventEmitter |
const EventEmitter = require('events').EventEmitter |
||||||
|
const async = require('async') |
||||||
const Dnode = require('dnode') |
const Dnode = require('dnode') |
||||||
const MetaMaskUi = require('metamask-ui') |
const MetaMaskUi = require('metamask-ui') |
||||||
const MetaMaskUiCss = require('metamask-ui/css') |
const MetaMaskUiCss = require('metamask-ui/css') |
||||||
const injectCss = require('inject-css') |
const injectCss = require('inject-css') |
||||||
const PortStream = require('./lib/port-stream.js') |
const PortStream = require('./lib/port-stream.js') |
||||||
|
|
||||||
|
|
||||||
// setup communication with background
|
|
||||||
var pluginPort = chrome.runtime.connect({name: 'popup'}) |
|
||||||
var duplex = new PortStream(pluginPort) |
|
||||||
var eventEmitter = new EventEmitter() |
|
||||||
var background = Dnode({ |
|
||||||
// setUnconfirmedTxs: setUnconfirmedTxs,
|
|
||||||
sendUpdate: function(state){ |
|
||||||
eventEmitter.emit('update', state) |
|
||||||
}, |
|
||||||
}) |
|
||||||
duplex.pipe(background).pipe(duplex) |
|
||||||
background.once('remote', function(accountManager){ |
|
||||||
accountManager.on = eventEmitter.on.bind(eventEmitter) |
|
||||||
setupApp(accountManager) |
|
||||||
}) |
|
||||||
|
|
||||||
// setup app
|
// setup app
|
||||||
var css = MetaMaskUiCss() |
var css = MetaMaskUiCss() |
||||||
injectCss(css) |
injectCss(css) |
||||||
|
|
||||||
function setupApp(accountManager){ |
async.parallel({ |
||||||
|
currentDomain: getCurrentDomain, |
||||||
|
accountManager: connectToAccountManager, |
||||||
|
}, setupApp) |
||||||
|
|
||||||
|
function connectToAccountManager(cb){ |
||||||
|
// setup communication with background
|
||||||
|
var pluginPort = chrome.runtime.connect({name: 'popup'}) |
||||||
|
var duplex = new PortStream(pluginPort) |
||||||
|
var eventEmitter = new EventEmitter() |
||||||
|
var background = Dnode({ |
||||||
|
// setUnconfirmedTxs: setUnconfirmedTxs,
|
||||||
|
sendUpdate: function(state){ |
||||||
|
eventEmitter.emit('update', state) |
||||||
|
}, |
||||||
|
}) |
||||||
|
duplex.pipe(background).pipe(duplex) |
||||||
|
background.once('remote', function(accountManager){ |
||||||
|
// setup push events
|
||||||
|
accountManager.on = eventEmitter.on.bind(eventEmitter) |
||||||
|
cb(null, accountManager) |
||||||
|
})
|
||||||
|
} |
||||||
|
|
||||||
|
function getCurrentDomain(cb){ |
||||||
|
chrome.tabs.query({active: true, currentWindow: true}, function(results){ |
||||||
|
var activeTab = results[0] |
||||||
|
var currentUrl = activeTab && activeTab.url |
||||||
|
var currentDomain = url.parse(currentUrl).host |
||||||
|
if (!currentUrl) { |
||||||
|
return cb(null, '<unknown>') |
||||||
|
} |
||||||
|
cb(null, currentDomain) |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
function setupApp(err, opts){ |
||||||
|
if (err) { |
||||||
|
alert(err.stack) |
||||||
|
throw err |
||||||
|
return |
||||||
|
} |
||||||
|
|
||||||
var container = document.getElementById('app-content') |
var container = document.getElementById('app-content') |
||||||
|
|
||||||
var app = MetaMaskUi({ |
var app = MetaMaskUi({ |
||||||
container: container, |
container: container, |
||||||
accountManager: accountManager, |
accountManager: opts.accountManager, |
||||||
|
currentDomain: opts.currentDomain, |
||||||
}) |
}) |
||||||
|
|
||||||
} |
} |
Loading…
Reference in new issue