aboutsummaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorDan <danjm.com@gmail.com>2018-05-31 03:13:45 +0800
committerDan <danjm.com@gmail.com>2018-05-31 03:30:50 +0800
commit1c3d2aa18b85ddb83734d6afdbb1111ba0791229 (patch)
tree30898c8b69393476196bcf194a31d99994bc8190 /ui
parent389346913bf076fde6190a61afc4e3e4cd210afc (diff)
downloadtangerine-wallet-browser-1c3d2aa18b85ddb83734d6afdbb1111ba0791229.tar.gz
tangerine-wallet-browser-1c3d2aa18b85ddb83734d6afdbb1111ba0791229.tar.zst
tangerine-wallet-browser-1c3d2aa18b85ddb83734d6afdbb1111ba0791229.zip
Importing account by json and private key shows error and does not change account if no selectedAddress comes after import.
Diffstat (limited to 'ui')
-rw-r--r--ui/app/actions.js10
-rw-r--r--ui/app/app.js7
-rw-r--r--ui/app/components/pages/create-account/import-account/json.js23
-rw-r--r--ui/app/components/pages/create-account/import-account/private-key.js22
4 files changed, 46 insertions, 16 deletions
diff --git a/ui/app/actions.js b/ui/app/actions.js
index 649f740e9..ed3c147b8 100644
--- a/ui/app/actions.js
+++ b/ui/app/actions.js
@@ -544,10 +544,12 @@ function importNewAccount (strategy, args) {
}
dispatch(actions.hideLoadingIndication())
dispatch(actions.updateMetamaskState(newState))
- dispatch({
- type: actions.SHOW_ACCOUNT_DETAIL,
- value: newState.selectedAddress,
- })
+ if (newState.selectedAddress) {
+ dispatch({
+ type: actions.SHOW_ACCOUNT_DETAIL,
+ value: newState.selectedAddress,
+ })
+ }
return newState
}
}
diff --git a/ui/app/app.js b/ui/app/app.js
index 0e8b907df..7005adb7f 100644
--- a/ui/app/app.js
+++ b/ui/app/app.js
@@ -99,7 +99,7 @@ class App extends Component {
} = this.props
const isLoadingNetwork = network === 'loading' && currentView.name !== 'config'
const loadMessage = loadingMessage || isLoadingNetwork ?
- this.getConnectingLabel() : null
+ this.getConnectingLabel(loadingMessage) : null
log.debug('Main ui render function')
return (
@@ -210,7 +210,10 @@ class App extends Component {
}
}
- getConnectingLabel = function () {
+ getConnectingLabel = function (loadingMessage) {
+ if (loadingMessage) {
+ return loadingMessage
+ }
const { provider } = this.props
const providerName = provider.type
diff --git a/ui/app/components/pages/create-account/import-account/json.js b/ui/app/components/pages/create-account/import-account/json.js
index 0a3314b2a..3dabad68e 100644
--- a/ui/app/components/pages/create-account/import-account/json.js
+++ b/ui/app/components/pages/create-account/import-account/json.js
@@ -82,18 +82,19 @@ class JsonImportSubview extends Component {
}
createNewKeychain () {
+ const { firstAddress, displayWarning, importNewJsonAccount, setSelectedAddress } = this.props
const state = this.state
if (!state) {
const message = this.context.t('validFileImport')
- return this.props.displayWarning(message)
+ return displayWarning(message)
}
const { fileContents } = state
if (!fileContents) {
const message = this.context.t('needImportFile')
- return this.props.displayWarning(message)
+ return displayWarning(message)
}
const passwordInput = document.getElementById('json-password-box')
@@ -101,12 +102,20 @@ class JsonImportSubview extends Component {
if (!password) {
const message = this.context.t('needImportPassword')
- return this.props.displayWarning(message)
+ return displayWarning(message)
}
- this.props.importNewJsonAccount([ fileContents, password ])
- // JS runtime requires caught rejections but failures are handled by Redux
+ importNewJsonAccount([ fileContents, password ])
+ // JS runtime requires caught rejections but failures are handled by Redux
.catch()
+ .then(({ selectedAddress }) => {
+ if (selectedAddress) {
+ history.push(DEFAULT_ROUTE)
+ } else {
+ displayWarning('Error importing account.')
+ setSelectedAddress(firstAddress)
+ }
+ })
}
}
@@ -114,14 +123,17 @@ JsonImportSubview.propTypes = {
error: PropTypes.string,
goHome: PropTypes.func,
displayWarning: PropTypes.func,
+ firstAddress: PropTypes.string,
importNewJsonAccount: PropTypes.func,
history: PropTypes.object,
+ setSelectedAddress: PropTypes.func,
t: PropTypes.func,
}
const mapStateToProps = state => {
return {
error: state.appState.warning,
+ firstAddress: Object.keys(state.metamask.accounts)[0],
}
}
@@ -130,6 +142,7 @@ const mapDispatchToProps = dispatch => {
goHome: () => dispatch(actions.goHome()),
displayWarning: warning => dispatch(actions.displayWarning(warning)),
importNewJsonAccount: options => dispatch(actions.importNewAccount('JSON File', options)),
+ setSelectedAddress: (address) => dispatch(actions.setSelectedAddress(address)),
}
}
diff --git a/ui/app/components/pages/create-account/import-account/private-key.js b/ui/app/components/pages/create-account/import-account/private-key.js
index df7ac910a..e71e47647 100644
--- a/ui/app/components/pages/create-account/import-account/private-key.js
+++ b/ui/app/components/pages/create-account/import-account/private-key.js
@@ -21,6 +21,7 @@ module.exports = compose(
function mapStateToProps (state) {
return {
error: state.appState.warning,
+ firstAddress: Object.keys(state.metamask.accounts)[0],
}
}
@@ -29,7 +30,8 @@ function mapDispatchToProps (dispatch) {
importNewAccount: (strategy, [ privateKey ]) => {
return dispatch(actions.importNewAccount(strategy, [ privateKey ]))
},
- displayWarning: () => dispatch(actions.displayWarning(null)),
+ displayWarning: (message) => dispatch(actions.displayWarning(message || null)),
+ setSelectedAddress: (address) => dispatch(actions.setSelectedAddress(address)),
}
}
@@ -40,7 +42,7 @@ function PrivateKeyImportView () {
}
PrivateKeyImportView.prototype.render = function () {
- const { error } = this.props
+ const { error, displayWarning } = this.props
return (
h('div.new-account-import-form__private-key', [
@@ -60,7 +62,10 @@ PrivateKeyImportView.prototype.render = function () {
h('div.new-account-import-form__buttons', {}, [
h('button.btn-secondary--lg.new-account-create-form__button', {
- onClick: () => this.props.history.push(DEFAULT_ROUTE),
+ onClick: () => {
+ displayWarning(null)
+ this.props.history.push(DEFAULT_ROUTE)
+ },
}, [
this.context.t('cancel'),
]),
@@ -88,10 +93,17 @@ PrivateKeyImportView.prototype.createKeyringOnEnter = function (event) {
PrivateKeyImportView.prototype.createNewKeychain = function () {
const input = document.getElementById('private-key-box')
const privateKey = input.value
- const { importNewAccount, history } = this.props
+ const { importNewAccount, history, displayWarning, setSelectedAddress, firstAddress } = this.props
importNewAccount('Private Key', [ privateKey ])
// JS runtime requires caught rejections but failures are handled by Redux
.catch()
- .then(() => history.push(DEFAULT_ROUTE))
+ .then(({ selectedAddress }) => {
+ if (selectedAddress) {
+ history.push(DEFAULT_ROUTE)
+ } else {
+ displayWarning('Error importing account.')
+ setSelectedAddress(firstAddress)
+ }
+ })
}