Intermediary commit.

This commit is contained in:
Kevin Serrano 2016-10-19 14:55:08 -07:00
parent 725d503f68
commit ad3fa24a28
No known key found for this signature in database
GPG Key ID: 7CC862A58D2889B4
9 changed files with 77 additions and 37 deletions

View File

@ -1,5 +1,7 @@
const configManager = require('./lib/config-manager')
const EventEmitter = require('events').EventEmitter
const encryptor = require('./lib/encryptor')
const messageManager = require('./lib/message-manager')
module.exports = class KeyringController extends EventEmitter {
@ -20,7 +22,7 @@ module.exports = class KeyringController extends EventEmitter {
if (!salt) {
salt = generateSalt(32)
configManager.setSalt(salt)
this.configManager.setSalt(salt)
}
var logN = 14
@ -42,7 +44,21 @@ module.exports = class KeyringController extends EventEmitter {
}
getState() {
return {}
return {
isInitialized: !!this.key,
isUnlocked: !!this.key,
isConfirmed: true, // this.configManager.getConfirmed(),
isEthConfirmed: this.configManager.getShouldntShowWarning(),
unconfTxs: this.configManager.unconfirmedTxs(),
transactions: this.configManager.getTxList(),
unconfMsgs: messageManager.unconfirmedMsgs(),
messages: messageManager.getMsgList(),
selectedAddress: this.configManager.getSelectedAccount(),
shapeShiftTxList: this.configManager.getShapeShiftTxList(),
currentFiat: this.configManager.getCurrentFiat(),
conversionRate: this.configManager.getConversionRate(),
conversionDate: this.configManager.getConversionDate(),
}
}
setStore(ethStore) {
@ -50,9 +66,22 @@ module.exports = class KeyringController extends EventEmitter {
}
createNewVault(password, entropy, cb) {
cb()
encryptor.keyFromPassword(password)
.then((key) => {
this.key = key
return encryptor.encryptWithKey(key, {})
})
.then((encryptedString) => {
this.configManager.setVault(encryptedString)
cb(null, [])
})
.catch((err) => {
cb(err)
})
}
submitPassword(password, cb) {
cb()
}

View File

@ -110,6 +110,17 @@ ConfigManager.prototype.setWallet = function (wallet) {
this.setData(data)
}
ConfigManager.prototype.setVault = function (encryptedString) {
var data = this.getData()
data.vault = encryptedString
this.setData(data)
}
ConfigManager.prototype.getVault = function () {
var data = this.getData()
return ('vault' in data) && data.vault
}
ConfigManager.prototype.getKeychains = function () {
return this.migrator.getData().keychains || []
}

View File

@ -107,7 +107,7 @@ function getOldStyleData () {
return result
}
actions._setAccountManager(controller.getApi())
actions._setKeyringController(controller.getApi())
actions.update = function(stateName) {
selectedView = stateName
updateQueryParams(stateName)

View File

@ -6,7 +6,7 @@
"scripts": {
"start": "gulp dev",
"lint": "gulp lint",
"dev": "gulp dev",
"dev": "gulp dev --debug",
"dist": "gulp dist",
"buildCiUnits": "node test/integration/index.js",
"test": "npm run fastTest && npm run ci && npm run lint",

View File

@ -20,7 +20,7 @@ describe('#recoverFromSeed(password, seed)', function() {
})
// stub out account manager
actions._setAccountManager({
actions._setKeyringController({
recoverFromSeed(pw, seed, cb) {
cb(null, {
identities: {

View File

@ -46,7 +46,7 @@ describe('tx confirmation screen', function() {
describe('cancelTx', function() {
before(function(done) {
actions._setAccountManager({
actions._setKeyringController({
approveTransaction(txId, cb) { cb('An error!') },
cancelTransaction(txId) { /* noop */ },
clearSeedWordCache(cb) { cb() },
@ -75,7 +75,7 @@ describe('tx confirmation screen', function() {
before(function(done) {
alert = () => {/* noop */}
actions._setAccountManager({
actions._setKeyringController({
approveTransaction(txId, cb) { cb({message: 'An error!'}) },
})
@ -96,7 +96,7 @@ describe('tx confirmation screen', function() {
describe('when there is success', function() {
it('should complete tx and go home', function() {
actions._setAccountManager({
actions._setKeyringController({
approveTransaction(txId, cb) { cb() },
})
@ -135,7 +135,7 @@ describe('tx confirmation screen', function() {
}
freeze(initialState)
actions._setAccountManager({
actions._setKeyringController({
approveTransaction(txId, cb) { cb() },
})

View File

@ -41,7 +41,7 @@ function updateQueryParams(newView) {
}
const actions = {
_setAccountManager(){},
_setKeyringController(){},
update: function(stateName) {
selectedView = stateName
updateQueryParams(stateName)

View File

@ -95,7 +95,7 @@ var actions = {
setRpcTarget: setRpcTarget,
setProviderType: setProviderType,
// hacky - need a way to get a reference to account manager
_setAccountManager: _setAccountManager,
_setKeyringController: _setKeyringController,
// loading overlay
SHOW_LOADING: 'SHOW_LOADING_INDICATION',
HIDE_LOADING: 'HIDE_LOADING_INDICATION',
@ -140,9 +140,9 @@ var actions = {
module.exports = actions
var _accountManager = null
function _setAccountManager (accountManager) {
_accountManager = accountManager
var _keyringController = null
function _setKeyringController (accountManager) {
_keyringController = accountManager
}
function goHome () {
@ -157,7 +157,7 @@ function tryUnlockMetamask (password) {
return (dispatch) => {
dispatch(actions.showLoadingIndication())
dispatch(actions.unlockInProgress())
_accountManager.submitPassword(password, (err, selectedAccount) => {
_keyringController.submitPassword(password, (err, selectedAccount) => {
dispatch(actions.hideLoadingIndication())
if (err) {
dispatch(actions.unlockFailed())
@ -171,11 +171,11 @@ function tryUnlockMetamask (password) {
function createNewVault (password, entropy) {
return (dispatch) => {
dispatch(actions.createNewVaultInProgress())
_accountManager.createNewVault(password, entropy, (err, result) => {
_keyringController.createNewVault(password, entropy, (err, result) => {
if (err) {
return dispatch(actions.showWarning(err.message))
}
dispatch(this.goHome())
dispatch(this.showAccountsPage())
dispatch(this.hideLoadingIndication())
})
}
@ -189,14 +189,14 @@ function showInfoPage () {
function setSelectedAddress (address) {
return (dispatch) => {
_accountManager.setSelectedAddress(address)
_keyringController.setSelectedAddress(address)
}
}
function setCurrentFiat (fiat) {
return (dispatch) => {
dispatch(this.showLoadingIndication())
_accountManager.setCurrentFiat(fiat, (data, err) => {
_keyringController.setCurrentFiat(fiat, (data, err) => {
dispatch(this.hideLoadingIndication())
dispatch({
type: this.SET_CURRENT_FIAT,
@ -214,7 +214,7 @@ function signMsg (msgData) {
return (dispatch) => {
dispatch(actions.showLoadingIndication())
_accountManager.signMessage(msgData, (err) => {
_keyringController.signMessage(msgData, (err) => {
dispatch(actions.hideLoadingIndication())
if (err) return dispatch(actions.displayWarning(err.message))
@ -238,7 +238,7 @@ function signTx (txData) {
function sendTx (txData) {
return (dispatch) => {
_accountManager.approveTransaction(txData.id, (err) => {
_keyringController.approveTransaction(txData.id, (err) => {
if (err) {
alert(err.message)
dispatch(actions.txError(err))
@ -264,12 +264,12 @@ function txError (err) {
}
function cancelMsg (msgData) {
_accountManager.cancelMessage(msgData.id)
_keyringController.cancelMessage(msgData.id)
return actions.completedTx(msgData.id)
}
function cancelTx (txData) {
_accountManager.cancelTransaction(txData.id)
_keyringController.cancelTransaction(txData.id)
return actions.completedTx(txData.id)
}
@ -298,7 +298,7 @@ function showInitializeMenu () {
function agreeToDisclaimer () {
return (dispatch) => {
dispatch(this.showLoadingIndication())
_accountManager.agreeToDisclaimer((err) => {
_keyringController.agreeToDisclaimer((err) => {
if (err) {
return dispatch(actions.showWarning(err.message))
}
@ -368,7 +368,7 @@ function updateMetamaskState (newState) {
function lockMetamask () {
return (dispatch) => {
_accountManager.setLocked((err) => {
_keyringController.setLocked((err) => {
dispatch(actions.hideLoadingIndication())
if (err) {
return dispatch(actions.showWarning(err.message))
@ -384,7 +384,7 @@ function lockMetamask () {
function showAccountDetail (address) {
return (dispatch) => {
dispatch(actions.showLoadingIndication())
_accountManager.setSelectedAddress(address, (err, address) => {
_keyringController.setSelectedAddress(address, (err, address) => {
dispatch(actions.hideLoadingIndication())
if (err) {
return dispatch(actions.showWarning(err.message))
@ -455,7 +455,7 @@ function goBackToInitView () {
//
function setRpcTarget (newRpc) {
_accountManager.setRpcTarget(newRpc)
_keyringController.setRpcTarget(newRpc)
return {
type: actions.SET_RPC_TARGET,
value: newRpc,
@ -463,7 +463,7 @@ function setRpcTarget (newRpc) {
}
function setProviderType (type) {
_accountManager.setProviderType(type)
_keyringController.setProviderType(type)
return {
type: actions.SET_PROVIDER_TYPE,
value: type,
@ -471,7 +471,7 @@ function setProviderType (type) {
}
function useEtherscanProvider () {
_accountManager.useEtherscanProvider()
_keyringController.useEtherscanProvider()
return {
type: actions.USE_ETHERSCAN_PROVIDER,
}
@ -530,7 +530,7 @@ function exportAccount (address) {
return function (dispatch) {
dispatch(self.showLoadingIndication())
_accountManager.exportAccount(address, function (err, result) {
_keyringController.exportAccount(address, function (err, result) {
dispatch(self.hideLoadingIndication())
if (err) {
@ -553,7 +553,7 @@ function showPrivateKey (key) {
function saveAccountLabel (account, label) {
return (dispatch) => {
dispatch(actions.showLoadingIndication())
_accountManager.saveAccountLabel(account, label, (err) => {
_keyringController.saveAccountLabel(account, label, (err) => {
dispatch(actions.hideLoadingIndication())
if (err) {
return dispatch(actions.showWarning(err.message))
@ -574,7 +574,7 @@ function showSendPage () {
function agreeToEthWarning () {
return (dispatch) => {
_accountManager.agreeToEthWarning((err) => {
_keyringController.agreeToEthWarning((err) => {
if (err) {
return dispatch(actions.showEthWarning(err.message))
}
@ -593,7 +593,7 @@ function showEthWarning () {
function buyEth (address, amount) {
return (dispatch) => {
_accountManager.buyEth(address, amount)
_keyringController.buyEth(address, amount)
dispatch({
type: actions.BUY_ETH,
})
@ -671,7 +671,7 @@ function coinShiftRquest (data, marketData) {
if (response.error) return dispatch(actions.showWarning(response.error))
var message = `
Deposit your ${response.depositType} to the address bellow:`
_accountManager.createShapeShiftTx(response.deposit, response.depositType)
_keyringController.createShapeShiftTx(response.deposit, response.depositType)
dispatch(actions.showQrView(response.deposit, [message].concat(marketData)))
})
}

View File

@ -8,7 +8,7 @@ module.exports = launchApp
function launchApp (opts) {
var accountManager = opts.accountManager
actions._setAccountManager(accountManager)
actions._setKeyringController(accountManager)
// check if we are unlocked first
accountManager.getState(function (err, metamaskState) {