From b01aa6716c7f2faa6b760187ceca20f07876752d Mon Sep 17 00:00:00 2001 From: Tankred Hase Date: Thu, 18 Dec 2014 16:50:11 +0100 Subject: [PATCH] Review --- src/js/controller/app/read.js | 2 +- src/js/service/keychain.js | 50 ++++++++++++++--------------------- 2 files changed, 21 insertions(+), 31 deletions(-) diff --git a/src/js/controller/app/read.js b/src/js/controller/app/read.js index 5222b8d..f27b3d0 100644 --- a/src/js/controller/app/read.js +++ b/src/js/controller/app/read.js @@ -95,7 +95,7 @@ var ReadCtrl = function($scope, $location, $q, email, invitation, outbox, pgp, k return keychain.getReceiverPublicKey(user.address); }).then(function(pubkey) { - if (pubkey.publicKey) { + if (pubkey && pubkey.publicKey) { user.secure = true; } else { user.secure = false; diff --git a/src/js/service/keychain.js b/src/js/service/keychain.js index 210f978..a77c7a8 100644 --- a/src/js/service/keychain.js +++ b/src/js/service/keychain.js @@ -64,40 +64,30 @@ Keychain.prototype.verifyPublicKey = function(uuid) { * @return [PublicKeyCollection] The requiested public keys */ Keychain.prototype.getPublicKeys = function(ids) { - var self = this; - return new Promise(function(resolve, reject) { - var after, already, pubkeys = []; + var self = this, + jobs = [], + pubkeys = []; - // return empty array if key ids are emtpy - if (ids.length < 1) { - resolve(pubkeys); - return; - } + ids.forEach(function(i) { + // lookup locally and in storage + var promise = self.lookupPublicKey(i._id).then(function(pubkey) { + if (!pubkey) { + throw new Error('Error looking up public key!'); + } - after = _.after(ids.length, function() { - resolve(pubkeys); + // check if public key with that id has already been fetched + var already = _.findWhere(pubkeys, { + _id: i._id + }); + if (!already) { + pubkeys.push(pubkey); + } }); + jobs.push(promise); + }); - _.each(ids, function(i) { - // lookup locally and in storage - self.lookupPublicKey(i._id).then(function(pubkey) { - if (!pubkey) { - reject(new Error('Error looking up public key!')); - return; - } - - // check if public key with that id has already been fetched - already = null; - already = _.findWhere(pubkeys, { - _id: i._id - }); - if (!already) { - pubkeys.push(pubkey); - } - - after(); // asynchronously iterate through objects - }).catch(reject); - }); + return Promise.all(jobs).then(function() { + return pubkeys; }); };