diff --git a/assets/mainWindow/js/loading.js b/assets/mainWindow/js/loading.js index e79c21e0f..55b9ed92a 100644 --- a/assets/mainWindow/js/loading.js +++ b/assets/mainWindow/js/loading.js @@ -299,15 +299,5 @@ function init() { $('#nativeOnlyBtnCarret').hide(); $('.mode-desc.spv').css('left', '200px'); $('.dropdown-menu.lite').css('left', '180px'); - } else { - if (!appConf.experimentalFeatures) { - $('#spvBtn').hide(); - $('#spvBtnCarret').hide(); - $('.dropdown-menu.native').css('right', '165px'); - $('#nativeOnlyBtnCarret').css('margin-right', '0'); - $('#settingsBtn').css('margin', '0'); - $('.mode-desc.spv').hide(); - $('.mode-desc.native').css('left', '180px'); - } } } \ No newline at end of file diff --git a/react/src/actions/actions/electrum.js b/react/src/actions/actions/electrum.js index 4991db5e5..312b4fcbb 100644 --- a/react/src/actions/actions/electrum.js +++ b/react/src/actions/actions/electrum.js @@ -311,4 +311,33 @@ export function shepherdElectrumListunspent(coin, address) { } }); }); +} + +export function shepherdElectrumBip39Keys(seed, match) { + return new Promise((resolve, reject) => { + fetch(`http://127.0.0.1:${Config.agamaPort}/shepherd/electrum/seed/bip39/match`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + seed, + match, + }), + }) + .catch((error) => { + console.log(error); + Store.dispatch( + triggerToaster( + 'shepherdElectrumSetServer', + 'Error', + 'error' + ) + ); + }) + .then(response => response.json()) + .then(json => { + resolve(json); + }); + }); } \ No newline at end of file diff --git a/react/src/components/addcoin/addcoin.js b/react/src/components/addcoin/addcoin.js index 1d42963f2..7610f2f0f 100644 --- a/react/src/components/addcoin/addcoin.js +++ b/react/src/components/addcoin/addcoin.js @@ -181,7 +181,7 @@ class AddCoin extends React.Component { updateSelectedCoin(e, index) { const coin = e.target.value.split('|'); - const defaultMode = Config.iguanaLessMode ? 'native' : coin[1]; + const defaultMode = coin[1]; const modeToValue = { // TODO: move to utils 'spv': 0, 'native': -1, diff --git a/react/src/components/addcoin/addcoinOptionsAC.js b/react/src/components/addcoin/addcoinOptionsAC.js index 5c0864751..bd46a00f9 100644 --- a/react/src/components/addcoin/addcoinOptionsAC.js +++ b/react/src/components/addcoin/addcoinOptionsAC.js @@ -26,7 +26,7 @@ class AddCoinOptionsAC extends React.Component { let _items = []; for (let i = 0; i < _assetChains.length; i++) { - let availableModes = _assetChains[i] !== 'kv' && _assetChains[i] !== 'mgw' ? 'native|spv' : 'native'; + let availableModes = _assetChains[i] !== 'kv' && _assetChains[i] !== 'mgw' ? 'spv|native' : 'native'; if (mainWindow.arch !== 'x64') { availableModes = 'spv'; diff --git a/react/src/components/addcoin/addcoinOptionsCrypto.js b/react/src/components/addcoin/addcoinOptionsCrypto.js index fbfd524cf..fde4efce1 100644 --- a/react/src/components/addcoin/addcoinOptionsCrypto.js +++ b/react/src/components/addcoin/addcoinOptionsCrypto.js @@ -6,27 +6,16 @@ class AddCoinOptionsCrypto extends React.Component { constructor() { super(); this.state = { - isExperimentalOn: false, }; } - componentWillMount() { - const appConfig = mainWindow.appConfig; - - this.setState({ - isExperimentalOn: appConfig.experimentalFeatures, - }); - } - render() { - let availableKMDModes = mainWindow.arch === 'x64' ? 'native|spv' : 'spv'; + let availableKMDModes = mainWindow.arch === 'x64' ? 'spv|native' : 'spv'; return ( - + ); } diff --git a/react/src/components/addcoin/coin-selectors.render.js b/react/src/components/addcoin/coin-selectors.render.js index fbe1ab241..986573d32 100644 --- a/react/src/components/addcoin/coin-selectors.render.js +++ b/react/src/components/addcoin/coin-selectors.render.js @@ -55,7 +55,7 @@ const CoinSelectorsRender = function(item, coin, i) {
-
+
{ + this.setState({ + passphrase: newValue ? newValue.trim() : '', // hardcoded field name + }); + }, 2000); + + this.resizeLoginTextarea(); + + this.setState({ + trimPassphraseTimer: _trimPassphraseTimer, + [e.target.name === 'passphraseTextarea' ? 'passphrase' : e.target.name]: newValue, + }); + } else { + this.setState({ + [e.target.name === 'passphraseTextarea' ? 'passphrase' : e.target.name]: e.target.value, + }); + } + } + + resizeLoginTextarea() { + // auto-size textarea + setTimeout(() => { + if (this.state.seedInputVisibility) { + document.querySelector('#passphraseTextarea').style.height = '1px'; + document.querySelector('#passphraseTextarea').style.height = `${(15 + document.querySelector('#passphraseTextarea').scrollHeight)}px`; + } + }, 100); + } + + _copyCoinAddress(address) { + Store.dispatch(copyCoinAddress(address)); + } + + _getBip39Keys() { + shepherdElectrumBip39Keys(this.state.passphrase, this.state.match) + .then((res) => { + this.setState({ + keys: res.result.priv ? res.result : 'empty', + }); + }); + } + + updateInput(e) { + this.setState({ + [e.target.name]: e.target.value, + }); + } + + render() { + return ( +
+
+
+

+ { translate('SETTINGS.BIP39_DISC') } +

+
{ translate('SETTINGS.BIP39_DESC_P1') }
+
{ translate('SETTINGS.BIP39_DESC_P2') }
+
+
+
+ + + + +
+
+
+ + +
+
+
+ { this.state.keys && +
+ { this.state.keys !== 'empty' && +
+ WIF: { this.state.keys.priv } + +
+ } + { this.state.keys === 'empty' && + Key is not found + } +
+ } +
+
+ ); + }; +} + +export default Bip39KeysPanel; \ No newline at end of file diff --git a/react/src/components/dashboard/settings/settings.render.js b/react/src/components/dashboard/settings/settings.render.js index 0b923594e..f94663930 100644 --- a/react/src/components/dashboard/settings/settings.render.js +++ b/react/src/components/dashboard/settings/settings.render.js @@ -17,6 +17,7 @@ import SPVServersPanel from './settings.spvServersPanel'; import DaemonStdoutPanel from './settings.daemonStdoutPanel'; import NativeWalletDatKeysPanel from './settings.nativeWalletDatKeysPanel'; import CoindClearDataDirPanel from './settings.coindClearDataDirPanel'; +import Bip39KeysPanel from './settings.bip39KeysPanel'; import mainWindow from '../../../util/mainWindow'; // import WalletInfoPanel from './settings.walletInfoPanel'; @@ -118,6 +119,11 @@ export const SettingsRender = function() { } + + + { mainWindow.arch === 'x64' &&