From af6c066c3fb553d53527bb458dae3d52069ee84b Mon Sep 17 00:00:00 2001 From: Ivan Socolsky Date: Tue, 18 Nov 2014 12:12:09 -0300 Subject: [PATCH] fixing import of existing profile --- js/controllers/importProfile.js | 13 +++++++++++-- js/models/Identity.js | 17 ++++++++++++----- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/js/controllers/importProfile.js b/js/controllers/importProfile.js index a9a841a71..c8e34d386 100644 --- a/js/controllers/importProfile.js +++ b/js/controllers/importProfile.js @@ -27,9 +27,18 @@ angular.module('copayApp.controllers').controller('ImportProfileController', walletDefaults: config.wallet, passphraseConfig: config.passphraseConfig, }, function(err, iden) { - if (err && !iden) { + if (err) { + // if (err && !iden) { $scope.loading = false; - $scope.error = (err.toString() || '').match('BADSTR') ? 'Bad password or corrupt profile file' : 'Unknown error'; + + if ((err.toString() || '').match('BADSTR')) { + $scope.error ='Bad password or corrupt profile file'; + } else if ((err.toString() || '').match('EEXISTS')) { + $scope.error = 'Profile already exists'; + } else { + $scope.error = 'Unknown error'; + } + } else { var firstWallet = iden.getLastFocusedWallet(); controllerUtils.bindProfile($scope, iden, firstWallet); diff --git a/js/models/Identity.js b/js/models/Identity.js index b292854d0..891006670 100644 --- a/js/models/Identity.js +++ b/js/models/Identity.js @@ -299,11 +299,12 @@ Identity.prototype.importWalletFromObj = function(obj, opts, cb) { log.debug('Adding wallet to profile:' + w.getName()); self.addWallet(w); self.bindWallet(w); + + var writeOpts = _.extend({ noWallets: true }, opts); + self.storeWallet(w, function(err) { if (err) return cb(err); - self.store({ - noWallets: true - }, function(err) { + self.store(writeOpts, function(err) { return cb(err, w); }); }); @@ -327,7 +328,6 @@ Identity.importFromEncryptedFullJson = function(ejson, password, opts, cb) { var crypto = opts.cryptoUtil || cryptoUtil; var str = crypto.decrypt(password, ejson); - if (!str) { // 0.7.3 broken KDF log.debug('Trying legacy encryption...'); @@ -360,8 +360,15 @@ Identity.importFromFullJson = function(str, password, opts, cb) { var iden = new Identity(opts); + opts.failIfExists = true; + json.wallets = json.wallets || {}; + iden.store(opts, function(err) { + console.log('Error importing existing profile',err); + return cb(err, iden); + }); + async.map(json.wallets, function(walletData, callback) { if (!walletData) return callback(); @@ -374,7 +381,7 @@ Identity.importFromFullJson = function(str, password, opts, cb) { }, function(err, results) { if (err) return cb(err); - iden.store(null, function(err) { + iden.store(opts, function(err) { return cb(err, iden); }); });