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