diff --git a/UI/WebServerResources/js/Contacts/AddressBook.service.js b/UI/WebServerResources/js/Contacts/AddressBook.service.js index e194164d8..dddf058fd 100644 --- a/UI/WebServerResources/js/Contacts/AddressBook.service.js +++ b/UI/WebServerResources/js/Contacts/AddressBook.service.js @@ -850,8 +850,10 @@ * @param {promise} futureHeadersData - a promise of the metadata of some cards */ AddressBook.prototype.$unwrapHeaders = function(futureHeadersData) { - var _this = this; + var _this = this, + deferred = AddressBook.$q.defer(); + this.$futureHeadersData = deferred.promise; futureHeadersData.then(function(data) { AddressBook.$timeout(function() { var headers, j; @@ -867,8 +869,13 @@ } }); } + deferred.resolve(_this.$cards); }); + }, function() { + deferred.reject(); }); + + return this.$futureHeadersData; }; /** diff --git a/UI/WebServerResources/js/Contacts/AddressBookController.js b/UI/WebServerResources/js/Contacts/AddressBookController.js index 3da2eb0ec..5b571ba17 100644 --- a/UI/WebServerResources/js/Contacts/AddressBookController.js +++ b/UI/WebServerResources/js/Contacts/AddressBookController.js @@ -380,6 +380,7 @@ }; this.newMessageWithSelectedCards = function($event, recipientsField) { + var selectedFolder = this.selectedFolder; var selectedCards = _.filter(this.selectedFolder.$cards, function(card) { return card.selected; }); var promises = [], recipients = []; @@ -401,8 +402,20 @@ })); } } - else if (card.c_mail.length) { - recipients.push(card.$shortFormat()); + else if (card.$loaded == Card.STATUS.LOADED) { + if (card.c_mail) { + recipients.push(card.$shortFormat()); + } + } + else if (selectedFolder.$loadCard(card)) { + promises.push(selectedFolder.$futureHeadersData.then(function() { + var i = selectedFolder.idsMap[card.id]; + if (angular.isDefined(i)) { + var loadedCard = selectedFolder.$cards[i]; + if (loadedCard.c_mail) + recipients.push(loadedCard.$shortFormat()); + } + })); } });