Fetch group contacts before fetching new messages

Messages must wait for sender info to arrive before rendering.

// FREEBIE
This commit is contained in:
lilia 2015-09-13 20:59:51 -07:00
parent edbf2371bf
commit 1a30d003f5
2 changed files with 26 additions and 18 deletions

View file

@ -174,9 +174,12 @@
}, },
fetchContacts: function(options) { fetchContacts: function(options) {
return new Promise(function(resolve) {
if (this.isPrivate()) { if (this.isPrivate()) {
this.contactCollection.reset([this]); this.contactCollection.reset([this]);
resolve();
} else { } else {
var promises = [];
var members = this.get('members') || []; var members = this.get('members') || [];
this.contactCollection.reset( this.contactCollection.reset(
members.map(function(number) { members.map(function(number) {
@ -184,11 +187,15 @@
id : number, id : number,
type : 'private' type : 'private'
}); });
c.fetch(); promises.push(new Promise(function(resolve) {
c.fetch().always(resolve);
}));
return c; return c;
}.bind(this)) }.bind(this))
); );
resolve(Promise.all(promises));
} }
}.bind(this));
}, },
reload: function() { reload: function() {

View file

@ -54,7 +54,6 @@
appWindow: this.model.appWindow appWindow: this.model.appWindow
}); });
$el = view.$el; $el = view.$el;
conversation.fetchContacts();
if (conversation.messageCollection.length === 0) { if (conversation.messageCollection.length === 0) {
$el.find('.message-list').addClass('loading'); $el.find('.message-list').addClass('loading');
} }
@ -62,9 +61,11 @@
$el.prependTo(this.el); $el.prependTo(this.el);
$el.find('.message-list').trigger('reset-scroll'); $el.find('.message-list').trigger('reset-scroll');
$el.trigger('force-resize'); $el.trigger('force-resize');
conversation.fetchContacts().then(function() {
conversation.fetchMessages().then(function() { conversation.fetchMessages().then(function() {
$el.find('.message-list').removeClass('loading'); $el.find('.message-list').removeClass('loading');
}); });
});
conversation.markRead(); conversation.markRead();
} }
}); });