diff --git a/public/views/backup.html b/public/views/backup.html index e31ba08bf..b1b2572f1 100644 --- a/public/views/backup.html +++ b/public/views/backup.html @@ -75,9 +75,7 @@
- - {{word}} - + {{word}} 
@@ -89,10 +87,6 @@
- - - -
diff --git a/public/views/preferences.html b/public/views/preferences.html index 5fd408ad8..bc49d2ff3 100644 --- a/public/views/preferences.html +++ b/public/views/preferences.html @@ -55,12 +55,6 @@ Backup -

 

-
  • - - Export -
  • -
  • Advanced diff --git a/src/js/controllers/backup.js b/src/js/controllers/backup.js index adb576f71..eef4c5057 100644 --- a/src/js/controllers/backup.js +++ b/src/js/controllers/backup.js @@ -27,7 +27,7 @@ angular.module('copayApp.controllers').controller('wordsController', var words = fc.getMnemonic(); if (words) - this.mnemonicWords = words.split(' '); + this.mnemonicWords = words.split(/[\u3000\s]+/); this.mnemonicHasPassphrase = fc.mnemonicHasPassphrase(); }); diff --git a/src/js/controllers/import.js b/src/js/controllers/import.js index 7d95c1d60..b073d93e8 100644 --- a/src/js/controllers/import.js +++ b/src/js/controllers/import.js @@ -159,18 +159,14 @@ angular.module('copayApp.controllers').controller('importController', if (!words) { this.error = gettext('Please enter the seed words'); - } else if (words.indexOf(' ') == -1 && words.indexOf('prv') == 1 && words.length > 108) { + } else if (words.indexOf('xprv') == 0 || words.indexOf('tprv') == 0) { return _importExtendedPrivateKey(words) } else { - var wordList = words.split(/ /).filter(function(v) { - return v.length > 0; - }); + var wordList = words.split(/[\u3000\s]+/); // m/ allows to enter a custom derivation if ((wordList.length % 3) != 0 && wordList[0].indexOf('m/') != 0) this.error = gettext('Wrong number of seed words:') + wordList.length; - else - words = wordList.join(' '); } if (this.error) { diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js index 5e2ab7df7..7471601b6 100644 --- a/src/js/services/profileService.js +++ b/src/js/services/profileService.js @@ -170,15 +170,9 @@ angular.module('copayApp.services') var walletClient = bwcService.getClient(); var network = opts.networkName || 'livenet'; - if (opts.mnemonic && opts.mnemonic.indexOf('m/') == 0) { - var xPrivKey = root._preDerivation(opts.mnemonic, network); - if (!xPrivKey) - return bwsError.cb('Bad derivation', gettext('Could not import'), cb); - opts.mnemonic = null; - opts.extendedPrivateKey = xPrivKey; - } if (opts.mnemonic) { try { + opts.mnemonic = root._normalizeMnemonic(opts.mnemonic); walletClient.seedFromMnemonic(opts.mnemonic, opts.passphrase, network); } catch (ex) { $log.info(ex); @@ -327,10 +321,11 @@ angular.module('copayApp.services') var walletId = walletClient.credentials.walletId; // check if exist - if (lodash.find(root.profile.credentials, { + var w = lodash.find(root.profile.credentials, { 'walletId': walletId - })) { - return cb(gettext('Wallet already exists')); + }); + if (w) { + return cb(gettext('Wallet already in Copay' + ": ") + w.walletName ); } root.profile.credentials.push(JSON.parse(walletClient.export())); @@ -371,31 +366,19 @@ angular.module('copayApp.services') }; - root._preDerivation = function(words, network) { - var wordList = words.split(/ /).filter(function(v) { - return v.length > 0; - }); - var path = wordList.shift(); - var walletClient = bwcService.getClient(); - $log.info('preDerivation:', path); - walletClient.seedFromMnemonic(wordList.join(' '), null, network); - var k = new bitcore.HDPrivateKey(walletClient.credentials.xPrivKey); - var k2 = k.derive(path); - return k2.toString(); + root._normalizeMnemonic = function(words) { + var isJA = words.indexOf('\u3000') > -1; + var wordList = words.split(/[\u3000\s]+/); + + return wordList.join(isJA ? '\u3000' : ' '); }; root.importMnemonic = function(words, opts, cb) { var walletClient = bwcService.getClient(); - if (words.indexOf('m/') == 0) { - var xPrivKey = root._preDerivation(words, opts.networkName); - if (!xPrivKey) - return bwsError.cb('Bad derivation', gettext('Could not import'), cb); - return root.importExtendedPrivateKey(xPrivKey, cb); - } - $log.debug('Importing Wallet Mnemonic'); + words = root._normalizeMnemonic(words); walletClient.importFromMnemonic(words, { network: opts.networkName, passphrase: opts.passphrase,