Fetch group contacts before fetching new messages

Messages must wait for sender info to arrive before rendering.

// FREEBIE
pull/749/head
lilia 10 years ago
parent edbf2371bf
commit 1a30d003f5

@ -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() {

@ -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();
}

Loading…
Cancel
Save