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,21 +174,28 @@
},
fetchContacts: function(options) {
if (this.isPrivate()) {
this.contactCollection.reset([this]);
} else {
var members = this.get('members') || [];
this.contactCollection.reset(
members.map(function(number) {
var c = ConversationController.create({
id : number,
type : 'private'
});
c.fetch();
return c;
}.bind(this))
);
}
return new Promise(function(resolve) {
if (this.isPrivate()) {
this.contactCollection.reset([this]);
resolve();
} else {
var promises = [];
var members = this.get('members') || [];
this.contactCollection.reset(
members.map(function(number) {
var c = ConversationController.create({
id : number,
type : 'private'
});
promises.push(new Promise(function(resolve) {
c.fetch().always(resolve);
}));
return c;
}.bind(this))
);
resolve(Promise.all(promises));
}
}.bind(this));
},
reload: function() {

View file

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