aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Serrano <kevgagser@gmail.com>2016-11-02 13:19:04 +0800
committerKevin Serrano <kevgagser@gmail.com>2016-11-02 13:19:04 +0800
commit8f3db0dbc0bafdc604bd7359bd41370f594c792c (patch)
tree6f9ce947f83a7c6dddf5803c39e69be044c11273
parentf2bfdd7f8ca4d79b3143f39a7bec3b585d9c74b7 (diff)
downloadtangerine-wallet-browser-8f3db0dbc0bafdc604bd7359bd41370f594c792c.tar
tangerine-wallet-browser-8f3db0dbc0bafdc604bd7359bd41370f594c792c.tar.gz
tangerine-wallet-browser-8f3db0dbc0bafdc604bd7359bd41370f594c792c.tar.bz2
tangerine-wallet-browser-8f3db0dbc0bafdc604bd7359bd41370f594c792c.tar.lz
tangerine-wallet-browser-8f3db0dbc0bafdc604bd7359bd41370f594c792c.tar.xz
tangerine-wallet-browser-8f3db0dbc0bafdc604bd7359bd41370f594c792c.tar.zst
tangerine-wallet-browser-8f3db0dbc0bafdc604bd7359bd41370f594c792c.zip
Add reveal of seed words.
-rw-r--r--app/scripts/keyring-controller.js10
-rw-r--r--app/scripts/metamask-controller.js1
-rw-r--r--ui/app/actions.js23
-rw-r--r--ui/app/app.js4
-rw-r--r--ui/app/config.js16
5 files changed, 52 insertions, 2 deletions
diff --git a/app/scripts/keyring-controller.js b/app/scripts/keyring-controller.js
index b93d4a156..e6a7d95b2 100644
--- a/app/scripts/keyring-controller.js
+++ b/app/scripts/keyring-controller.js
@@ -132,8 +132,6 @@ module.exports = class KeyringController extends EventEmitter {
.then((encryptedString) => {
this.configManager.setVault(encryptedString)
cb(null, serialized)
- // NORMAL BEHAVIOR:
- // return cb(null, this.getState())
})
.catch((err) => {
cb(err)
@@ -157,6 +155,14 @@ module.exports = class KeyringController extends EventEmitter {
}
}
+ placeSeedWords () {
+ const firstKeyring = this.keyrings[0]
+ const seedWords = firstKeyring.serialize().mnemonic
+ this.configManager.setSeedWords(seedWords)
+ }
+
+
+
submitPassword(password, cb) {
this.loadKey(password)
.then((key) => {
diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js
index 6dffefe98..a165a2e2a 100644
--- a/app/scripts/metamask-controller.js
+++ b/app/scripts/metamask-controller.js
@@ -59,6 +59,7 @@ module.exports = class MetamaskController {
setGasMultiplier: this.setGasMultiplier.bind(this),
// forward directly to keyringController
+ placeSeedWords: keyringController.placeSeedWords.bind(keyringController),
createNewVaultAndKeychain: keyringController.createNewVaultAndKeychain.bind(keyringController),
createNewVaultAndRestore: keyringController.createNewVaultAndRestore.bind(keyringController),
clearSeedWordCache: keyringController.clearSeedWordCache.bind(keyringController),
diff --git a/ui/app/actions.js b/ui/app/actions.js
index 8218e05ef..070ba2da0 100644
--- a/ui/app/actions.js
+++ b/ui/app/actions.js
@@ -30,6 +30,10 @@ var actions = {
addNewAccount,
showNewVaultSeed: showNewVaultSeed,
showInfoPage: showInfoPage,
+ // seed recovery actions
+ REVEAL_SEED_CONFIRMATION: 'REVEAL_SEED_CONFIRMATION',
+ revealSeedConfirmation: revealSeedConfirmation,
+ requestRevealSeed: requestRevealSeed,
// unlock screen
UNLOCK_IN_PROGRESS: 'UNLOCK_IN_PROGRESS',
UNLOCK_FAILED: 'UNLOCK_FAILED',
@@ -213,6 +217,25 @@ function createNewVaultAndKeychain (password, entropy) {
}
}
+function revealSeedConfirmation () {
+ return {
+ type: this.REVEAL_SEED_CONFIRMATION,
+ }
+}
+
+function requestRevealSeed (password) {
+ return (dispatch) => {
+ dispatch(actions.showLoadingIndication())
+ background.submitPassword(password, (err, newState) => {
+ dispatch(actions.hideLoadingIndication())
+ if (err) return dispatch(actions.displayWarning(err.message))
+ background.placeSeedWords()
+ dispatch(actions.showNewVaultSeed())
+ })
+ }
+}
+
+
function addNewKeyring (type, opts) {
return (dispatch) => {
dispatch(actions.showLoadingIndication())
diff --git a/ui/app/app.js b/ui/app/app.js
index 4b1818b93..a2532c153 100644
--- a/ui/app/app.js
+++ b/ui/app/app.js
@@ -28,6 +28,7 @@ const BuyView = require('./components/buy-button-subview')
const QrView = require('./components/qr-code')
const HDCreateVaultComplete = require('./keychains/hd/create-vault-complete')
const HDRestoreVaultScreen = require('./keychains/hd/restore-vault')
+const RevealSeedConfirmation = require('./keychains/hd/recover-seed/confirmation')
module.exports = connect(mapStateToProps)(App)
@@ -411,6 +412,9 @@ App.prototype.renderPrimary = function () {
case 'config':
return h(ConfigScreen, {key: 'config'})
+ case 'reveal-seed-conf':
+ return h(RevealSeedConfirmation, {key: 'reveal-seed-conf'})
+
case 'info':
return h(InfoScreen, {key: 'info'})
diff --git a/ui/app/config.js b/ui/app/config.js
index d4730e558..e09a38cd8 100644
--- a/ui/app/config.js
+++ b/ui/app/config.js
@@ -77,6 +77,22 @@ ConfigScreen.prototype.render = function () {
currentConversionInformation(metamaskState, state),
h('hr.horizontal-line'),
+ h('div', {
+ style: {
+ marginTop: '20px',
+ },
+ }, [
+ h('button', {
+ style: {
+ alignSelf: 'center',
+ },
+ onClick (event) {
+ event.preventDefault()
+ state.dispatch(actions.revealSeedConfirmation())
+ },
+ }, 'Reveal Seed Words'),
+ ]),
+
]),
]),
])