1
0
mirror of https://github.com/moparisthebest/mail synced 2024-11-22 08:52:15 -05:00
This commit is contained in:
Tankred Hase 2014-12-18 16:50:11 +01:00
parent 6a8c24d813
commit b01aa6716c
2 changed files with 21 additions and 31 deletions

View File

@ -95,7 +95,7 @@ var ReadCtrl = function($scope, $location, $q, email, invitation, outbox, pgp, k
return keychain.getReceiverPublicKey(user.address); return keychain.getReceiverPublicKey(user.address);
}).then(function(pubkey) { }).then(function(pubkey) {
if (pubkey.publicKey) { if (pubkey && pubkey.publicKey) {
user.secure = true; user.secure = true;
} else { } else {
user.secure = false; user.secure = false;

View File

@ -64,40 +64,30 @@ Keychain.prototype.verifyPublicKey = function(uuid) {
* @return [PublicKeyCollection] The requiested public keys * @return [PublicKeyCollection] The requiested public keys
*/ */
Keychain.prototype.getPublicKeys = function(ids) { Keychain.prototype.getPublicKeys = function(ids) {
var self = this; var self = this,
return new Promise(function(resolve, reject) { jobs = [],
var after, already, pubkeys = []; pubkeys = [];
// return empty array if key ids are emtpy ids.forEach(function(i) {
if (ids.length < 1) { // lookup locally and in storage
resolve(pubkeys); var promise = self.lookupPublicKey(i._id).then(function(pubkey) {
return; if (!pubkey) {
} throw new Error('Error looking up public key!');
}
after = _.after(ids.length, function() { // check if public key with that id has already been fetched
resolve(pubkeys); var already = _.findWhere(pubkeys, {
_id: i._id
});
if (!already) {
pubkeys.push(pubkey);
}
}); });
jobs.push(promise);
});
_.each(ids, function(i) { return Promise.all(jobs).then(function() {
// lookup locally and in storage return pubkeys;
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);
});
}); });
}; };