diff --git a/app/scripts/keyring-controller.js b/app/scripts/keyring-controller.js index e1e1342aa..460c71e27 100644 --- a/app/scripts/keyring-controller.js +++ b/app/scripts/keyring-controller.js @@ -1,12 +1,14 @@ const ethUtil = require('ethereumjs-util') +const BN = ethUtil.BN const bip39 = require('bip39') const EventEmitter = require('events').EventEmitter +const ObservableStore = require('obs-store') const filter = require('promise-filter') const encryptor = require('browser-passworder') - +const createId = require('./lib/random-id') const normalize = require('./lib/sig-util').normalize const messageManager = require('./lib/message-manager') -const BN = ethUtil.BN +function noop () {} // Keyrings: const SimpleKeyring = require('./keyrings/simple') @@ -16,9 +18,8 @@ const keyringTypes = [ HdKeyring, ] -const createId = require('./lib/random-id') -module.exports = class KeyringController extends EventEmitter { +class KeyringController extends EventEmitter { // PUBLIC METHODS // @@ -29,6 +30,8 @@ module.exports = class KeyringController extends EventEmitter { constructor (opts) { super() + const initState = opts.initState || {} + this.store = new ObservableStore(initState) this.configManager = opts.configManager this.ethStore = opts.ethStore this.encryptor = encryptor @@ -643,5 +646,30 @@ module.exports = class KeyringController extends EventEmitter { } +// +// Static Class Methods +// + +KeyringController.selectFromState = (state) => { + const config = state.config + return { + vault: state.vault, + selectedAccount: config.selectedAccount, + walletNicknames: state.walletNicknames, + } +} + +KeyringController.flattenToOldState = (state) => { + const data = { + vault: state.vault, + walletNicknames: state.walletNicknames, + config: { + selectedAccount: state.selectedAccount, + }, + } + return data +} + + +module.exports = KeyringController -function noop () {} diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index bef791ec9..f3da6f53e 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -29,9 +29,10 @@ module.exports = class MetamaskController extends EventEmitter { super() this.opts = opts this.state = { network: 'loading' } + let initState = opts.initState || {} // observable state store - this.store = new ObservableStore(opts.initState) + this.store = new ObservableStore(initState) // config manager this.configManager = new ConfigManager({ @@ -50,6 +51,7 @@ module.exports = class MetamaskController extends EventEmitter { // key mgmt this.keyringController = new KeyringController({ + initState: initState.KeyringController, ethStore: this.ethStore, configManager: this.configManager, getNetwork: this.getStateNetwork.bind(this),