Fixes #1021 A top-right menu item now allows `Account Import`. It has a menu (with one item for now) that allows importing a private key string. Errors are displayed, and a success navigates the user to their account list, where the imported account is labeled `LOOSE`.feature/default_network_editable
parent
958cbfbde4
commit
1ff4894b67
@ -0,0 +1,84 @@ |
||||
{ |
||||
"metamask": { |
||||
"isInitialized": true, |
||||
"isUnlocked": true, |
||||
"rpcTarget": "https://rawtestrpc.metamask.io/", |
||||
"identities": { |
||||
"0x58bda1f9d87dc7d2bcc6f7c2513efc9d03fca683": { |
||||
"address": "0x58bda1f9d87dc7d2bcc6f7c2513efc9d03fca683", |
||||
"name": "Account 1" |
||||
}, |
||||
"0x9858e7d8b79fc3e6d989636721584498926da38a": { |
||||
"address": "0x9858e7d8b79fc3e6d989636721584498926da38a", |
||||
"name": "Imported Account" |
||||
} |
||||
}, |
||||
"unconfTxs": {}, |
||||
"currentFiat": "USD", |
||||
"conversionRate": 10.19458075, |
||||
"conversionDate": 1484696373, |
||||
"noActiveNotices": true, |
||||
"network": "3", |
||||
"accounts": { |
||||
"0x58bda1f9d87dc7d2bcc6f7c2513efc9d03fca683": { |
||||
"code": "0x", |
||||
"balance": "0x0", |
||||
"nonce": "0x0", |
||||
"address": "0x58bda1f9d87dc7d2bcc6f7c2513efc9d03fca683" |
||||
}, |
||||
"0x9858e7d8b79fc3e6d989636721584498926da38a": { |
||||
"code": "0x", |
||||
"balance": "0x0", |
||||
"nonce": "0x0", |
||||
"address": "0x9858e7d8b79fc3e6d989636721584498926da38a" |
||||
} |
||||
}, |
||||
"transactions": [], |
||||
"provider": { |
||||
"type": "testnet" |
||||
}, |
||||
"selectedAccount": "0x9858e7d8b79fc3e6d989636721584498926da38a", |
||||
"selectedAccountTxList": [], |
||||
"isDisclaimerConfirmed": true, |
||||
"unconfMsgs": {}, |
||||
"messages": [], |
||||
"shapeShiftTxList": [], |
||||
"keyringTypes": [ |
||||
"Simple Key Pair", |
||||
"HD Key Tree" |
||||
], |
||||
"keyrings": [ |
||||
{ |
||||
"type": "HD Key Tree", |
||||
"accounts": [ |
||||
"58bda1f9d87dc7d2bcc6f7c2513efc9d03fca683" |
||||
] |
||||
}, |
||||
{ |
||||
"type": "Simple Key Pair", |
||||
"accounts": [ |
||||
"0x9858e7d8b79fc3e6d989636721584498926da38a" |
||||
] |
||||
} |
||||
], |
||||
"lostAccounts": [], |
||||
"seedWords": null |
||||
}, |
||||
"appState": { |
||||
"menuOpen": false, |
||||
"currentView": { |
||||
"name": "accounts" |
||||
}, |
||||
"accountDetail": { |
||||
"subview": "transactions", |
||||
"accountExport": "none", |
||||
"privateKey": "" |
||||
}, |
||||
"transForward": true, |
||||
"isLoading": false, |
||||
"warning": null, |
||||
"scrollToBottom": false, |
||||
"forgottenPassword": false |
||||
}, |
||||
"identities": {} |
||||
} |
@ -0,0 +1,92 @@ |
||||
{ |
||||
"metamask": { |
||||
"isInitialized": true, |
||||
"isUnlocked": true, |
||||
"rpcTarget": "https://rawtestrpc.metamask.io/", |
||||
"identities": { |
||||
"0x01208723ba84e15da2e71656544a2963b0c06d40": { |
||||
"address": "0x01208723ba84e15da2e71656544a2963b0c06d40", |
||||
"name": "Account 1" |
||||
} |
||||
}, |
||||
"unconfTxs": {}, |
||||
"currentFiat": "USD", |
||||
"conversionRate": 10.1219126, |
||||
"conversionDate": 1484695442, |
||||
"noActiveNotices": true, |
||||
"network": "3", |
||||
"accounts": { |
||||
"0x01208723ba84e15da2e71656544a2963b0c06d40": { |
||||
"nonce": "0x0", |
||||
"balance": "0x0", |
||||
"code": "0x", |
||||
"address": "0x01208723ba84e15da2e71656544a2963b0c06d40" |
||||
} |
||||
}, |
||||
"transactions": [], |
||||
"provider": { |
||||
"type": "testnet" |
||||
}, |
||||
"selectedAccount": "0x01208723ba84e15da2e71656544a2963b0c06d40", |
||||
"selectedAccountTxList": [], |
||||
"seedWords": false, |
||||
"isDisclaimerConfirmed": true, |
||||
"unconfMsgs": {}, |
||||
"messages": [], |
||||
"shapeShiftTxList": [], |
||||
"keyringTypes": [ |
||||
"Simple Key Pair", |
||||
"HD Key Tree" |
||||
], |
||||
"keyrings": [ |
||||
{ |
||||
"type": "Simple Key Pair", |
||||
"accounts": [] |
||||
}, |
||||
{ |
||||
"type": "Simple Key Pair", |
||||
"accounts": [] |
||||
}, |
||||
{ |
||||
"type": "Simple Key Pair", |
||||
"accounts": [] |
||||
}, |
||||
{ |
||||
"type": "Simple Key Pair", |
||||
"accounts": [] |
||||
}, |
||||
{ |
||||
"type": "Simple Key Pair", |
||||
"accounts": [] |
||||
}, |
||||
{ |
||||
"type": "Simple Key Pair", |
||||
"accounts": [] |
||||
}, |
||||
{ |
||||
"type": "Simple Key Pair", |
||||
"accounts": [] |
||||
}, |
||||
{ |
||||
"type": "HD Key Tree", |
||||
"accounts": [ |
||||
"01208723ba84e15da2e71656544a2963b0c06d40" |
||||
] |
||||
} |
||||
], |
||||
"lostAccounts": [] |
||||
}, |
||||
"appState": { |
||||
"menuOpen": false, |
||||
"currentView": { |
||||
"name": "import-menu" |
||||
}, |
||||
"accountDetail": { |
||||
"subview": "transactions" |
||||
}, |
||||
"transForward": true, |
||||
"isLoading": false, |
||||
"warning": "Invalid hex string" |
||||
}, |
||||
"identities": {} |
||||
} |
@ -0,0 +1,64 @@ |
||||
{ |
||||
"metamask": { |
||||
"isInitialized": true, |
||||
"isUnlocked": true, |
||||
"rpcTarget": "https://rawtestrpc.metamask.io/", |
||||
"identities": { |
||||
"0x01208723ba84e15da2e71656544a2963b0c06d40": { |
||||
"address": "0x01208723ba84e15da2e71656544a2963b0c06d40", |
||||
"name": "Account 1" |
||||
} |
||||
}, |
||||
"unconfTxs": {}, |
||||
"currentFiat": "USD", |
||||
"conversionRate": 10.10788584, |
||||
"conversionDate": 1484694362, |
||||
"noActiveNotices": true, |
||||
"network": "3", |
||||
"accounts": { |
||||
"0x01208723ba84e15da2e71656544a2963b0c06d40": { |
||||
"balance": "0x0", |
||||
"code": "0x", |
||||
"nonce": "0x0", |
||||
"address": "0x01208723ba84e15da2e71656544a2963b0c06d40" |
||||
} |
||||
}, |
||||
"transactions": [], |
||||
"provider": { |
||||
"type": "testnet" |
||||
}, |
||||
"selectedAccount": "0x01208723ba84e15da2e71656544a2963b0c06d40", |
||||
"selectedAccountTxList": [], |
||||
"seedWords": null, |
||||
"isDisclaimerConfirmed": true, |
||||
"unconfMsgs": {}, |
||||
"messages": [], |
||||
"shapeShiftTxList": [], |
||||
"keyringTypes": [ |
||||
"Simple Key Pair", |
||||
"HD Key Tree" |
||||
], |
||||
"keyrings": [ |
||||
{ |
||||
"type": "HD Key Tree", |
||||
"accounts": [ |
||||
"01208723ba84e15da2e71656544a2963b0c06d40" |
||||
] |
||||
} |
||||
], |
||||
"lostAccounts": [] |
||||
}, |
||||
"appState": { |
||||
"menuOpen": false, |
||||
"currentView": { |
||||
"name": "import-menu" |
||||
}, |
||||
"accountDetail": { |
||||
"subview": "transactions" |
||||
}, |
||||
"transForward": true, |
||||
"isLoading": false, |
||||
"warning": null |
||||
}, |
||||
"identities": {} |
||||
} |
@ -0,0 +1,69 @@ |
||||
const inherits = require('util').inherits |
||||
const Component = require('react').Component |
||||
const h = require('react-hyperscript') |
||||
const connect = require('react-redux').connect |
||||
const type = 'Simple Key Pair' |
||||
const actions = require('../../actions') |
||||
|
||||
module.exports = connect(mapStateToProps)(PrivateKeyImportView) |
||||
|
||||
function mapStateToProps (state) { |
||||
return { |
||||
error: state.appState.warning, |
||||
} |
||||
} |
||||
|
||||
inherits(PrivateKeyImportView, Component) |
||||
function PrivateKeyImportView () { |
||||
Component.call(this) |
||||
} |
||||
|
||||
PrivateKeyImportView.prototype.render = function () { |
||||
const { error } = this.props |
||||
|
||||
return ( |
||||
h('div', { |
||||
style: { |
||||
display: 'flex', |
||||
flexDirection: 'column', |
||||
alignItems: 'center', |
||||
padding: '5px 15px 0px 15px', |
||||
}, |
||||
}, [ |
||||
h('span', 'Paste your private key string here'), |
||||
|
||||
h('input.large-input.letter-spacey', { |
||||
type: 'password', |
||||
id: 'private-key-box', |
||||
onKeyPress: this.createKeyringOnEnter.bind(this), |
||||
style: { |
||||
width: 260, |
||||
marginTop: 12, |
||||
}, |
||||
}), |
||||
|
||||
h('button.primary', { |
||||
onClick: this.createNewKeychain.bind(this), |
||||
style: { |
||||
margin: 12, |
||||
}, |
||||
}, 'Import'), |
||||
|
||||
error ? h('span.warning', error) : null, |
||||
]) |
||||
) |
||||
} |
||||
|
||||
PrivateKeyImportView.prototype.createKeyringOnEnter = function (event) { |
||||
if (event.key === 'Enter') { |
||||
event.preventDefault() |
||||
this.createNewKeychain() |
||||
} |
||||
} |
||||
|
||||
PrivateKeyImportView.prototype.createNewKeychain = function () { |
||||
const input = document.getElementById('private-key-box') |
||||
const privateKey = input.value |
||||
this.props.dispatch(actions.addNewKeyring(type, [ privateKey ])) |
||||
} |
||||
|
Loading…
Reference in new issue