From b1e686ee68d351cb9cd5bbaa1f97a97c942d048d Mon Sep 17 00:00:00 2001 From: Ivan Socolsky Date: Mon, 5 Jan 2015 10:58:02 -0300 Subject: [PATCH] save profile on wallet import --- js/models/Identity.js | 50 ++++++++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/js/models/Identity.js b/js/models/Identity.js index 0ade5fa32..9c7c2fa01 100644 --- a/js/models/Identity.js +++ b/js/models/Identity.js @@ -468,26 +468,42 @@ Identity.prototype.close = function() { Identity.prototype.importWalletFromObj = function(obj, opts, cb) { var self = this; preconditions.checkArgument(cb); - var importFunction = opts.importWallet || Wallet.fromUntrustedObj; - var readOpts = { - networkOpts: this.networkOpts, - blockchainOpts: this.blockchainOpts, - skipFields: opts.skipFields, - }; + self.verifyChecksum(function(err, match) { + if (err) return cb(err); + if (!match) return cb('The profile is out of sync. Please re-login to get the latest changes.'); - var w = importFunction(obj, readOpts); - if (!w) return cb(new Error('Could not decrypt')); - log.debug('Wallet decrypted:' + w.getName()); + var importFunction = opts.importWallet || Wallet.fromUntrustedObj; - self._checkVersion(w.version); - log.debug('Updating Indexes for wallet:' + w.getName()); - w.updateIndexes(function(err) { - log.debug('Adding wallet to profile:' + w.getName()); - self.addWallet(w); - self.updateFocusedTimestamp(w.getId()); - self.bindWallet(w); - self.storeWallet(w, cb); + var readOpts = { + networkOpts: self.networkOpts, + blockchainOpts: self.blockchainOpts, + skipFields: opts.skipFields, + }; + + var w = importFunction(obj, readOpts); + if (!w) return cb(new Error('Could not decrypt')); + log.debug('Wallet decrypted:' + w.getName()); + + self._checkVersion(w.version); + log.debug('Updating Indexes for wallet:' + w.getName()); + w.updateIndexes(function(err) { + log.debug('Adding wallet to profile:' + w.getName()); + self.storeWallet(w, function (err) { + if (err) return cb(err); + + self.addWallet(w); + self.updateFocusedTimestamp(w.getId()); + self.bindWallet(w); + + self.backupNeeded = true; + self.store({ + noWallets: true, + }, function(err) { + return cb(err); + }); + }); + }); }); };