From 1ba67a866fca7542d6d1d67d9dab0d1a4a1328ab Mon Sep 17 00:00:00 2001 From: George Lima Date: Mon, 15 Apr 2019 22:42:53 -0300 Subject: [PATCH] feat(settings): add transparent addresses in export private keys --- app/views/settings.js | 63 ++++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 24 deletions(-) diff --git a/app/views/settings.js b/app/views/settings.js index ca9fe13..79d7bb2 100644 --- a/app/views/settings.js +++ b/app/views/settings.js @@ -203,17 +203,21 @@ type State = { error: string | null, }; +const SHIELDED_ADDRESS_PRIVATE_KEY_PREFIX = 'secret-extended-key'; + +const initialState = { + viewKeys: [], + privateKeys: [], + importedPrivateKeys: '', + isLoading: false, + successExportViewKeys: false, + successExportPrivateKeys: false, + successImportPrivateKeys: false, + error: null, +}; + export class SettingsView extends PureComponent { - state = { - viewKeys: [], - privateKeys: [], - importedPrivateKeys: '', - isLoading: false, - successExportViewKeys: false, - successExportPrivateKeys: false, - successImportPrivateKeys: false, - error: null, - }; + state = initialState; componentDidMount() { const { loadAddresses } = this.props; @@ -221,6 +225,10 @@ export class SettingsView extends PureComponent { loadAddresses(); } + resetState = () => { + this.setState(initialState); + }; + getWalletFolderPath = () => { const { app } = electron.remote; @@ -259,22 +267,24 @@ export class SettingsView extends PureComponent { exportPrivateKeys = () => { const { addresses } = this.props; - const zAddresses = addresses.filter(({ address }) => address.startsWith('z')); - this.setState({ isLoading: true }); Promise.all( - zAddresses.map(async ({ address }) => { - const privateKey = await rpc.z_exportkey(address); + addresses.map(async ({ address }) => { + const privateKey = await (address.startsWith('z') + ? rpc.z_exportkey(address) + : rpc.dumpprivkey(address)); return { zAddress: address, key: privateKey }; }), - ).then((privateKeys) => { - this.setState({ - privateKeys, - successExportPrivateKeys: true, - isLoading: false, - }); - }); + ) + .then((privateKeys) => { + this.setState({ + privateKeys, + successExportPrivateKeys: true, + isLoading: false, + }); + }) + .catch(error => this.setState({ isLoading: false, error: error.message })); }; importPrivateKeys = () => { @@ -289,7 +299,11 @@ export class SettingsView extends PureComponent { this.setState({ isLoading: true, error: null }); - Promise.all(keys.map(key => rpc.z_importkey(key))) + Promise.all( + keys.map(key => (key.startsWith(SHIELDED_ADDRESS_PRIVATE_KEY_PREFIX) + ? rpc.z_importkey(key) + : rpc.importprivkey(key))), + ) .then(() => { this.setState({ successImportPrivateKeys: true, @@ -449,12 +463,13 @@ export class SettingsView extends PureComponent { onConfirm={this.exportPrivateKeys} showButtons={!successExportPrivateKeys} width={550} + onClose={this.resetState} > {() => ( {successExportPrivateKeys ? ( privateKeys.map(({ zAddress, key }, index) => ( - <> +
@@ -467,7 +482,7 @@ export class SettingsView extends PureComponent { /> - +
)) ) : (