diff options
Diffstat (limited to 'ui')
-rw-r--r-- | ui/notification.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/ui/notification.js b/ui/notification.js new file mode 100644 index 000000000..8cf74f6ee --- /dev/null +++ b/ui/notification.js @@ -0,0 +1,52 @@ +const render = require('react-dom').render +const h = require('react-hyperscript') +const Root = require('./app/root') +const actions = require('./app/actions') +const configureStore = require('./app/store') + +module.exports = launchApp + +function launchApp (opts) { + var accountManager = opts.accountManager + actions._setAccountManager(accountManager) + + // check if we are unlocked first + accountManager.getState(function (err, metamaskState) { + if (err) throw err + startApp(metamaskState, accountManager, opts) + }) +} + +function startApp (metamaskState, accountManager, opts) { + // parse opts + var store = configureStore({ + + // metamaskState represents the cross-tab state + metamask: metamaskState, + + // appState represents the current tab's popup state + appState: { + currentDomain: opts.currentDomain, + }, + + // Which blockchain we are using: + networkVersion: opts.networkVersion, + }) + + // if unconfirmed txs, start on txConf page + if (Object.keys(metamaskState.unconfTxs || {}).length) { + store.dispatch(actions.showConfTxPage()) + } + + accountManager.on('update', function (metamaskState) { + store.dispatch(actions.updateMetamaskState(metamaskState)) + }) + + // start app + render( + h(Root, { + // inject initial state + store: store, + } + ), opts.container) +} |